<?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>90906</bug_id>
          
          <creation_ts>2012-07-10 13:47:57 -0700</creation_ts>
          <short_desc>Implement ECMAScript Internationalization API</short_desc>
          <delta_ts>2019-03-26 00:56:51 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>146926</dependson>
    
    <dependson>147599</dependson>
    
    <dependson>147601</dependson>
    
    <dependson>147602</dependson>
    
    <dependson>147603</dependson>
    
    <dependson>147604</dependson>
    
    <dependson>147605</dependson>
    
    <dependson>147606</dependson>
    
    <dependson>147607</dependson>
    
    <dependson>147608</dependson>
    
    <dependson>147609</dependson>
    
    <dependson>147610</dependson>
    
    <dependson>147611</dependson>
    
    <dependson>147612</dependson>
    
    <dependson>147613</dependson>
    
    <dependson>147614</dependson>
    
    <dependson>152448</dependson>
    
    <dependson>153679</dependson>
    
    <dependson>156993</dependson>
    
    <dependson>159693</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jungshik Shin">jshin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>allan.jardine</cc>
    
    <cc>andy</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cira</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dak</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dtrebbien</cc>
    
    <cc>dustan.kasten</cc>
    
    <cc>feliziani.emanuele</cc>
    
    <cc>fishd</cc>
    
    <cc>ggaren</cc>
    
    <cc>mail.dennisbecker</cc>
    
    <cc>marcalj</cc>
    
    <cc>mickmon</cc>
    
    <cc>mjs</cc>
    
    <cc>patrick</cc>
    
    <cc>phil</cc>
    
    <cc>ray</cc>
    
    <cc>rniwa</cc>
    
    <cc>srl295</cc>
    
    <cc>tkent</cc>
    
    <cc>turadg</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>666014</commentid>
    <comment_count>0</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2012-07-10 13:47:57 -0700</bug_when>
    <thetext>Ecma TC39 is likely to approve I18N API [1] very soon. 

Chrome (v8) [2] and MSIE have been implementing the spec. Firefox has a plan for the implementation (most likely to be with ICU). 

If this can be added to JavaScriptCore or its &apos;extension&apos; (at least for ports using ICU like Safari ), it&apos;d benefit web app developers across the board. 
Moreover, some of HTML5 elements (e.g. &lt;input type=&quot;date&quot;&gt;) can be reimplemented with this API. Currently, some locale-specific data are embedded in the implementation (e.g. http://trac.webkit.org/browser/trunk/Source/WebCore/Resources/calendarPicker.js?rev=122212 ), which may not be scalable for tens of languages/locales. 


[1] 
http://wiki.ecmascript.org/doku.php?id=globalization:specification_drafts
http://norbertlindenberg.com/2012/06/ecmascript-internationalization-api/index.html

[2] http://code.google.com/p/v8-i18n</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666199</commentid>
    <comment_count>1</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-10 17:35:38 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Moreover, some of HTML5 elements (e.g. &lt;input type=&quot;date&quot;&gt;) can be reimplemented with this API. Currently, some locale-specific data are embedded in the implementation (e.g. http://trac.webkit.org/browser/trunk/Source/WebCore/Resources/calendarPicker.js?rev=122212 ), which may not be scalable for tens of languages/locales. 
&gt; 
&gt; [2] http://code.google.com/p/v8-i18n

I have never used v8-i18n, but does it apply OS&apos;s setting correctly?
A locale data in ICU doesn&apos;t match to the system&apos;s locale data (Bug 84388), and ICU doesn&apos;t reflect user&apos;s customization; e.g. One uses &quot;fr&quot; locale, but he can change the system locale setting so that &apos;.&apos; is used for decimal separators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666486</commentid>
    <comment_count>2</comment_count>
    <who name="Nebojša Ćirić">cira</who>
    <bug_when>2012-07-11 01:05:13 -0700</bug_when>
    <thetext>v8-i18n takes all of the settings from ICU, it doesn&apos;t use OS settings.

It would be possible to implement that functionality using native system calls, but as the spec goes there is nothing in there that requires this feature (it is left to implementation to decide).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691692</commentid>
    <comment_count>3</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2012-08-09 12:37:23 -0700</bug_when>
    <thetext>re: comment !

The date picker etc has to follow the locale specified by &apos;lang/xml:lang&apos;. 

If lang/xml:lang is not specified,  which one to follow, the current UI language of a browser or the OS settings, is debatable. Currently, v8-i18n uses the current UI language.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732833</commentid>
    <comment_count>4</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2012-10-02 11:09:12 -0700</bug_when>
    <thetext>Ecma TC39 (in charge of EcmaScript standard) approved EcmaScript I18N API and referred it to Ecma GA (General Assembly) for the final approval.  Chrome has this implemented under v8Intl namespace and just switched to Intl.* in ToT (will show up next dev channel as Intl.*). Mozilla will have it soon (their implementation will also use ICU). Microsoft has an ActiveX-based add-on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046255</commentid>
    <comment_count>5</comment_count>
    <who name="Steven R. Loomis">srl295</who>
    <bug_when>2014-11-04 16:14:36 -0800</bug_when>
    <thetext>FYI: https://bugs.webkit.org/show_bug.cgi?id=137616 is a dup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046269</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-04 16:29:31 -0800</bug_when>
    <thetext>*** Bug 137616 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046270</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-04 16:30:10 -0800</bug_when>
    <thetext>rdar://problem/15881480</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074928</commentid>
    <comment_count>8</comment_count>
    <who name="Dennis Becker">mail.dennisbecker</who>
    <bug_when>2015-03-06 07:34:26 -0800</bug_when>
    <thetext>When will this be implemented in WebKit / Safari? It is now 2015, it is a standard since December 2012.

On caniuse.com you can see every other major browser vendor supports this API.
There is a huge (~130kb) polyfill Intl.js to fill this gap which is really ugly for an up-to-date browser!

Multi language websites really need such an implementation for localised dates, currencies or numbers.



ECMAScript Internationalization API Specification
http://www.ecma-international.org/ecma-402/1.0/

Can I Use? comparison
internationalization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074939</commentid>
    <comment_count>9</comment_count>
    <who name="Steven R. Loomis">srl295</who>
    <bug_when>2015-03-06 08:30:45 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; When will this be implemented in WebKit / Safari? It is now 2015, it is a
&gt; standard since December 2012.

On by default in node.js as of 0.12 http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083471</commentid>
    <comment_count>10</comment_count>
    <who name="Patrick A">patrick</who>
    <bug_when>2015-04-07 16:21:50 -0700</bug_when>
    <thetext>Dennis, (comment #8)

You said &quot;There is a huge (~130kb) polyfill Intl.js&quot;.

Whose Intl.js is that? Would you have a pointer?

Do you know if it implements collation?

Anyone else,

What about Webkit support? What alternates do you suggest for collating international data on Safari if no support is planed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083475</commentid>
    <comment_count>11</comment_count>
    <who name="Turadg Aleahmad">turadg</who>
    <bug_when>2015-04-07 16:28:23 -0700</bug_when>
    <thetext>Patrick,

The polyfill is available at https://github.com/andyearnshaw/Intl.js/

It&apos;s about to get bigger https://github.com/andyearnshaw/Intl.js/pull/85

This polyfill does not implement Intl.Collator, and I haven&apos;t found any that do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083640</commentid>
    <comment_count>12</comment_count>
    <who name="Nebojša Ćirić">cira</who>
    <bug_when>2015-04-08 09:58:48 -0700</bug_when>
    <thetext>Turadg,

 you probably won&apos;t find a native JS collation implementation. Collation data size (and complexity of the implementation) was the primary reason we started the ECMA 402 standardization process.

 Number and date formatting was just nice to have (other libraries already do that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096731</commentid>
    <comment_count>13</comment_count>
      <attachid>253565</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-05-21 18:07:17 -0700</bug_when>
    <thetext>Created attachment 253565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096733</commentid>
    <comment_count>14</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-05-21 18:13:22 -0700</bug_when>
    <thetext>Does this seem like the right place for the Intl namespace to live? Collator, DateTimeFormat, and NumberFormat will be sibling files as they are created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096939</commentid>
    <comment_count>15</comment_count>
      <attachid>253565</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-22 13:40:15 -0700</bug_when>
    <thetext>Comment on attachment 253565
Patch

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

r- for the CMakeLists.txt. No real complain otherwise.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Started work on implementing the Internationaization APIs by adding the feature flag
&gt; +        (disabled until ready), and adding a global Intl object to serve as the namespace.

It would be good to provide a link to the spec here for reference.

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        * runtime/JSGlobalObject.cpp:

There is one more build file that needs to know about JSGlobalObject.cpp: Source/JavaScriptCore/CMakeLists.txt

CMake is used for GTK, EFL, and some Windows variant.

&gt; Source/WTF/ChangeLog:9
&gt; +        Started work on implementing the Internationaization APIs by adding the feature flag
&gt; +        (disabled until ready), and adding a global Intl object to serve as the namespace.

You don&apos;t need to repeat yourself in each changelog.

Each file has the description for the changes in their particular subpart of the project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097710</commentid>
    <comment_count>16</comment_count>
      <attachid>253799</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-05-27 14:08:01 -0700</bug_when>
    <thetext>Created attachment 253799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097711</commentid>
    <comment_count>17</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-05-27 14:09:25 -0700</bug_when>
    <thetext>I&apos;ve tried adding the missing headers so I can use NumberFormat from ICU, but I get a build error in trying to find UnicodeString. You can see the error in the new patchset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097800</commentid>
    <comment_count>18</comment_count>
      <attachid>253799</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-27 18:39:00 -0700</bug_when>
    <thetext>Comment on attachment 253799
Patch

Generally we need to use the C API to ICU, not the C++ API. I think you’ll have better luck if you take that approach. The code here seems to be trying to use the C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097801</commentid>
    <comment_count>19</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-05-27 18:43:32 -0700</bug_when>
    <thetext>ok. I will try that.

(In reply to comment #18)
&gt; Comment on attachment 253799 [details]
&gt; Patch
&gt; 
&gt; Generally we need to use the C API to ICU, not the C++ API. I think you’ll
&gt; have better luck if you take that approach. The code here seems to be trying
&gt; to use the C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098124</commentid>
    <comment_count>20</comment_count>
      <attachid>253799</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-29 09:23:56 -0700</bug_when>
    <thetext>Comment on attachment 253799
Patch

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

review- because EWS shows this is not complying on iOS or Mac yet; didn’t review in detail

&gt; Source/JavaScriptCore/icu/unicode/bytestream.h:48
&gt; +class U_COMMON_API ByteSink : public UMemory {

Please don’t add ICU headers for ICU’s C++ classes to the project. We cannot create a dependency on ICU’s C++ API; unlike the ICU C API it’s not guaranteed compatible across versions of the ICU framework.

&gt; Source/JavaScriptCore/icu/unicode/uobject.h:101
&gt; +class U_COMMON_API UMemory {

Pl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098312</commentid>
    <comment_count>21</comment_count>
      <attachid>253950</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-05-29 20:32:49 -0700</bug_when>
    <thetext>Created attachment 253950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098313</commentid>
    <comment_count>22</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-05-29 20:35:25 -0700</bug_when>
    <thetext>I&apos;m afraid that I&apos;m too frustrated to keep working on this in my limited free time. I hope my patch is at least a helpful start for someone who knows what they are doing in the webkit source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098362</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-30 16:11:51 -0700</bug_when>
    <thetext>Sure, I agree that this is not a good “first WebKit patch” project. Usually better to start with something smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098490</commentid>
    <comment_count>24</comment_count>
      <attachid>253997</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-06-01 07:04:38 -0700</bug_when>
    <thetext>Created attachment 253997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098491</commentid>
    <comment_count>25</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-06-01 07:08:04 -0700</bug_when>
    <thetext>If I can get help on the basic structure, building out the `intl` namespace and the objects in it, then I can work on getting it to have the right behavior.

Right now, the patch compiles, but crashes immediately. It looks like I&apos;m not allocating the memory for the NumberFormat properly. Can someone please take a look and offer any pointers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098735</commentid>
    <comment_count>26</comment_count>
      <attachid>254051</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-06-01 22:40:29 -0700</bug_when>
    <thetext>Created attachment 254051
Add feature flag and base Intl namespace object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099244</commentid>
    <comment_count>27</comment_count>
      <attachid>254051</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-06-03 13:27:38 -0700</bug_when>
    <thetext>Comment on attachment 254051
Add feature flag and base Intl namespace object

This latest patch compiles, and when the flag is enabled, adds the `intl` object. There are tests (currently skipped, but pass when flag is enabled) to ensure the object matches the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105824</commentid>
    <comment_count>28</comment_count>
      <attachid>254051</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-30 14:51:09 -0700</bug_when>
    <thetext>Comment on attachment 254051
Add feature flag and base Intl namespace object

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

This is a good patch. Let&apos;s land it.

I&apos;ll help Andy move forward with Intl, and I&apos;ll take on myself to remove the code if needed.

&gt; LayoutTests/js/script-tests/intl.js:17
&gt; +// is deletable, inferred from use of &quot;Initial&quot; in spec, consistent with other implementations

Something useful for testing is testing all the properties. You can use Object.getOwnPropertyDescritpor() to get them for any property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105856</commentid>
    <comment_count>29</comment_count>
      <attachid>254051</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-30 15:21:51 -0700</bug_when>
    <thetext>Comment on attachment 254051
Add feature flag and base Intl namespace object

Rejecting attachment 254051 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 254051, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/intl.html
patching file LayoutTests/js/script-tests/intl.js
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebKitLibraries/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebKitLibraries/win/tools/vsprops/FeatureDefines.props
patching file WebKitLibraries/win/tools/vsprops/FeatureDefinesCairo.props

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Benjamin Poulain&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/4582240751190016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105891</commentid>
    <comment_count>30</comment_count>
      <attachid>255874</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-30 16:44:25 -0700</bug_when>
    <thetext>Created attachment 255874
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105923</commentid>
    <comment_count>31</comment_count>
      <attachid>255886</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-06-30 18:03:48 -0700</bug_when>
    <thetext>Created attachment 255886
Add namespace object and feature flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105931</commentid>
    <comment_count>32</comment_count>
      <attachid>255886</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-30 19:02:56 -0700</bug_when>
    <thetext>Comment on attachment 255886
Add namespace object and feature flag

Clearing flags on attachment: 255886

Committed r186161: &lt;http://trac.webkit.org/changeset/186161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105932</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-30 19:03:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105933</commentid>
    <comment_count>34</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-06-30 19:05:14 -0700</bug_when>
    <thetext>The landed patch did not implement the whole API, just got the process started.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105942</commentid>
    <comment_count>35</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-06-30 19:51:05 -0700</bug_when>
    <thetext>This broke tests on the 32-bit JSC bot:
https://build.webkit.org/builders/Apple%20Mavericks%2032-bit%20JSC%20%28BuildAndTest%29/builds/11124/steps/webkit-32bit-jsc-test/logs/stdio

Please fix or it will be rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105943</commentid>
    <comment_count>36</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-06-30 20:18:58 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; This broke tests on the 32-bit JSC bot:
&gt; https://build.webkit.org/builders/Apple%20Mavericks%2032-
&gt; bit%20JSC%20%28BuildAndTest%29/builds/11124/steps/webkit-32bit-jsc-test/logs/
&gt; stdio
&gt; 
&gt; Please fix or it will be rolled out.

The failed tests look like the new tests I added. I put in the TestExpectations to Skip these tests until the flag is enabled by default.

Is there another way I can indicate these tests shouldn&apos;t be run?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105971</commentid>
    <comment_count>37</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-06-30 22:47:20 -0700</bug_when>
    <thetext>The failing tests are under LayoutTests/js/script-tests/, but I don&apos;t know how to disable these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105973</commentid>
    <comment_count>38</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-06-30 23:01:47 -0700</bug_when>
    <thetext>Filip fixed it in http://trac.webkit.org/changeset/186166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110297</commentid>
    <comment_count>39</comment_count>
      <attachid>257013</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-17 19:14:41 -0700</bug_when>
    <thetext>Created attachment 257013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110298</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-17 19:17:10 -0700</bug_when>
    <thetext>Attachment 257013 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 41 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>1445459</commentid>
    <comment_count>41</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-07-26 10:17:57 -0700</bug_when>
    <thetext>All of the dependent bugs are closed, and we report on the status page[1] that Intl is supported. Should we close this bug?

[1] https://webkit.org/status/#specification-internationalization-api</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521234</commentid>
    <comment_count>42</comment_count>
    <who name="Emanuele Feliziani">feliziani.emanuele</who>
    <bug_when>2019-03-26 00:56:51 -0700</bug_when>
    <thetext>(In reply to Andy VanWagoner from comment #41)
&gt; All of the dependent bugs are closed, and we report on the status page[1]
&gt; that Intl is supported. Should we close this bug?
&gt; 
&gt; [1] https://webkit.org/status/#specification-internationalization-api

Intl.NumberFormat().formatToParts() is still not released in Safari (12.1 (14607.1.40.1.4)), though it is in the Tech Preview. This is the related bug: https://bugs.webkit.org/show_bug.cgi?id=185375 which is marked as RESOLVED FIXED, but it hasn&apos;t been released.

Hope this message helps to bump up formatToParts. It looks like it has been forgotten.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253565</attachid>
            <date>2015-05-21 18:07:17 -0700</date>
            <delta_ts>2015-05-27 14:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90906-20150521190711.patch</filename>
            <type>text/plain</type>
            <size>64567</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YzE3YmE4NzY1M2U3YzRjMmIxZjk2MTlmMzJjYzY5ZDA4M2NjOThiLi4yMWY2MGE2M2E5Y2Q1NWRm
YmRhNmIxNjY3NTk3MmVlZWE1NjRiZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFnIGFuZCBlbXB0eSBJbnRs
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dGFydGVkIHdvcmsgb24gaW1wbGVtZW50aW5nIHRoZSBJbnRlcm5hdGlvbmFpemF0aW9uIEFQSXMg
YnkgYWRkaW5nIHRoZSBmZWF0dXJlIGZsYWcKKyAgICAgICAgKGRpc2FibGVkIHVudGlsIHJlYWR5
KSwgYW5kIGFkZGluZyBhIGdsb2JhbCBJbnRsIG9iamVjdCB0byBzZXJ2ZSBhcyB0aGUgbmFtZXNw
YWNlLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5pdCk6CisKIDIwMTUtMDUtMjEgIFBlciBBcm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2su
Y29tPgogCiAgICAgICAgIE1TVkMgaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2hlbiBjb21waWxp
bmcgVGVtcGxhdGVSZWdpc3RyeUtleSBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTA4ZjgyYTAzZjI2OWFlZDU5NTUy
NTU5Mzk0M2VhYWJjOGQyMDRmNC4uOTI3YjQ4Nzc2MGY1ZjQ3ZjJiNTJlNDZlZjliZTFlM2Q5ZWU5
MGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8
dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFn
IGFuZCBlbXB0eSBJbnRsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTdGFydGVkIHdvcmsgb24gaW1wbGVtZW50aW5nIHRoZSBJbnRlcm5hdGlv
bmFpemF0aW9uIEFQSXMgYnkgYWRkaW5nIHRoZSBmZWF0dXJlIGZsYWcKKyAgICAgICAgKGRpc2Fi
bGVkIHVudGlsIHJlYWR5KSwgYW5kIGFkZGluZyBhIGdsb2JhbCBJbnRsIG9iamVjdCB0byBzZXJ2
ZSBhcyB0aGUgbmFtZXNwYWNlLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisK
IDIwMTUtMDUtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIE1vdmUgTWFpblRocmVhZEd0aywgUnVuTG9vcEd0aywgV29ya1F1ZXVlR3RrIHVu
ZGVyIFNvdXJjZS9XVEYvd3RmL2dsaWIvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFhMTExNjZhNzRlM2M3ODYw
ZTU0MzFhZjE1ODZiZDcxMjM1ZmUwZC4uYjQzM2YwMGU2OTZlZDRhYzQwNWMzYTFhZTlmODY5MGMy
ZWQxYTIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA1LTIxICBBbmR5IFZh
bldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgQWRkIEVOQUJM
RV9JTlRMIGZsYWcgYW5kIGVtcHR5IEludGwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0ZWQgd29yayBvbiBpbXBsZW1lbnRpbmcgdGhl
IEludGVybmF0aW9uYWl6YXRpb24gQVBJcyBieSBhZGRpbmcgdGhlIGZlYXR1cmUgZmxhZworICAg
ICAgICAoZGlzYWJsZWQgdW50aWwgcmVhZHkpLCBhbmQgYWRkaW5nIGEgZ2xvYmFsIEludGwgb2Jq
ZWN0IHRvIHNlcnZlIGFzIHRoZSBuYW1lc3BhY2UuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBj
aGFuZ2VzIHlldCB0byBiZSB0ZXN0ZWQuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0wNS0yMSAgSmFrZSBOaWVsc2VuICA8amFjb2Jf
bmllbHNlbkBhcHBsZS5jb20+CiAKICAgICAgICAgcjE4NDcxOCBhbmQgcjE4NDcyNSBjYXVzZWQg
Zm91ciB0ZXN0cyB0byBiZWdpbiBjcmFzaGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGU5OTJhYTFm
MDg2ZmZhNGY0Y2FmMmYyMzhjNzE0ODAzN2IxNDkyZTIuLmM0NjVmZmEyM2FhYzhlMTNlMGE1YmI0
ZTM2YTFmN2YxMGQ0NTkwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisg
ICAgICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFnIGFuZCBlbXB0eSBJbnRsIG9iamVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydGVkIHdvcmsgb24g
aW1wbGVtZW50aW5nIHRoZSBJbnRlcm5hdGlvbmFpemF0aW9uIEFQSXMgYnkgYWRkaW5nIHRoZSBm
ZWF0dXJlIGZsYWcKKyAgICAgICAgKGRpc2FibGVkIHVudGlsIHJlYWR5KSwgYW5kIGFkZGluZyBh
IGdsb2JhbCBJbnRsIG9iamVjdCB0byBzZXJ2ZSBhcyB0aGUgbmFtZXNwYWNlLgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMDUtMjAg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVp
bGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggOGY1NGYxNjU1ZDIxZjg5ZDhlYjk1NjRhZGZkMmQ2YWY4YzBjNmQ0
My4uNjNhYzNjZjRlYjJhMmQ4MDQ4NjkyODdiMDA0ZTYxZjg3YjgyZjFlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTIxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgQWRkIEVOQUJMRV9JTlRMIGZsYWcgYW5kIGVtcHR5
IEludGwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFN0YXJ0ZWQgd29yayBvbiBpbXBsZW1lbnRpbmcgdGhlIEludGVybmF0aW9uYWl6YXRpb24g
QVBJcyBieSBhZGRpbmcgdGhlIGZlYXR1cmUgZmxhZworICAgICAgICAoZGlzYWJsZWQgdW50aWwg
cmVhZHkpLCBhbmQgYWRkaW5nIGEgZ2xvYmFsIEludGwgb2JqZWN0IHRvIHNlcnZlIGFzIHRoZSBu
YW1lc3BhY2UuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzoKKwogMjAxNS0wNS0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZSBkb2Vzbid0IHRyYWNrIGFuZCByZW1vdmUg
aU9TIFNhZmFyaSdzIG9mZmxpbmUgYXBwbGljYXRpb24gY2FjaGUgZW50cmllcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCmluZGV4IGMwMzljMDI3NWI4YTJhMDI0YzAwMGViZjFhZDVmYzliNTliNjdl
M2EuLmRhYTk1YmY2NTQ5ODQyMGVjYWU0OTE5YzQ2Yjk5MmY3YzJkZDYyYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTExMSw2ICsxMTEsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUX21hY29zeF8xMDkwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNv
c3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAorRU5BQkxFX0lO
VEwgPSA7CisKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5B
TF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RL
X1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CiAKQEAgLTIxMyw0ICsyMTUsNCBAQCBF
TkFCTEVfRlRMX0pJVFtzZGs9aXBob25lb3MqXSA9IEVOQUJMRV9GVExfSklUOwogCiBFTkFCTEVf
U0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJ
VEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRI
KSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgp
ICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9G
SUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lN
QUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNU
T1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVO
QUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQo
RU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMp
ICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikg
JChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5B
QkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFC
TEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xF
R0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxF
X0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQo
RU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9N
SFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9D
SykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxF
X1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVN
T1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVf
UlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNI
X1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8p
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxF
X1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAk
KEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVf
VE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVf
VVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChF
TkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFC
TEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFC
TEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJ
T05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJ
VCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQo
RU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFC
TEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMp
ICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5H
KSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVO
QUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5U
QVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFC
TEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRB
VElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQo
RU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxF
X0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQo
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVO
QUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxF
X0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJF
Q0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElN
RVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NP
TlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFC
QVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQo
RU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9T
X1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5B
QkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVT
KSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFC
TEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9M
U19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNF
X0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxF
X05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VT
KSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Qp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFC
TEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5B
QkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVO
QUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxF
X1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMp
ICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0la
SU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykg
JChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVO
QUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUp
ICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9X
RUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVO
QUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJ
TUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChF
TkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5U
QVRJT05fTU9ERSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBj
ZmE4ZDM4Njg5NTc4Y2MzMTU4OGFkYTk2Mjk3YjE2OGY1YjJiNzkwLi5kM2NlNDU1MGQzYTVhZDQy
NDQwMzg3NmZhNTBlYjk3ZTBlZWM3N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKQEAgLTcyNiw2ICs3MjYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJbml0aWFsaXplVGhyZWFkaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uY3BwIiAvPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRpb25zLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBUElWYWx1ZVdyYXBwZXIuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xleGljYWxFbnZpcm9ubWVu
dC5jcHAiIC8+CkBAIC0xNTI4LDYgKzE1MjksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSW50cmluc2ljLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEl0ZXJhdGlvblN0YXR1cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJdGVyYXRvck9wZXJhdGlvbnMuaCIgLz4KQEAgLTE4MjUsNCArMTgyNyw0IEBACiAg
IDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlvbnNcbWFzbS50YXJnZXRzIiAv
PgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCA4ODU5NTEyNDk0MTU1NjJhOWI0MWZkZDlkMDRmOGEyMzA1OTI2NTIz
Li45YmQxMGQ1ZTJjMmQwNTk2NDVmMDZkNDI3MWNlNTJiMGQzMTc2ZDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MjcsNiArNjI3
LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRp
b25zLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVjdC5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTGV4aWNhbEVudmlyb25tZW50LmNwcCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2ODgs
NiArMjY5MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdG9y
T3BlcmF0aW9ucy5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0Lmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTGV4aWNhbEVudmlyb25tZW50LmgiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00NDc5
LDQgKzQ0ODUsNCBAQAogICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4KICAgICA8L01BU00+CiAg
IDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwv
UHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWM5ZDI1ODJkZjYwZTU3
YzU2ZjAwMGJlMDgxYmM3YWJkNzFiNDBhNS4uMmEwMzA5ODE1OWI0OTEwMGExNzQ4YTY0NzBhMjkz
MDc0OGM0NzlmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNjMsNiArMTE2
Myw4IEBACiAJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTcyOTQwQTE5MEYwNTE0
MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovOyB9OwogCQk5RUE1QzdBMTE5MEYwODQyMDA1MDhF
QkUgLyogQnVuZGxlUGF0aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovOyB9
OwogCQk5RUE1QzdBMjE5MEYwODg3MDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUVBNUM3QTAxOTBG
MDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCAqLzsgfTsKKwkJQTEyQkJGRjIx
QjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2Jq
ZWN0LmggKi87IH07CisJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYz
MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsKIAkJQTE3MTJCM0IxMUM3
QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBD
YWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNo
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJC
M0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8q
IFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTM0LDYgKzI5MzYsOCBAQAog
CQk5RTcyOTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhdGgubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZVBhdGguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxp
emVMTFZNTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluaXRp
YWxpemVMTFZNTWFjLmNwcDsgcGF0aCA9IGxsdm0vSW5pdGlhbGl6ZUxMVk1NYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50
bE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkIzQTExQzdC
MjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ0NzAsNiArNDQ3NCw4IEBACiAJCQkJRkU0RDU1QjcxQUU3MTZDQTAwNTJF
NDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oICovLAogCQkJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhD
NCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3BwICovLAogCQkJCTcwMTEzRDRBMUE4REIwOTMwMDM4
NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCAqLywKKwkJCQlBMTJCQkZGMTFCMDQ0QThCMDA2
NjRCNjkgLyogSW50bE9iamVjdC5oICovLAorCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmNwcCAqLywKIAkJCQk5M0FERkNFNjBDQ0JEN0FDMDBEMzBCMDggLyogSlNB
cnJheS5jcHAgKi8sCiAJCQkJOTM4NzcyRTUwMzhCRkUxOTAwODYzNUNFIC8qIEpTQXJyYXkuaCAq
LywKIAkJCQkwRjJCNjZCNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8s
CkBAIC01NzQ2LDYgKzU3NTIsNyBAQAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBD
b3BpZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDMwMTRBM0NFRkMwMDU3
OEU2NSAvKiBDb3BpZWRCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQzlCRDMxNjY0NERG
QjAwODEwRDMzIC8qIENvcGllZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEy
QkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTExMiAvKiBDb3BpZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFRTk4NDExQTg4NjVCNzAwNzU0RTkzIC8qIFNldHVwVmFyYXJn
c0ZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTcxNjIsNiArNzE2OSw3IEBACiAJCQkJNzBFQzBF
QzQxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzBFQzBFQzIxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDI1QTkxNzE0QjBGQTAwMzgyQzBFIC8qIERG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTJCQkZGNDFC
MDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVG
QzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjIzNUJFRDE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFBy
ZXBhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVCMTRFRjkwQUQwMEM3MjUz
MiAvKiBERkdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGY3NTc0YzZhMTdmZjA2ZWRm
N2VjN2NiYWUwODhjZWU5M2YyN2JkNjcuLjA2Mjk3YWI3YjJhODcyYTc5M2E0NjViMmViMGVkNDBk
OWQ0NWJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMzgsNiArMzgsNyBAQAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAog
ICAgIG1hY3JvKEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKKyAgICBtYWNybyhJ
bnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXAogICAgIG1hY3JvKE1hcClcCiAgICAgbWFjcm8oTWFw
SXRlcmF0b3IpXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MjM4MDQ3ZTYzZDY1ZmNhOTFlZjU1Mzc0ODk2MDBiYjM4YTc3ZGJkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZh
bldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bnRsT2JqZWN0LmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxPYmplY3QpOworCit9CisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE9iamVjdDo6c19pbmZvID0geyAiT2Jq
ZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsT2JqZWN0KSB9
OworCitJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA3YmM0Yjg4OGRiYThkNTc1ZjVmOGRj
YzY4OGMyOGExY2Q4MGJlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnRsT2Jq
ZWN0X2gKKyNkZWZpbmUgSW50bE9iamVjdF9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3RvcjsKK2NsYXNzIEludGxDb2xsYXRvclByb3RvdHlwZTsKK2NsYXNzIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZTsKKworY2xhc3MgSW50bE9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3ByaXZhdGU6CisgICAgSW50bE9iamVjdChWTSYsIFN0cnVjdHVyZSopOworCitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBJbnRsT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsT2JqZWN0Pih2bS5oZWFwKSkg
SW50bE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxPYmpl
Y3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDNhZTYyYzVmNGZkNTJhMjQ4NmMyNGJmNDE3NmUyOTJhNGJiZjZmNmUuLjVjMzM3
ZTU1NzAzMTBjMzQ2YzY1NjYyOTRjYjg4NzBmZjQ2Y2Y3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzMyw2ICsxMzMsMTAg
QEAKICNpbmNsdWRlICJXZWFrU2V0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJXZWFrU2V0UHJv
dG90eXBlLmgiCiAKKyNpZiBFTkFCTEUoSU5UTCkKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisj
ZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAjaW5jbHVkZSAi
SlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKQEAgLTQxMyw3
ICs0MTcsMTAgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAKICAgICBtX2V2YWxGdW5j
dGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJv
cGVydHlOYW1lcy0+ZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCwgbV9ldmFsRnVu
Y3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKLSAgICAKKworI2lmIEVOQUJMRShJTlRMKQorICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBJbnRs
T2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5KU09OLCBKU09OT2JqZWN0OjpjcmVhdGUodm0sIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5NYXRoLCBNYXRo
T2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0Zl
YXR1cmVEZWZpbmVzLmgKaW5kZXggMTNhZTBhOTFiZDczYWZjYmU4ZDI3ZThiOTI0NmM3MTI0NjIy
MGE4Zi4uNjBhZDExYjA3Y2ZmOWRhZmJmMjFlOTdmZGQwODA1MWJhNGM1YWY3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
ZWF0dXJlRGVmaW5lcy5oCkBAIC01MzUsNiArNTM1LDEwIEBAIHRoZSBwdWJsaWMgaU9TIFNESy4g
V2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBm
aWxlCiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTIDAKICNl
bmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0lOVEwpCisjZGVmaW5lIEVOQUJMRV9JTlRMIDAK
KyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfSTE4Tl9BUEkpCiAjZGVm
aW5lIEVOQUJMRV9KQVZBU0NSSVBUX0kxOE5fQVBJIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBj
MDM5YzAyNzViOGEyYTAyNGMwMDBlYmYxYWQ1ZmM5YjU5YjY3ZTNhLi5kYWE5NWJmNjU0OTg0MjBl
Y2FlNDkxOWM0NmI5OTJmN2MyZGQ2MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTExLDYgKzExMSw4IEBA
IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwOTAgPSA7CiBFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUOwogCitFTkFCTEVfSU5UTCA9IDsKKwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5U
RVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsK
IApAQCAtMjEzLDQgKzIxNSw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5B
QkxFX0ZUTF9KSVQ7CiAKIEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMgPSBFTkFC
TEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05T
KSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChF
TkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5B
QkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBU
QVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lP
TlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAk
KEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVO
QUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChF
TkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBS
RUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJ
TUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9D
T05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMp
ICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVO
QUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01F
VEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUp
ICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdD
T05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJ
TikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJP
WElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9U
QSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVU
T0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9O
X01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9M
TF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkg
JChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
T1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19U
UkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQo
RU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVX
X01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVO
QUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJM
RV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRF
RF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwor
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
ICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQo
RU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJM
RV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChF
TkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQo
RU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJ
T04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkg
JChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RF
WFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RP
TV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9O
VF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJB
U0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0Up
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9Q
T1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFC
TEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5B
QkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVf
UkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFC
TEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BF
RUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5B
QkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFC
TEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykg
JChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChF
TkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9S
RUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRM
X0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMp
ICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXgg
YzAzOWMwMjc1YjhhMmEwMjRjMDAwZWJmMWFkNWZjOWI1OWI2N2UzYS4uZGFhOTViZjY1NDk4NDIw
ZWNhZTQ5MTljNDZiOTkyZjdjMmRkNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExMSw2ICsx
MTEsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDkwID0gOwog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxF
X1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVDsKIAorRU5BQkxFX0lOVEwgPSA7CisKIEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19X
SVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9F
VkVOVFM7CiAKQEAgLTIxMyw0ICsyMTUsNCBAQCBFTkFCTEVfRlRMX0pJVFtzZGs9aXBob25lb3Mq
XSA9IEVOQUJMRV9GVExfSklUOwogCiBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElD
ID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJTkVT
ID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
KSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9D
QVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJU
SVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5U
QVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhU
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFH
RV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NT
U19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NI
QVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykg
JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExF
UikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQp
ICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkg
JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJV
Q1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFf
VjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykg
JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQ
QURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdF
X0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NF
UlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVU
X1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9N
T05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsp
ICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hf
RVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5B
QkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5L
X1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQ
VCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09S
X1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdB
VE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJ
VF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFC
TEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFV
RVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVT
T0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NT
U19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFN
U19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQo
RU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFC
TEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJ
TykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkg
JChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9T
QVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NS
T0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVO
VCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChF
TkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVS
SU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikg
JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJ
TkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZ
T1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9S
RVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19M
RVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVf
Q1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVO
QUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVO
QUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9H
QU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
RElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9T
X1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAk
KEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElP
KSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NP
VVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkg
JChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFW
SUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAk
KEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9Q
T0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRT
KSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9S
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQo
RU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkp
ICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5B
QkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJU
TEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVS
KSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVf
RUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQp
ICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9f
VFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVE
SUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBM
QVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9X
RUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5B
QkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklU
SE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1Nv
dXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4
IGMwMzljMDI3NWI4YTJhMDI0YzAwMGViZjFhZDVmYzliNTliNjdlM2EuLmRhYTk1YmY2NTQ5ODQy
MGVjYWU0OTE5YzQ2Yjk5MmY3YzJkZDYyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTEsNiArMTExLDgg
QEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTA5MCA9IDsKIEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQ7CiAKK0VOQUJMRV9JTlRMID0gOworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9J
TlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRT
OwogCkBAIC0yMTMsNCArMjE1LDQgQEAgRU5BQkxFX0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBF
TkFCTEVfRlRMX0pJVDsKIAogRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVO
QUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChF
TkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElP
TlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAk
KEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9T
WU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChF
TkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURB
UFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVH
SU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMp
ICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5B
QkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQo
RU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1Ip
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAk
KEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RF
UFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01f
VElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNF
X0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RB
VEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5U
UykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVG
RVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQo
RU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVf
TUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FM
RSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9I
V0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExV
R0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9Q
Uk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FV
T1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9B
VVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJ
T05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NS
T0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJ
KSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NW
R19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChF
TkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJM
RV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NT
X1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJ
RVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQo
RU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElN
SU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5B
QkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJB
VEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7
CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQo
RU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxF
X0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9B
UlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVf
RVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykg
JChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5B
QkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAk
KEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkg
JChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xV
VElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0
KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNf
VEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVf
REFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVf
REVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RP
TTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9G
T05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBB
RCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRB
QkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9V
SSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9Q
T1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVO
QUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhU
X0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChF
TkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFC
TEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRF
Ul9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChF
TkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVT
VF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJM
RV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVO
QUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9T
UEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NS
WVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChF
TkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1F
TlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVO
QUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNL
KSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAk
KEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAk
KEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRU
X1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9G
VExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJ
QykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlCmluZGV4IGVlOWVjYWMwNWJiMDBmODJiNTBmNDIyZDIwMjIwMTMzNjQ1OTBmYjEuLjU2
M2IxNTBmYTU1YWMxYTg4MGQ1MGEzMDljZjVhZTM2YTIxZmU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVh
dHVyZXMuY21ha2UKQEAgLTk3LDYgKzk3LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAiVG9nZ2xl
IG1vbnRoIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9USU1FICJUb2dnbGUgdGltZSB0eXBlIDxpbnB1
dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0lOUFVUX1RZUEVfV0VFSyAiVG9nZ2xlIHdlZWsgdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZB
VEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlRMICJUb2dnbGUgSW50
bCBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
SU9TX0FJUlBMQVkgIlRvZ2dsZSBpT1MgYWlycGxheSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORyAiVG9nZ2xl
IGlPUyB0ZXh0IGF1dG9zaXppbmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0pJVCAiRW5hYmxlIEp1c3RJblRpbWUgamF2YXNjcmlwdCBzdXBw
b3J0IiBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGM1NzRhNDZkYjY3Y2VkODgyYWRhY2FkNTcwYTE2ZTZmMGNmMjUyN2MuLjZm
MTdlMWUwOGFkOTVjNGExN2EwN2VkZTIwZTA0OWU3MjI0OWZkNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0w
NS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAg
ICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFnIGFuZCBlbXB0eSBJbnRsIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydGVkIHdvcmsgb24gaW1w
bGVtZW50aW5nIHRoZSBJbnRlcm5hdGlvbmFpemF0aW9uIEFQSXMgYnkgYWRkaW5nIHRoZSBmZWF0
dXJlIGZsYWcKKyAgICAgICAgKGRpc2FibGVkIHVudGlsIHJlYWR5KSwgYW5kIGFkZGluZyBhIGds
b2JhbCBJbnRsIG9iamVjdCB0byBzZXJ2ZSBhcyB0aGUgbmFtZXNwYWNlLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDE1LTA1LTIxICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gQnVtcCBsaWJz
b3VwIHZlcnNpb24gdG8gMi41MC4wCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KaW5kZXggZmI5NGY5NWQ4MWQzMmIxNGM5OTgxZTgxNTYzNWExZThjNWYwZjZiMy4uZGJmMzVl
NTgwZjExOTE3ZWViZGJiZDRjZTdmNmNhYmM2YTVhMWQ3MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtOTEsNiArOTEsNyBAQCBteSAoCiAgICAgJGlucHV0VHlw
ZU1vbnRoU3VwcG9ydCwKICAgICAkaW5wdXRUeXBlVGltZVN1cHBvcnQsCiAgICAgJGlucHV0VHlw
ZVdlZWtTdXBwb3J0LAorICAgICRpbnRsU3VwcG9ydCwKICAgICAkaml0U3VwcG9ydCwKICAgICAk
bGVnYWN5Tm90aWZpY2F0aW9uc1N1cHBvcnQsCiAgICAgJGxlZ2FjeVZlbmRvclByZWZpeFN1cHBv
cnQsCkBAIC0yODgsNiArMjg5LDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+
ICJpbnB1dC10eXBlLXdlZWsiLCBkZXNjID0+ICJUb2dnbGUgSW5wdXQgVHlwZSBXZWVrIHN1cHBv
cnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9XRUVLIiwgZGVmYXVsdCA9
PiAwLCB2YWx1ZSA9PiBcJGlucHV0VHlwZVdlZWtTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9
PiAiaW50bCIsIGRlc2MgPT4gIlRvZ2dsZSBJbnRsIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfSU5UTCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnRsU3VwcG9ydCB9LAor
CiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1ub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xl
IExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbGVnYWN5Tm90
aWZpY2F0aW9uc1N1cHBvcnQgfSwKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IDU4NWRlZTFjYmE0YmYyMTljMTI4YmFmMmE4ZDlmMjc3NDVjMzkxZTUuLmMyNjFlMmQ0
NmY5NTMzZmEyOTEwZWJmODY5NzMyNmQyZWJiNjJhMjQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdv
bmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEFkZCBFTkFCTEVfSU5U
TCBmbGFnIGFuZCBlbXB0eSBJbnRsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdGFydGVkIHdvcmsgb24gaW1wbGVtZW50aW5nIHRoZSBJbnRl
cm5hdGlvbmFpemF0aW9uIEFQSXMgYnkgYWRkaW5nIHRoZSBmZWF0dXJlIGZsYWcKKyAgICAgICAg
KGRpc2FibGVkIHVudGlsIHJlYWR5KSwgYW5kIGFkZGluZyBhIGdsb2JhbCBJbnRsIG9iamVjdCB0
byBzZXJ2ZSBhcyB0aGUgbmFtZXNwYWNlLgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTA1LTE4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRh
bnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIElnbm9yZSB3YXJuaW5ncyBpbiBz
eXN0ZW0gaGVhZGVycwpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dl
YktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggNjI2MzVkYjdmZjY0YzA4MTU2M2I4OTMxODY2
MGI2OGVkYTNkNTc4Mi4uOTI4MTkyYzE5NWEwNDkyOWFlNjQ4ZmEyYmRhM2M3NzJkMzcxN2MxYSAx
MDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJp
ZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDUtMjEgIEFuZHkgVmFuV2Fnb25l
ciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBBZGQgRU5BQkxFX0lOVEwg
ZmxhZyBhbmQgZW1wdHkgSW50bCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB3b3JrIG9uIGltcGxlbWVudGluZyB0aGUgSW50ZXJu
YXRpb25haXphdGlvbiBBUElzIGJ5IGFkZGluZyB0aGUgZmVhdHVyZSBmbGFnCisgICAgICAgIChk
aXNhYmxlZCB1bnRpbCByZWFkeSksIGFuZCBhZGRpbmcgYSBnbG9iYWwgSW50bCBvYmplY3QgdG8g
c2VydmUgYXMgdGhlIG5hbWVzcGFjZS4KKworICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVE
ZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUtMDUtMDkgIFlvYXYgV2Vpc3MgIDx5b2F2QHlvYXYu
d3M+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBQSUNUVVJFX1NJWkVTIGJ1aWxkIGZsYWcKZGlmZiAt
LWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5w
cm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5w
cm9wcwppbmRleCBhZTc5NDhiZmJjOGQ5YjQ5YWMxMTIwM2EyODJjNWM4MzY4Nzk0NzdkLi4wZGY5
OTA5OGE3Mjc4NTQzMGRmZmUxMDhhNWY2NTFmMTc3ZWJkY2EzIDEwMDY0NAotLS0gYS9XZWJLaXRM
aWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKKysrIGIvV2Vi
S2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBAIC00
OCw2ICs0OCw3IEBACiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIIC8+CiAgICAgPEVOQUJM
RV9JTlBVVF9UWVBFX1RJTUUgLz4KICAgICA8RU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAvPgorICAg
IDxFTkFCTEVfSU5UTD5FTkFCTEVfSU5UTDwvRU5BQkxFX0lOVEw+CiAgICAgPEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz5FTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM8
L0VOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz4KICAgICA8RU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TIC8+CiAgICAgPEVOQUJMRV9MSU5LX1BSRUZFVENIIC8+CkBAIC05Miw3ICs5
Myw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAg
PENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV9DU1Bf
TkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
OyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVfQVRUQUNI
TUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFTX1BST1hZ
KTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9S
VUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJM
RV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChF
TkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NT
X1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hB
UEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19B
TklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJQklM
SVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFHUklEKTsk
KEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKTsk
KEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7JChF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1Ip
OyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
OyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISURERU5f
UEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVO
QUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChF
TkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxF
X0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9O
Uyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5B
QkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFCTEVfTUlDUk9EQVRBKTsk
KEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElPTlMpOyQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1df
RE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NS
SVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQo
RU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQ
SVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZH
X0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxF
TUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVf
VklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9B
VURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxF
X1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQo
RU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV9DU1BfTkVY
VCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTsk
KEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQo
RU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVfQVRUQUNITUVO
VF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFTX1BST1hZKTsk
KEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxF
Uyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9D
U1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFC
TEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1JF
R0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVT
KTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklN
QVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZ
KTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVO
QUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKTskKEVO
QUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7JChFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpOyQo
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQo
RU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISURERU5fUEFH
RV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJM
RV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVU
X1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFC
TEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0lO
VEwpOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lf
Tk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19QUkVS
RU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFCTEVf
TUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNB
VElPTlMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJM
RV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVO
QUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFf
Q09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NU
QVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTsk
KEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7
JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFCTEVf
VEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9WSURF
Tyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpOyQo
RU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1J
TkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVfWEhS
X1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjg0LDYgKzI4NSwxMCBAQAogICAgICAgPFZhbHVl
PiQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk8L1ZhbHVlPgogICAgICAgPEVudmlyb25tZW50VmFy
aWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KICAgICA8L0J1aWxkTWFjcm8+CisgICAg
PEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0lOVEwiPgorICAgICAgPFZhbHVlPiQoRU5BQkxF
X0lOVEwpPC9WYWx1ZT4KKyAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25t
ZW50VmFyaWFibGU+CisgICAgPC9CdWlsZE1hY3JvPgogICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9
IkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyI+CiAgICAgICA8VmFsdWU+JChFTkFC
TEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVu
dFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CmRpZmYgLS1naXQgYS9XZWJLaXRM
aWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcyBiL1dl
YktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3Bz
CmluZGV4IDUwMGM0ZTExNDhkOTIwOGI1MTVkMThiNWQ5MWZiMTgxNGYwYjZlMDQuLjRkZDBiOTUy
YzY0ZmFhY2VkNjNiNTMzZjRhZmZhM2Y0ZDk4ZDk0ZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJh
cmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1dl
YktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3Bz
CkBAIC00OCw2ICs0OCw3IEBACiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIIC8+CiAgICAg
PEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgLz4KICAgICA8RU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAv
PgorICAgIDxFTkFCTEVfSU5UTD5FTkFCTEVfSU5UTDwvRU5BQkxFX0lOVEw+CiAgICAgPEVOQUJM
RV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz5FTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJF
RklYRVM8L0VOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz4KICAgICA8RU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TIC8+CiAgICAgPEVOQUJMRV9MSU5LX1BSRUZFVENIIC8+CkBAIC05
Miw3ICs5Myw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+
CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJM
RV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVf
QVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFT
X1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJ
T05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTsk
KEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9V
VCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFC
TEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9D
U1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNG
T1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9W
SVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFH
UklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
Tik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RS
VUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9I
SURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05U
SCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIp
OyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFCTEVfTUlDUk9E
QVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElPTlMp
OyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9OQVZJ
R0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVOQUJMRV9T
SEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJP
TFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJ
Q1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJM
RV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFC
TEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFCTEVfVEVNUExB
VEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9WSURFTyk7JChF
TkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpOyQoRU5BQkxF
X1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcpOyQo
RU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVfWEhSX1RJTUVP
VVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV9D
U1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVfQVRU
QUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFTX1BS
T1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05B
TF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7
JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVf
Q1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1Nf
U0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNGT1JN
U19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJ
QklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFHUklE
KTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1T
KTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJ
VEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9B
UEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISURE
RU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTsk
KEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxF
X0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5B
QkxFX0lOVEwpOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElO
S19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChF
TkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05P
VElGSUNBVElPTlMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTsk
KEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNI
KTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVf
TUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NP
UEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5E
SU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChF
TkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJM
RV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVE
SUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dF
Ql9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFC
TEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjg0LDYgKzI4NSwxMCBAQAogICAgICAg
PFZhbHVlPiQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk8L1ZhbHVlPgogICAgICAgPEVudmlyb25t
ZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KICAgICA8L0J1aWxkTWFjcm8+
CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0lOVEwiPgorICAgICAgPFZhbHVlPiQo
RU5BQkxFX0lOVEwpPC9WYWx1ZT4KKyAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vu
dmlyb25tZW50VmFyaWFibGU+CisgICAgPC9CdWlsZE1hY3JvPgogICAgIDxCdWlsZE1hY3JvIElu
Y2x1ZGU9IkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyI+CiAgICAgICA8VmFsdWU+
JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpPC9WYWx1ZT4KICAgICAgIDxFbnZp
cm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253799</attachid>
            <date>2015-05-27 14:08:01 -0700</date>
            <delta_ts>2015-05-29 20:32:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90906-20150527150745.patch</filename>
            <type>text/plain</type>
            <size>457198</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjRkY2IxNmJiODdhNTkyOTEzODY4NzdkNzNkMjc3NjE4OTAwYjE0Li4xZWMzYzZjY2FiMTUxMzgw
NjY1Y2IzYTg1MzFlNGNlODdlODczOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgSW50bE9iamVjdCBzb3VyY2UgYW5kIGFkZCB0byBwcm9qZWN0IGZpbGVzLiBBZGQg
bWlzc2luZyBpY3UgaGVhZGVycy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBhZGQgSW50
bE9iamVjdC5jcHAKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogYWRkIEVOQUJMRV9JTlRMCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOiBhZGQgSW50bCBuYW1lCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6
IG5ldworICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6IG5ldworICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOiBhZGQgSW50bCBvYmplY3QKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOiBpbml0IEludGwgb2JqZWN0CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwOiB1c2UgaWN1OjpOdW1iZXJGb3JtYXQKKwogMjAxNS0wNS0y
NyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T046IFRoZXNlIHNvcnRpbmcgaWRpb21zIHVzZWQgYnkgUGVhY2VrZWVwZXIgYW5kIEJyb3dzZXJt
YXJrIGFyZSB+MjBYIHNsb3dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyMWIxYmE1Y2ZlMjg0NGRmZDRkODliZjgyNDQwMjY5
YmIzYTZhMzFhLi5mMTg1M2RhYTIxMjYwNDc1OGFkYmY4ZmFjY2MxNWFkM2RlOTlhNWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE1LTA1LTIxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRp
b25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFnCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmlu
ZXMuaDogYWRkIGZsYWcKKwogMjAxNS0wNS0yNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3RyaW5nVmlldyBzaG91bGQgaGF2ZSBmaW5kKFN0cmluZ1ZpZXcs
IHN0YXJ0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOGI2YjkyMjkyNTE1NmEzZTFmOTEwYWIwYzE3MTdjZDY2
MzMyZWE5Li4wNzA3MzNkYmEyY2UzYjVmMzA1YWM2YmE2NzhjZjc5YTU1ZTE4M2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDUtMjEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRl
cm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEVOQUJMRV9JTlRMIGZsYWcgCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2VzIHlldCB0byBiZSB0ZXN0ZWQuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRkIGZsYWcKKwogMjAxNS0wNS0yNyAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBzaG9ydC1jaXJj
dWl0IE1JTUUgdHlwZSBsb29rdXAgd2hlbiBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGU1
MTM3NWU0MzExN2YwNTY1N2Y1M2Q4Y2M2OTY1N2IwYjIyZWEwNDkuLjA3MjA2ZTk5ZDkyYzZlY2Uz
ZWQxZjRhZDFlZWNmMWE4NDNjNGRhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5B
QkxFX0lOVEwgZmxhZworCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6IGFkZCBmbGFnCisKIDIwMTUtMDUtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjExMDQ1NTE+IFVwZGF0ZSBidWls
ZCBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg0MzA2ZDI0ZGQ0OTc0ZGQ1MTkzYTE0OGE4Y2Y1Yzhm
ZWNjMmI4YjcuLmJiM2ExODAyZjFkZWU1YzQ4YmJmNTllNzhkZTY1YzFhNjhkMTk5NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IElu
dGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgRU5BQkxFX0lOVEwgZmxhZworCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IGFkZCBmbGFnCisKIDIwMTUtMDUtMjcgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIGEg
Zm9sbG93LXVwIHJldmlldyBjb21tZW50IGZyb20gRGFyaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMjAzZjU0MGU4NGY1ODNlN2JmOWNlYTAyMTk1ODIzNjRmOWQ1Mjk3
NS4uMjcyMWI4MDI2MWM1ZWEzNDY5YmUzZmI5MzE3NTAyYjBjZWE2MWVkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDcwLDYgKzQ3MCw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4u
Y3BwCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSXRlcmF0
b3JPcGVyYXRpb25zLmNwcAorICAgIHJ1bnRpbWUvSW50bE9iamVjdC5jcHAKICAgICBydW50aW1l
L0pTQVBJVmFsdWVXcmFwcGVyLmNwcAogICAgIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
Y3BwCiAgICAgcnVudGltZS9KU0FycmF5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4
IDQzZDcwMGVjYzY3N2M4YjYwOWE2YTYzZmIyYzNmN2Y0ZjgyY2IyODMuLjhjMjViNzhhMmIyZTYy
NWNjMTlhODA0NDg5MjAyYTBhOGJiZTQ4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAg
LTExNiw2ICsxMTYsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8x
MDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAg
PSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VDsKIAorRU5BQkxFX0lOVEwgPSA7CisKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlw
aG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NE
S18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJ
VEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CiAKQEAgLTIy
Miw0ICsyMjQsNCBAQCBFTkFCTEVfRlRMX0pJVFtzZGs9aXBob25lb3MqXSA9IEVOQUJMRV9GVExf
SklUOwogCiBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDID0gRU5BQkxFX1NBVFVS
QVRFRF9MQVlPVVRfQVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0Rf
VFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFC
TEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5B
QkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VT
Nl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChF
TkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1Nf
QU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQo
RU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAk
KEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikg
JChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVf
Q1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09S
X1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFT
SEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFf
VFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVf
RU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJ
TFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJP
VFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMp
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5f
V09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQo
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJM
RV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJf
QVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVN
RU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJM
RV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVO
Q1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5B
QkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9F
VkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVU
RSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9R
VUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkg
JChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxF
X1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05W
RVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1Q
TEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VW
RU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdf
V09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NT
U19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VC
X1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkg
JChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VU
X0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJM
RV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FD
SEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BS
T1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExB
VEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9D
U1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JP
WF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NT
U19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9D
U1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVO
QUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxF
X0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVf
QlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9F
TEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VM
RU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNf
Q09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9F
VkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJM
RV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURE
RU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNP
TVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lOVEwp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lf
VkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRf
VVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklD
QVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQo
RU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJM
SUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9J
TlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJF
Ul9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5U
SEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFC
TEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNI
X0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJT
RUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykg
JChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQo
RU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJM
RV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagppbmRleCAzNmNjNzM3MDRhNTgyNzlmZmNiNzE4Y2I5NDk4YjM3OWNkMmI5YTZmLi4w
YzhlYTA0ZmU1OTgwYWRiZDM3YjhhMTM1OGZhOGQ1NjYxMzBhNDBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTcyNyw2ICs3MjcsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbml0aWFsaXplVGhyZWFkaW5nLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24u
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRp
b25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBUElWYWx1
ZVdyYXBwZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAiIC8+CkBAIC0xNTMwLDYgKzE1MzEsNyBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0aW9uLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50cmluc2ljLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdGlvblN0YXR1cy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRvck9wZXJhdGlvbnMuaCIgLz4KQEAgLTE4Mjcs
NCArMTgyOSw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlvbnNc
bWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA5M2ZlNWUyNjkwMzc1NmI5NWE3OThmYTE3
NTViM2QyMzRjMjNjMDU2Li5hYzRhOTdjMTZlMWExM2QzMWQ2Yzk2YjRmYWJhMTNiZWQyOWMzNjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CkBAIC02MjcsNiArNjI3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SXRlcmF0b3JPcGVyYXRpb25zLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50
bE9iamVjdC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTGV4aWNhbEVudmly
b25tZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KQEAgLTI2OTEsNiArMjY5NCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJbnRsT2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTGV4aWNhbEVu
dmlyb25tZW50LmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CkBAIC00NDg1LDQgKzQ0OTEsNCBAQAogICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4K
ICAgICA8L01BU00+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZTQ4ODMzYzVjOTgxZjEwNDdmZjA3ZGU2NjUyODQ5NjJjYTE1OTA5Mi4uNWFlMjg0ODVmYmQ5ZDgy
ZTA1MGIzZjU1NzA3OGQ5ZTc1YzEzNWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNjUsNiArMTE2NSw4IEBACiAJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5k
bGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovOyB9OwogCQk5RUE1QzdB
MTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5k
bGVQYXRoLm1tICovOyB9OwogCQk5RUE1QzdBMjE5MEYwODg3MDA1MDhFQkUgLyogSW5pdGlhbGl6
ZUxMVk1NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCAqLzsg
fTsKKwkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmggKi87IH07CisJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsK
IAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMx
NSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDExMUM3
QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTM4
LDYgKzI5NDAsOCBAQAogCQk5RTcyOTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhdGgubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAv
KiBCdW5kbGVQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZVBh
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVBNUM3QTAxOTBGMDVEMjAwNTA4
RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEluaXRpYWxpemVMTFZNTWFjLmNwcDsgcGF0aCA9IGxsdm0vSW5pdGlhbGl6ZUxM
Vk1NYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTJCQkZGMTFCMDQ0QThC
MDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMkJCRkYzMUIw
NDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludGxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4
cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NzQsNiArNDQ3OCw4IEBACiAJCQkJRkU0RDU1
QjcxQUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oICovLAogCQkJCTcwMTEzRDQ5
MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3BwICovLAogCQkJCTcwMTEz
RDRBMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCAqLywKKwkJCQlBMTJC
QkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovLAorCQkJCUExMkJCRkYzMUIw
NDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKIAkJCQk5M0FERkNFNjBDQ0JEN0FD
MDBEMzBCMDggLyogSlNBcnJheS5jcHAgKi8sCiAJCQkJOTM4NzcyRTUwMzhCRkUxOTAwODYzNUNF
IC8qIEpTQXJyYXkuaCAqLywKIAkJCQkwRjJCNjZCNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJh
eUJ1ZmZlci5jcHAgKi8sCkBAIC01NzUyLDYgKzU3NTgsNyBAQAogCQkJCUMyRUFEMkZDMTRGMDI0
OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhE
MDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzJGQzlCRDMxNjY0NERGQjAwODEwRDMzIC8qIENvcGllZEJsb2NrSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTExMiAvKiBDb3BpZWRTcGFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNw
YWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRTk4NDExQTg4NjVCNzAwNzU0RTkz
IC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTcxNjksNiArNzE3Niw3
IEBACiAJCQkJNzBFQzBFQzQxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQzBFQzIxQUEwRDdEQTAwQjZBQUZBIC8q
IEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDI1QTkxNzE0QjBG
QTAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBMTJCQkZGNDFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFj
ZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFRDE3MTc4RTczMDA2OTBDN0Yg
LyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVC
MTRFRjkwQUQwMEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9ieXRlc3RyZWFtLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvYnl0ZXN0cmVhbS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZi
OWUwN2EyNWRjZDliOTVkOWEzN2EwYjhhNzJiMzVlNjNhMWZmYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvYnl0ZXN0cmVhbS5oCkBAIC0wLDAg
KzEsMjUyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcworLy8gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKy8vCisvLyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorLy8gQXV0aG9yOiBzYW5qYXlAZ29vZ2xlLmNvbSAoU2FuamF5IEdoZW1hd2F0KQorLy8K
Ky8vIEFic3RyYWN0IGludGVyZmFjZSB0aGF0IGNvbnN1bWVzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMg
KEJ5dGVTaW5rKS4KKy8vCisvLyBVc2VkIHNvIHRoYXQgd2UgY2FuIHdyaXRlIGEgc2luZ2xlIHBp
ZWNlIG9mIGNvZGUgdGhhdCBjYW4gb3BlcmF0ZQorLy8gb24gYSB2YXJpZXR5IG9mIG91dHB1dCBz
dHJpbmcgdHlwZXMuCisvLworLy8gVmFyaW91cyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBpbnRl
cmZhY2UgYXJlIHByb3ZpZGVkOgorLy8gICBCeXRlU2luazoKKy8vICAgICAgQ2hlY2tlZEFycmF5
Qnl0ZVNpbmsgICAgV3JpdGUgdG8gYSBmbGF0IGFycmF5LCB3aXRoIGJvdW5kcyBjaGVja2luZwor
Ly8gICAgICBTdHJpbmdCeXRlU2luayAgICAgICAgICBXcml0ZSB0byBhbiBTVEwgc3RyaW5nCisK
Ky8vIFRoaXMgY29kZSBpcyBhIGNvbnRyaWJ1dGlvbiBvZiBHb29nbGUgY29kZSwgYW5kIHRoZSBz
dHlsZSB1c2VkIGhlcmUgaXMKKy8vIGEgY29tcHJvbWlzZSBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBH
b29nbGUgY29kZSBhbmQgdGhlIElDVSBjb2RpbmcgZ3VpZGVsaW5lcy4KKy8vIEZvciBleGFtcGxl
LCBkYXRhIHR5cGVzIGFyZSBJQ1UtaWZpZWQgKHNpemVfdCxpbnQtPmludDMyX3QpLAorLy8gYW5k
IEFQSSBjb21tZW50cyBkb3h5Z2VuLWlmaWVkLCBidXQgZnVuY3Rpb24gbmFtZXMgYW5kIGJlaGF2
aW9yIGFyZQorLy8gYXMgaW4gdGhlIG9yaWdpbmFsLCBpZiBwb3NzaWJsZS4KKy8vIEFzc2VydGlv
bi1zdHlsZSBlcnJvciBoYW5kbGluZywgbm90IGF2YWlsYWJsZSBpbiBJQ1UsIHdhcyBjaGFuZ2Vk
IHRvCisvLyBwYXJhbWV0ZXIgInBpbm5pbmciIHNpbWlsYXIgdG8gVW5pY29kZVN0cmluZy4KKy8v
CisvLyBJbiBhZGRpdGlvbiwgdGhpcyBpcyBvbmx5IGEgcGFydGlhbCBwb3J0IG9mIHRoZSBvcmln
aW5hbCBHb29nbGUgY29kZSwKKy8vIGxpbWl0ZWQgdG8gd2hhdCB3YXMgbmVlZGVkIHNvIGZhci4g
VGhlIChuZWFybHkpIGNvbXBsZXRlIG9yaWdpbmFsIGNvZGUKKy8vIGlzIGluIHRoZSBJQ1Ugc3Zu
IHJlcG9zaXRvcnkgYXQgaWN1aHRtbC90cnVuay9kZXNpZ24vc3RyaW5ncy9jb250cmliCisvLyAo
c2VlIElDVSB0aWNrZXQgNjc2NSwgcjI1NTE3KS4KKworI2lmbmRlZiBfX0JZVEVTVFJFQU1fSF9f
CisjZGVmaW5lIF9fQllURVNUUkVBTV9IX18KKworLyoqCisgKiBcZmlsZQorICogXGJyaWVmIEMr
KyBBUEk6IEludGVyZmFjZSBmb3Igd3JpdGluZyBieXRlcywgYW5kIGltcGxlbWVudGF0aW9uIGNs
YXNzZXMuCisgKi8KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisjaW5jbHVkZSAidW5p
Y29kZS91b2JqZWN0LmgiCisjaW5jbHVkZSAidW5pY29kZS9zdGRfc3RyaW5nLmgiCisKK1VfTkFN
RVNQQUNFX0JFR0lOCisKKy8qKgorICogQSBCeXRlU2luayBjYW4gYmUgZmlsbGVkIHdpdGggYnl0
ZXMuCisgKiBAc3RhYmxlIElDVSA0LjIKKyAqLworY2xhc3MgVV9DT01NT05fQVBJIEJ5dGVTaW5r
IDogcHVibGljIFVNZW1vcnkgeworcHVibGljOgorICAvKioKKyAgICogRGVmYXVsdCBjb25zdHJ1
Y3Rvci4KKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBCeXRlU2luaygpIHsgfQorICAv
KioKKyAgICogVmlydHVhbCBkZXN0cnVjdG9yLgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICov
CisgIHZpcnR1YWwgfkJ5dGVTaW5rKCkgeyB9CisKKyAgLyoqCisgICAqIEFwcGVuZCAiYnl0ZXNb
MCxuLTFdIiB0byB0aGlzLgorICAgKiBAcGFyYW0gYnl0ZXMgdGhlIHBvaW50ZXIgdG8gdGhlIGJ5
dGVzCisgICAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYnl0ZXM7IG11c3QgYmUgbm9uLW5lZ2F0
aXZlCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgdmlydHVhbCB2b2lkIEFwcGVuZChj
b25zdCBjaGFyKiBieXRlcywgaW50MzJfdCBuKSA9IDA7CisKKyAgLyoqCisgICAqIFJldHVybnMg
YSB3cml0YWJsZSBidWZmZXIgZm9yIGFwcGVuZGluZyBhbmQgd3JpdGVzIHRoZSBidWZmZXIncyBj
YXBhY2l0eSB0bworICAgKiAqcmVzdWx0X2NhcGFjaXR5LiBHdWFyYW50ZWVzICpyZXN1bHRfY2Fw
YWNpdHk+PW1pbl9jYXBhY2l0eS4KKyAgICogTWF5IHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNh
bGxlci1vd25lZCBzY3JhdGNoIGJ1ZmZlciB3aGljaCBtdXN0IGhhdmUKKyAgICogc2NyYXRjaF9j
YXBhY2l0eT49bWluX2NhcGFjaXR5LgorICAgKiBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIG9ubHkg
dmFsaWQgdW50aWwgdGhlIG5leHQgb3BlcmF0aW9uCisgICAqIG9uIHRoaXMgQnl0ZVNpbmsuCisg
ICAqCisgICAqIEFmdGVyIHdyaXRpbmcgYXQgbW9zdCAqcmVzdWx0X2NhcGFjaXR5IGJ5dGVzLCBj
YWxsIEFwcGVuZCgpIHdpdGggdGhlCisgICAqIHBvaW50ZXIgcmV0dXJuZWQgZnJvbSB0aGlzIGZ1
bmN0aW9uIGFuZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisgICAqIE1hbnkgQXBwZW5k
KCkgaW1wbGVtZW50YXRpb25zIHdpbGwgYXZvaWQgY29weWluZyBieXRlcyBpZiB0aGlzIGZ1bmN0
aW9uCisgICAqIHJldHVybmVkIGFuIGludGVybmFsIGJ1ZmZlci4KKyAgICoKKyAgICogUGFydGlh
bCB1c2FnZSBleGFtcGxlOgorICAgKiAgaW50MzJfdCBjYXBhY2l0eTsKKyAgICogIGNoYXIqIGJ1
ZmZlciA9IHNpbmstPkdldEFwcGVuZEJ1ZmZlciguLi4sICZjYXBhY2l0eSk7CisgICAqICAuLi4g
V3JpdGUgbiBieXRlcyBpbnRvIGJ1ZmZlciwgd2l0aCBuIDw9IGNhcGFjaXR5LgorICAgKiAgc2lu
ay0+QXBwZW5kKGJ1ZmZlciwgbik7CisgICAqIEluIG1hbnkgaW1wbGVtZW50YXRpb25zLCB0aGF0
IGNhbGwgdG8gQXBwZW5kIHdpbGwgYXZvaWQgY29weWluZyBieXRlcy4KKyAgICoKKyAgICogSWYg
dGhlIEJ5dGVTaW5rIGFsbG9jYXRlcyBvciByZWFsbG9jYXRlcyBhbiBpbnRlcm5hbCBidWZmZXIs
IGl0IHNob3VsZCB1c2UKKyAgICogdGhlIGRlc2lyZWRfY2FwYWNpdHlfaGludCBpZiBhcHByb3By
aWF0ZS4KKyAgICogSWYgYSBjYWxsZXIgY2Fubm90IHByb3ZpZGUgYSByZWFzb25hYmxlIGd1ZXNz
IGF0IHRoZSBkZXNpcmVkIGNhcGFjaXR5LAorICAgKiBpdCBzaG91bGQgcGFzcyBkZXNpcmVkX2Nh
cGFjaXR5X2hpbnQ9MC4KKyAgICoKKyAgICogSWYgYSBub24tc2NyYXRjaCBidWZmZXIgaXMgcmV0
dXJuZWQsIHRoZSBjYWxsZXIgbWF5IG9ubHkgcGFzcworICAgKiBhIHByZWZpeCB0byBpdCB0byBB
cHBlbmQoKS4KKyAgICogVGhhdCBpcywgaXQgaXMgbm90IGNvcnJlY3QgdG8gcGFzcyBhbiBpbnRl
cmlvciBwb2ludGVyIHRvIEFwcGVuZCgpLgorICAgKgorICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbiBhbHdheXMgcmV0dXJucyB0aGUgc2NyYXRjaCBidWZmZXIuCisgICAqCisgICAqIEBw
YXJhbSBtaW5fY2FwYWNpdHkgcmVxdWlyZWQgbWluaW11bSBjYXBhY2l0eSBvZiB0aGUgcmV0dXJu
ZWQgYnVmZmVyOworICAgKiAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgbm9uLW5lZ2F0aXZl
CisgICAqIEBwYXJhbSBkZXNpcmVkX2NhcGFjaXR5X2hpbnQgZGVzaXJlZCBjYXBhY2l0eSBvZiB0
aGUgcmV0dXJuZWQgYnVmZmVyOworICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11
c3QgYmUgbm9uLW5lZ2F0aXZlCisgICAqIEBwYXJhbSBzY3JhdGNoIGRlZmF1bHQgY2FsbGVyLW93
bmVkIGJ1ZmZlcgorICAgKiBAcGFyYW0gc2NyYXRjaF9jYXBhY2l0eSBjYXBhY2l0eSBvZiB0aGUg
c2NyYXRjaCBidWZmZXIKKyAgICogQHBhcmFtIHJlc3VsdF9jYXBhY2l0eSBwb2ludGVyIHRvIGFu
IGludGVnZXIgd2hpY2ggd2lsbCBiZSBzZXQgdG8gdGhlCisgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgY2FwYWNpdHkgb2YgdGhlIHJldHVybmVkIGJ1ZmZlcgorICAgKiBAcmV0dXJuIGEgYnVm
ZmVyIHdpdGggKnJlc3VsdF9jYXBhY2l0eT49bWluX2NhcGFjaXR5CisgICAqIEBzdGFibGUgSUNV
IDQuMgorICAgKi8KKyAgdmlydHVhbCBjaGFyKiBHZXRBcHBlbmRCdWZmZXIoaW50MzJfdCBtaW5f
Y2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGVzaXJl
ZF9jYXBhY2l0eV9oaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBz
Y3JhdGNoLCBpbnQzMl90IHNjcmF0Y2hfY2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QqIHJlc3VsdF9jYXBhY2l0eSk7CisKKyAgLyoqCisgICAqIEZsdXNo
IGludGVybmFsIGJ1ZmZlcnMuCisgICAqIFNvbWUgYnl0ZSBzaW5rcyB1c2UgaW50ZXJuYWwgYnVm
ZmVycyBvciBwcm92aWRlIGJ1ZmZlcmluZworICAgKiBhbmQgcmVxdWlyZSBjYWxsaW5nIEZsdXNo
KCkgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgorICAgKiBUaGUgQnl0ZVNpbmsgc2hvdWxkIGJl
IHJlYWR5IGZvciBmdXJ0aGVyIEFwcGVuZCgpIGNhbGxzIGFmdGVyIEZsdXNoKCkuCisgICAqIFRo
ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIEZsdXNoKCkgZG9lcyBub3RoaW5nLgorICAgKiBA
c3RhYmxlIElDVSA0LjIKKyAgICovCisgIHZpcnR1YWwgdm9pZCBGbHVzaCgpOworCitwcml2YXRl
OgorICBCeXRlU2luayhjb25zdCBCeXRlU2luayAmKTsgLy8gY29weSBjb25zdHJ1Y3RvciBub3Qg
aW1wbGVtZW50ZWQKKyAgQnl0ZVNpbmsgJm9wZXJhdG9yPShjb25zdCBCeXRlU2luayAmKTsgLy8g
YXNzaWdubWVudCBvcGVyYXRvciBub3QgaW1wbGVtZW50ZWQKK307CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFNv
bWUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb25zCisKKy8qKiAKKyAqIEltcGxlbWVudGF0aW9uIG9m
IEJ5dGVTaW5rIHRoYXQgd3JpdGVzIHRvIGEgZmxhdCBieXRlIGFycmF5LAorICogd2l0aCBib3Vu
ZHMtY2hlY2tpbmc6CisgKiBUaGlzIHNpbmsgd2lsbCBub3Qgd3JpdGUgbW9yZSB0aGFuIGNhcGFj
aXR5IGJ5dGVzIHRvIG91dGJ1Zi4KKyAqIElmIG1vcmUgdGhhbiBjYXBhY2l0eSBieXRlcyBhcmUg
QXBwZW5kKCllZCwgdGhlbiBleGNlc3MgYnl0ZXMgYXJlIGlnbm9yZWQsCisgKiBhbmQgT3ZlcmZs
b3dlZCgpIHdpbGwgcmV0dXJuIHRydWUuCisgKiBPdmVyZmxvdyBkb2VzIG5vdCBjYXVzZSBhIHJ1
bnRpbWUgZXJyb3IuCisgKiBAc3RhYmxlIElDVSA0LjIKKyAqLworY2xhc3MgVV9DT01NT05fQVBJ
IENoZWNrZWRBcnJheUJ5dGVTaW5rIDogcHVibGljIEJ5dGVTaW5rIHsKK3B1YmxpYzoKKyAgLyoq
CisgICAqIENvbnN0cnVjdHMgYSBCeXRlU2luayB0aGF0IHdpbGwgd3JpdGUgdG8gb3V0YnVmWzAu
LmNhcGFjaXR5LTFdLgorICAgKiBAcGFyYW0gb3V0YnVmIGJ1ZmZlciB0byB3cml0ZSB0bworICAg
KiBAcGFyYW0gY2FwYWNpdHkgc2l6ZSBvZiB0aGUgYnVmZmVyCisgICAqIEBzdGFibGUgSUNVIDQu
MgorICAgKi8KKyAgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsoY2hhciogb3V0YnVmLCBpbnQzMl90IGNh
cGFjaXR5KTsKKyAgLyoqCisgICAqIFJldHVybnMgdGhlIHNpbmsgdG8gaXRzIG9yaWdpbmFsIHN0
YXRlLCB3aXRob3V0IG1vZGlmeWluZyB0aGUgYnVmZmVyLgorICAgKiBVc2VmdWwgZm9yIHJldXNp
bmcgYm90aCB0aGUgYnVmZmVyIGFuZCB0aGUgc2luayBmb3IgbXVsdGlwbGUgc3RyZWFtcy4KKyAg
ICogUmVzZXRzIHRoZSBzdGF0ZSB0byBOdW1iZXJPZkJ5dGVzV3JpdHRlbigpPU51bWJlck9mQnl0
ZXNBcHBlbmRlZCgpPTAKKyAgICogYW5kIE92ZXJmbG93ZWQoKT1GQUxTRS4KKyAgICogQHJldHVy
biAqdGhpcworICAgKiBAZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgdmlydHVhbCBDaGVja2VkQXJy
YXlCeXRlU2luayYgUmVzZXQoKTsKKyAgLyoqCisgICAqIEFwcGVuZCAiYnl0ZXNbMCxuLTFdIiB0
byB0aGlzLgorICAgKiBAcGFyYW0gYnl0ZXMgdGhlIHBvaW50ZXIgdG8gdGhlIGJ5dGVzCisgICAq
IEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYnl0ZXM7IG11c3QgYmUgbm9uLW5lZ2F0aXZlCisgICAq
IEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgdmlydHVhbCB2b2lkIEFwcGVuZChjb25zdCBjaGFy
KiBieXRlcywgaW50MzJfdCBuKTsKKyAgLyoqCisgICAqIFJldHVybnMgYSB3cml0YWJsZSBidWZm
ZXIgZm9yIGFwcGVuZGluZyBhbmQgd3JpdGVzIHRoZSBidWZmZXIncyBjYXBhY2l0eSB0bworICAg
KiAqcmVzdWx0X2NhcGFjaXR5LiBGb3IgZGV0YWlscyBzZWUgdGhlIGJhc2UgY2xhc3MgZG9jdW1l
bnRhdGlvbi4KKyAgICogQHBhcmFtIG1pbl9jYXBhY2l0eSByZXF1aXJlZCBtaW5pbXVtIGNhcGFj
aXR5IG9mIHRoZSByZXR1cm5lZCBidWZmZXI7CisgICAqICAgICAgICAgICAgICAgICAgICAgbXVz
dCBiZSBub24tbmVnYXRpdmUKKyAgICogQHBhcmFtIGRlc2lyZWRfY2FwYWNpdHlfaGludCBkZXNp
cmVkIGNhcGFjaXR5IG9mIHRoZSByZXR1cm5lZCBidWZmZXI7CisgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXVzdCBiZSBub24tbmVnYXRpdmUKKyAgICogQHBhcmFtIHNjcmF0Y2gg
ZGVmYXVsdCBjYWxsZXItb3duZWQgYnVmZmVyCisgICAqIEBwYXJhbSBzY3JhdGNoX2NhcGFjaXR5
IGNhcGFjaXR5IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlcgorICAgKiBAcGFyYW0gcmVzdWx0X2NhcGFj
aXR5IHBvaW50ZXIgdG8gYW4gaW50ZWdlciB3aGljaCB3aWxsIGJlIHNldCB0byB0aGUKKyAgICog
ICAgICAgICAgICAgICAgICAgICAgICBjYXBhY2l0eSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyCisg
ICAqIEByZXR1cm4gYSBidWZmZXIgd2l0aCAqcmVzdWx0X2NhcGFjaXR5Pj1taW5fY2FwYWNpdHkK
KyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2aXJ0dWFsIGNoYXIqIEdldEFwcGVuZEJ1
ZmZlcihpbnQzMl90IG1pbl9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBkZXNpcmVkX2NhcGFjaXR5X2hpbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIqIHNjcmF0Y2gsIGludDMyX3Qgc2NyYXRjaF9jYXBhY2l0eSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogcmVzdWx0X2NhcGFjaXR5KTsKKyAg
LyoqCisgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIHRv
IHRoZSBzaW5rLgorICAgKiBAcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBi
dWZmZXIKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBpbnQzMl90IE51bWJlck9mQnl0
ZXNXcml0dGVuKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgLyoqCisgICAqIFJldHVybnMg
dHJ1ZSBpZiBhbnkgYnl0ZXMgd2VyZSBkaXNjYXJkZWQsIGkuZS4sIGlmIHRoZXJlIHdhcyBhbgor
ICAgKiBhdHRlbXB0IHRvIHdyaXRlIG1vcmUgdGhhbiAnY2FwYWNpdHknIGJ5dGVzLgorICAgKiBA
cmV0dXJuIFRSVUUgaWYgbW9yZSB0aGFuICdjYXBhY2l0eScgYnl0ZXMgd2VyZSBBcHBlbmQoKWVk
CisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgVUJvb2wgT3ZlcmZsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuIG92ZXJmbG93ZWRfOyB9CisgIC8qKgorICAgKiBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgYnl0ZXMgYXBwZW5kZWQgdG8gdGhlIHNpbmsuCisgICAqIElmIE92ZXJmbG93ZWQoKSB0aGVu
IE51bWJlck9mQnl0ZXNBcHBlbmRlZCgpPk51bWJlck9mQnl0ZXNXcml0dGVuKCkKKyAgICogZWxz
ZSB0aGV5IHJldHVybiB0aGUgc2FtZSBudW1iZXIuCisgICAqIEByZXR1cm4gbnVtYmVyIG9mIGJ5
dGVzIHdyaXR0ZW4gdG8gdGhlIGJ1ZmZlcgorICAgKiBAZHJhZnQgSUNVIDQuNgorICAgKi8KKyAg
aW50MzJfdCBOdW1iZXJPZkJ5dGVzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBhcHBlbmRlZF87
IH0KK3ByaXZhdGU6CisgIGNoYXIqIG91dGJ1Zl87CisgIGNvbnN0IGludDMyX3QgY2FwYWNpdHlf
OworICBpbnQzMl90IHNpemVfOworICBpbnQzMl90IGFwcGVuZGVkXzsKKyAgVUJvb2wgb3ZlcmZs
b3dlZF87CisgIENoZWNrZWRBcnJheUJ5dGVTaW5rKCk7IC8vLzwgZGVmYXVsdCBjb25zdHJ1Y3Rv
ciBub3QgaW1wbGVtZW50ZWQgCisgIENoZWNrZWRBcnJheUJ5dGVTaW5rKGNvbnN0IENoZWNrZWRB
cnJheUJ5dGVTaW5rICYpOyAvLy88IGNvcHkgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkCisg
IENoZWNrZWRBcnJheUJ5dGVTaW5rICZvcGVyYXRvcj0oY29uc3QgQ2hlY2tlZEFycmF5Qnl0ZVNp
bmsgJik7IC8vLzwgYXNzaWdubWVudCBvcGVyYXRvciBub3QgaW1wbGVtZW50ZWQKK307CisKKyNp
ZiBVX0hBVkVfU1REX1NUUklORworCisvKiogCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBCeXRlU2lu
ayB0aGF0IHdyaXRlcyB0byBhICJzdHJpbmciLgorICogVGhlIFN0cmluZ0NsYXNzIGlzIHVzdWFs
bHkgaW5zdGFudGlhdGVkIHdpdGggYSBzdGQ6OnN0cmluZy4KKyAqIEBzdGFibGUgSUNVIDQuMgor
ICovCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KK2NsYXNzIFN0cmluZ0J5dGVTaW5r
IDogcHVibGljIEJ5dGVTaW5rIHsKKyBwdWJsaWM6CisgIC8qKgorICAgKiBDb25zdHJ1Y3RzIGEg
Qnl0ZVNpbmsgdGhhdCB3aWxsIGFwcGVuZCBieXRlcyB0byB0aGUgZGVzdCBzdHJpbmcuCisgICAq
IEBwYXJhbSBkZXN0IHBvaW50ZXIgdG8gc3RyaW5nIG9iamVjdCB0byBhcHBlbmQgdG8KKyAgICog
QHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBTdHJpbmdCeXRlU2luayhTdHJpbmdDbGFzcyogZGVz
dCkgOiBkZXN0XyhkZXN0KSB7IH0KKyAgLyoqCisgICAqIEFwcGVuZCAiYnl0ZXNbMCxuLTFdIiB0
byB0aGlzLgorICAgKiBAcGFyYW0gZGF0YSB0aGUgcG9pbnRlciB0byB0aGUgYnl0ZXMKKyAgICog
QHBhcmFtIG4gdGhlIG51bWJlciBvZiBieXRlczsgbXVzdCBiZSBub24tbmVnYXRpdmUKKyAgICog
QHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2aXJ0dWFsIHZvaWQgQXBwZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIGludDMyX3QgbikgeyBkZXN0Xy0+YXBwZW5kKGRhdGEsIG4pOyB9CisgcHJpdmF0ZToK
KyAgU3RyaW5nQ2xhc3MqIGRlc3RfOworICBTdHJpbmdCeXRlU2luaygpOyAvLy88IGRlZmF1bHQg
Y29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkIAorICBTdHJpbmdCeXRlU2luayhjb25zdCBTdHJp
bmdCeXRlU2luayAmKTsgLy8vPCBjb3B5IGNvbnN0cnVjdG9yIG5vdCBpbXBsZW1lbnRlZAorICBT
dHJpbmdCeXRlU2luayAmb3BlcmF0b3I9KGNvbnN0IFN0cmluZ0J5dGVTaW5rICYpOyAvLy88IGFz
c2lnbm1lbnQgb3BlcmF0b3Igbm90IGltcGxlbWVudGVkCit9OworCisjZW5kaWYKKworVV9OQU1F
U1BBQ0VfRU5ECisKKyNlbmRpZiAgLy8gX19CWVRFU1RSRUFNX0hfXwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL2ZpZWxkcG9zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1L3VuaWNvZGUvZmllbGRwb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGE5NTc2ZTc4MmE5
M2VjNjQyMzMzYmZiYjk4NzBkYTc3OTRkYjkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL2ZpZWxkcG9zLmgKQEAgLTAsMCArMSwyOTEgQEAKKy8q
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDYs
IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyAqICAgQ29ycG9yYXRpb24gYW5kIG90
aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq
CisgKiBGaWxlIEZJRUxEUE9TLkgKKyAqCisgKiBNb2RpZmljYXRpb24gSGlzdG9yeToKKyAqCisg
KiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisgKiAgIDAyLzI1Lzk3ICAg
IGFsaXUgICAgICAgIENvbnZlcnRlZCBmcm9tIGphdmEuCisgKiAgIDAzLzE3Lzk3ICAgIGNsaHVh
bmcgICAgIFVwZGF0ZWQgcGVyIEZvcm1hdCBpbXBsZW1lbnRhdGlvbi4KKyAqICAgIDA3LzE3Lzk4
ICAgIHN0ZXBoZW4gICAgICAgIEFkZGVkIGRlZmF1bHQvY29weSBjdG9ycywgYW5kIG9wZXJhdG9y
cyA9LCA9PSwgIT0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8vICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisvLyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBqYXZhIHNv
dXJjZSBmaWxlIEZpZWxkUG9zaXRpb24uamF2YQorLy8gKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAK
KyNpZm5kZWYgRklFTERQT1NfSAorI2RlZmluZSBGSUVMRFBPU19ICisKKyNpbmNsdWRlICJ1bmlj
b2RlL3V0eXBlcy5oIgorCisvKioKKyAqIFxmaWxlIAorICogXGJyaWVmIEMrKyBBUEk6IEZpZWxk
UG9zaXRpb24gaWRlbnRpZmllcyB0aGUgZmllbGRzIGluIGEgZm9ybWF0dGVkIG91dHB1dC4KKyAq
LworCisjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORworCisjaW5jbHVkZSAidW5pY29kZS91b2Jq
ZWN0LmgiCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8qKgorICogPGNvZGU+RmllbGRQb3NpdGlv
bjwvY29kZT4gaXMgYSBzaW1wbGUgY2xhc3MgdXNlZCBieSA8Y29kZT5Gb3JtYXQ8L2NvZGU+Cisg
KiBhbmQgaXRzIHN1YmNsYXNzZXMgdG8gaWRlbnRpZnkgZmllbGRzIGluIGZvcm1hdHRlZCBvdXRw
dXQuIEZpZWxkcyBhcmUKKyAqIGlkZW50aWZpZWQgYnkgY29uc3RhbnRzLCB3aG9zZSBuYW1lcyB0
eXBpY2FsbHkgZW5kIHdpdGggPGNvZGU+X0ZJRUxEPC9jb2RlPiwKKyAqIGRlZmluZWQgaW4gdGhl
IHZhcmlvdXMgc3ViY2xhc3NlcyBvZiA8Y29kZT5Gb3JtYXQ8L2NvZGU+LiBTZWUKKyAqIDxjb2Rl
PkVSQV9GSUVMRDwvY29kZT4gYW5kIGl0cyBmcmllbmRzIGluIDxjb2RlPkRhdGVGb3JtYXQ8L2Nv
ZGU+IGZvcgorICogYW4gZXhhbXBsZS4KKyAqCisgKiA8cD4KKyAqIDxjb2RlPkZpZWxkUG9zaXRp
b248L2NvZGU+IGtlZXBzIHRyYWNrIG9mIHRoZSBwb3NpdGlvbiBvZiB0aGUKKyAqIGZpZWxkIHdp
dGhpbiB0aGUgZm9ybWF0dGVkIG91dHB1dCB3aXRoIHR3byBpbmRpY2VzOiB0aGUgaW5kZXgKKyAq
IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGZpZWxkIGFuZCB0aGUgaW5kZXggb2YgdGhl
IGxhc3QKKyAqIGNoYXJhY3RlciBvZiB0aGUgZmllbGQuCisgKgorICogPHA+CisgKiBPbmUgdmVy
c2lvbiBvZiB0aGUgPGNvZGU+Zm9ybWF0PC9jb2RlPiBtZXRob2QgaW4gdGhlIHZhcmlvdXMKKyAq
IDxjb2RlPkZvcm1hdDwvY29kZT4gY2xhc3NlcyByZXF1aXJlcyBhIDxjb2RlPkZpZWxkUG9zaXRp
b248L2NvZGU+CisgKiBvYmplY3QgYXMgYW4gYXJndW1lbnQuIFlvdSB1c2UgdGhpcyA8Y29kZT5m
b3JtYXQ8L2NvZGU+IG1ldGhvZAorICogdG8gcGVyZm9ybSBwYXJ0aWFsIGZvcm1hdHRpbmcgb3Ig
dG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZQorICogZm9ybWF0dGVkIG91dHB1dCAoc3VjaCBh
cyB0aGUgcG9zaXRpb24gb2YgYSBmaWVsZCkuCisgKgorICogVGhlIEZpZWxkUG9zaXRpb24gY2xh
c3MgaXMgbm90IHN1aXRhYmxlIGZvciBzdWJjbGFzc2luZy4KKyAqCisgKiA8cD4KKyAqIEJlbG93
IGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgPGNvZGU+RmllbGRQb3NpdGlvbjwvY29kZT4gdG8gYWlk
CisgKiBhbGlnbm1lbnQgb2YgYW4gYXJyYXkgb2YgZm9ybWF0dGVkIGZsb2F0aW5nLXBvaW50IG51
bWJlcnMgb24KKyAqIHRoZWlyIGRlY2ltYWwgcG9pbnRzOgorICogPHByZT4KKyAqIFxjb2RlCisg
KiAgICAgICBkb3VibGUgZG91YmxlTnVtW10gPSB7MTIzNDU2Nzg5LjAsIC0xMjM0NTY3OC45LCAx
MjM0NTY3Ljg5LCAtMTIzNDU2Ljc4OSwKKyAqICAgICAgICAgICAgICAgICAgMTIzNDUuNjc4OSwg
LTEyMzQuNTY3ODksIDEyMy40NTY3ODksIC0xMi4zNDU2Nzg5LCAxLjIzNDU2Nzg5fTsKKyAqICAg
ICAgIGludCBkTnVtU2l6ZSA9IChpbnQpKHNpemVvZihkb3VibGVOdW0pL3NpemVvZihkb3VibGUp
KTsKKyAqICAgICAgIAorICogICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgKiAgICAgICBEZWNpbWFsRm9ybWF0KiBmbXQgPSAoRGVjaW1hbEZvcm1hdCopIE51bWJlckZv
cm1hdDo6Y3JlYXRlSW5zdGFuY2Uoc3RhdHVzKTsKKyAqICAgICAgIGZtdC0+c2V0RGVjaW1hbFNl
cGFyYXRvckFsd2F5c1Nob3duKHRydWUpOworICogICAgICAgCisgKiAgICAgICBjb25zdCBpbnQg
dGVtcExlbiA9IDIwOworICogICAgICAgY2hhciB0ZW1wW3RlbXBMZW5dOworICogICAgICAgCisg
KiAgICAgICBmb3IgKGludCBpPTA7IGk8ZE51bVNpemU7IGkrKykgeworICogICAgICAgICAgIEZp
ZWxkUG9zaXRpb24gcG9zKE51bWJlckZvcm1hdDo6SU5URUdFUl9GSUVMRCk7CisgKiAgICAgICAg
ICAgVW5pY29kZVN0cmluZyBidWY7CisgKiAgICAgICAgICAgY2hhciBmbXRUZXh0W3RlbXBMZW5d
OworICogICAgICAgICAgIFRvQ2hhclN0cmluZyhmbXQtPmZvcm1hdChkb3VibGVOdW1baV0sIGJ1
ZiwgcG9zKSwgZm10VGV4dCk7CisgKiAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPHRlbXBMZW47
IGorKykgdGVtcFtqXSA9ICcgJzsgLy8gY2xlYXIgd2l0aCBzcGFjZXMKKyAqICAgICAgICAgICB0
ZW1wW19fbWluKHRlbXBMZW4sIHRlbXBMZW4tcG9zLmdldEVuZEluZGV4KCkpXSA9ICdcMCc7Cisg
KiAgICAgICAgICAgY291dCA8PCB0ZW1wIDw8IGZtdFRleHQgICA8PCBlbmRsOworICogICAgICAg
fQorICogICAgICAgZGVsZXRlIGZtdDsKKyAqIFxlbmRjb2RlCisgKiA8L3ByZT4KKyAqIDxwPgor
ICogVGhlIGNvZGUgd2lsbCBnZW5lcmF0ZSB0aGUgZm9sbG93aW5nIG91dHB1dDoKKyAqIDxwcmU+
CisgKiBcY29kZQorICogICAgICAgICAgIDEyMyw0NTYsNzg5LjAwMAorICogICAgICAgICAgIC0x
MiwzNDUsNjc4LjkwMAorICogICAgICAgICAgICAgMSwyMzQsNTY3Ljg4MAorICogICAgICAgICAg
ICAgIC0xMjMsNDU2Ljc4OQorICogICAgICAgICAgICAgICAgMTIsMzQ1LjY3OAorICogICAgICAg
ICAgICAgICAgLTEsMjM0LjU2NworICogICAgICAgICAgICAgICAgICAgMTIzLjQ1NgorICogICAg
ICAgICAgICAgICAgICAgLTEyLjM0NQorICogICAgICAgICAgICAgICAgICAgICAxLjIzNAorICog
IFxlbmRjb2RlCisgKiA8L3ByZT4KKyAqLworY2xhc3MgVV9JMThOX0FQSSBGaWVsZFBvc2l0aW9u
IDogcHVibGljIFVPYmplY3QgeworcHVibGljOgorICAgIC8qKgorICAgICAqIERPTlRfQ0FSRSBt
YXkgYmUgc3BlY2lmaWVkIGFzIHRoZSBmaWVsZCB0byBpbmRpY2F0ZSB0aGF0IHRoZQorICAgICAq
IGNhbGxlciBkb2Vzbid0IG5lZWQgdG8gc3BlY2lmeSBhIGZpZWxkLiAgRG8gbm90IHN1YmNsYXNz
LgorICAgICAqLworICAgIGVudW0geyBET05UX0NBUkUgPSAtMSB9OworCisgICAgLyoqCisgICAg
ICogQ3JlYXRlcyBhIEZpZWxkUG9zaXRpb24gb2JqZWN0IHdpdGggYSBub24tc3BlY2lmaWVkIGZp
ZWxkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIEZpZWxkUG9zaXRpb24o
KSAKKyAgICAgICAgOiBVT2JqZWN0KCksIGZGaWVsZChET05UX0NBUkUpLCBmQmVnaW5JbmRleCgw
KSwgZkVuZEluZGV4KDApIHt9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgRmllbGRQb3Np
dGlvbiBvYmplY3QgZm9yIHRoZSBnaXZlbiBmaWVsZC4gIEZpZWxkcyBhcmUKKyAgICAgKiBpZGVu
dGlmaWVkIGJ5IGNvbnN0YW50cywgd2hvc2UgbmFtZXMgdHlwaWNhbGx5IGVuZCB3aXRoIF9GSUVM
RCwKKyAgICAgKiBpbiB0aGUgdmFyaW91cyBzdWJjbGFzc2VzIG9mIEZvcm1hdC4KKyAgICAgKgor
ICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I0lOVEVHRVJfRklFTEQKKyAgICAgKiBAc2VlIE51bWJl
ckZvcm1hdCNGUkFDVElPTl9GSUVMRAorICAgICAqIEBzZWUgRGF0ZUZvcm1hdCNZRUFSX0ZJRUxE
CisgICAgICogQHNlZSBEYXRlRm9ybWF0I01PTlRIX0ZJRUxECisgICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAgICovCisgICAgRmllbGRQb3NpdGlvbihpbnQzMl90IGZpZWxkKSAKKyAgICAgICAg
OiBVT2JqZWN0KCksIGZGaWVsZChmaWVsZCksIGZCZWdpbkluZGV4KDApLCBmRW5kSW5kZXgoMCkg
e30KKworICAgIC8qKgorICAgICAqIENvcHkgY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0gY29w
eSB0aGUgb2JqZWN0IHRvIGJlIGNvcGllZCBmcm9tLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgICAqLworICAgIEZpZWxkUG9zaXRpb24oY29uc3QgRmllbGRQb3NpdGlvbiYgY29weSkgCisg
ICAgICAgIDogVU9iamVjdChjb3B5KSwgZkZpZWxkKGNvcHkuZkZpZWxkKSwgZkJlZ2luSW5kZXgo
Y29weS5mQmVnaW5JbmRleCksIGZFbmRJbmRleChjb3B5LmZFbmRJbmRleCkge30KKworICAgIC8q
KgorICAgICAqIERlc3RydWN0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAg
ICB2aXJ0dWFsIH5GaWVsZFBvc2l0aW9uKCk7CisKKyAgICAvKioKKyAgICAgKiBBc3NpZ25tZW50
IG9wZXJhdG9yCisgICAgICogQHBhcmFtIGNvcHkgdGhlIG9iamVjdCB0byBiZSBjb3BpZWQgZnJv
bS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBGaWVsZFBvc2l0aW9uJiAg
ICAgIG9wZXJhdG9yPShjb25zdCBGaWVsZFBvc2l0aW9uJiBjb3B5KTsKKworICAgIC8qKiAKKyAg
ICAgKiBFcXVhbGl0eSBvcGVyYXRvci4KKyAgICAgKiBAcGFyYW0gdGhhdCAgICB0aGUgb2JqZWN0
IHRvIGJlIGNvbXBhcmVkIHdpdGguCisgICAgICogQHJldHVybiAgICAgICAgVFJVRSBpZiB0aGUg
dHdvIGZpZWxkIHBvc2l0aW9ucyBhcmUgZXF1YWwsIEZBTFNFIG90aGVyd2lzZS4KKyAgICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBVQm9vbCAgICAgICAgICAgICAgb3BlcmF0b3I9
PShjb25zdCBGaWVsZFBvc2l0aW9uJiB0aGF0KSBjb25zdDsKKworICAgIC8qKiAKKyAgICAgKiBF
cXVhbGl0eSBvcGVyYXRvci4KKyAgICAgKiBAcGFyYW0gdGhhdCAgICB0aGUgb2JqZWN0IHRvIGJl
IGNvbXBhcmVkIHdpdGguCisgICAgICogQHJldHVybiAgICAgICAgVFJVRSBpZiB0aGUgdHdvIGZp
ZWxkIHBvc2l0aW9ucyBhcmUgbm90IGVxdWFsLCBGQUxTRSBvdGhlcndpc2UuCisgICAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgVUJvb2wgICAgICAgICAgICAgIG9wZXJhdG9yIT0o
Y29uc3QgRmllbGRQb3NpdGlvbiYgdGhhdCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBDbG9u
ZSB0aGlzIG9iamVjdC4KKyAgICAgKiBDbG9uZXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGlu
IG11bHRpcGxlIHRocmVhZHMuCisgICAgICogSWYgYW4gZXJyb3Igb2NjdXJzLCB0aGVuIE5VTEwg
aXMgcmV0dXJuZWQuCisgICAgICogVGhlIGNhbGxlciBtdXN0IGRlbGV0ZSB0aGUgY2xvbmUuCisg
ICAgICoKKyAgICAgKiBAcmV0dXJuIGEgY2xvbmUgb2YgdGhpcyBvYmplY3QKKyAgICAgKgorICAg
ICAqIEBzZWUgZ2V0RHluYW1pY0NsYXNzSUQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAg
Ki8KKyAgICBGaWVsZFBvc2l0aW9uICpjbG9uZSgpIGNvbnN0OworCisgICAgLyoqCisgICAgICog
UmV0cmlldmUgdGhlIGZpZWxkIGlkZW50aWZpZXIuCisgICAgICogQHJldHVybiAgICB0aGUgZmll
bGQgaWRlbnRpZmllci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBpbnQz
Ml90IGdldEZpZWxkKHZvaWQpIGNvbnN0IHsgcmV0dXJuIGZGaWVsZDsgfQorCisgICAgLyoqCisg
ICAgICogUmV0cmlldmUgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHJl
cXVlc3RlZCBmaWVsZC4KKyAgICAgKiBAcmV0dXJuICAgIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjdGVyIGluIHRoZSByZXF1ZXN0ZWQgZmllbGQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAgICovCisgICAgaW50MzJfdCBnZXRCZWdpbkluZGV4KHZvaWQpIGNvbnN0IHsgcmV0dXJu
IGZCZWdpbkluZGV4OyB9CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgaW5kZXggb2Yg
dGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZQorICAgICAq
IHJlcXVlc3RlZCBmaWVsZC4KKyAgICAgKiBAcmV0dXJuICAgIHRoZSBpbmRleCBvZiB0aGUgY2hh
cmFjdGVyIGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlCisgICAgICogICAgICAg
ICAgICByZXF1ZXN0ZWQgZmllbGQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisg
ICAgaW50MzJfdCBnZXRFbmRJbmRleCh2b2lkKSBjb25zdCB7IHJldHVybiBmRW5kSW5kZXg7IH0K
KyAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGZpZWxkLgorICAgICAqIEBwYXJhbSBmICAgIHRo
ZSBuZXcgdmFsdWUgb2YgdGhlIGZpZWxkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAq
LworICAgIHZvaWQgc2V0RmllbGQoaW50MzJfdCBmKSB7IGZGaWVsZCA9IGY7IH0KKworICAgIC8q
KgorICAgICAqIFNldCB0aGUgYmVnaW4gaW5kZXguICBGb3IgdXNlIGJ5IHN1YmNsYXNzZXMgb2Yg
Rm9ybWF0LgorICAgICAqIEBwYXJhbSBiaSAgICB0aGUgbmV3IHZhbHVlIG9mIHRoZSBiZWdpbiBp
bmRleAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZvaWQgc2V0QmVnaW5J
bmRleChpbnQzMl90IGJpKSB7IGZCZWdpbkluZGV4ID0gYmk7IH0KKworICAgIC8qKgorICAgICAq
IFNldCB0aGUgZW5kIGluZGV4LiAgRm9yIHVzZSBieSBzdWJjbGFzc2VzIG9mIEZvcm1hdC4KKyAg
ICAgKiBAcGFyYW0gZWkgICAgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgZW5kIGluZGV4CisgICAgICog
QHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdm9pZCBzZXRFbmRJbmRleChpbnQzMl90IGVp
KSB7IGZFbmRJbmRleCA9IGVpOyB9CisgICAgCisgICAgLyoqCisgICAgICogSUNVICJwb29yIG1h
bidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoZSBhY3R1YWwgY2xhc3MuCisgICAg
ICoKKyAgICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVDbGFzc0lE
IGdldER5bmFtaWNDbGFzc0lEKCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBJQ1UgInBvb3Ig
bWFuJ3MgUlRUSSIsIHJldHVybnMgYSBVQ2xhc3NJRCBmb3IgdGhpcyBjbGFzcy4KKyAgICAgKgor
ICAgICAqIEBzdGFibGUgSUNVIDIuMgorICAgICAqLworICAgIHN0YXRpYyBVQ2xhc3NJRCBVX0VY
UE9SVDIgZ2V0U3RhdGljQ2xhc3NJRCgpOworCitwcml2YXRlOgorICAgIC8qKgorICAgICAqIElu
cHV0OiBEZXNpcmVkIGZpZWxkIHRvIGRldGVybWluZSBzdGFydCBhbmQgZW5kIG9mZnNldHMgZm9y
LgorICAgICAqIFRoZSBtZWFuaW5nIGRlcGVuZHMgb24gdGhlIHN1YmNsYXNzIG9mIEZvcm1hdC4K
KyAgICAgKi8KKyAgICBpbnQzMl90IGZGaWVsZDsKKworICAgIC8qKgorICAgICAqIE91dHB1dDog
U3RhcnQgb2Zmc2V0IG9mIGZpZWxkIGluIHRleHQuCisgICAgICogSWYgdGhlIGZpZWxkIGRvZXMg
bm90IG9jY3VyIGluIHRoZSB0ZXh0LCAwIGlzIHJldHVybmVkLgorICAgICAqLworICAgIGludDMy
X3QgZkJlZ2luSW5kZXg7CisKKyAgICAvKioKKyAgICAgKiBPdXRwdXQ6IEVuZCBvZmZzZXQgb2Yg
ZmllbGQgaW4gdGV4dC4KKyAgICAgKiBJZiB0aGUgZmllbGQgZG9lcyBub3Qgb2NjdXIgaW4gdGhl
IHRleHQsIDAgaXMgcmV0dXJuZWQuCisgICAgICovCisgICAgaW50MzJfdCBmRW5kSW5kZXg7Cit9
OworCitpbmxpbmUgRmllbGRQb3NpdGlvbiYKK0ZpZWxkUG9zaXRpb246Om9wZXJhdG9yPShjb25z
dCBGaWVsZFBvc2l0aW9uJiBjb3B5KQoreworICAgIGZGaWVsZCAgICAgICAgID0gY29weS5mRmll
bGQ7CisgICAgZkVuZEluZGV4ICAgICA9IGNvcHkuZkVuZEluZGV4OworICAgIGZCZWdpbkluZGV4
ID0gY29weS5mQmVnaW5JbmRleDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBVQm9v
bAorRmllbGRQb3NpdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWVsZFBvc2l0aW9uJiBjb3B5KSBj
b25zdAoreworICAgIHJldHVybiAoZkZpZWxkID09IGNvcHkuZkZpZWxkICYmCisgICAgICAgIGZF
bmRJbmRleCA9PSBjb3B5LmZFbmRJbmRleCAmJgorICAgICAgICBmQmVnaW5JbmRleCA9PSBjb3B5
LmZCZWdpbkluZGV4KTsKK30KKworaW5saW5lIFVCb29sCitGaWVsZFBvc2l0aW9uOjpvcGVyYXRv
ciE9KGNvbnN0IEZpZWxkUG9zaXRpb24mIGNvcHkpIGNvbnN0Cit7CisgICAgcmV0dXJuICFvcGVy
YXRvcj09KGNvcHkpOworfQorCitVX05BTUVTUEFDRV9FTkQKKworI2VuZGlmIC8qICNpZiAhVUNP
TkZJR19OT19GT1JNQVRUSU5HICovCisKKyNlbmRpZiAvLyBfRklFTERQT1MKKy8vZW9mCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvZm10YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL2ZtdGFibGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODM0
MDM3ZWJmNGQ1OTE5YTkxMzU0NGIxZWU3OTU2N2Y5ZTcwZDM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL2ZtdGFibGUuaApAQCAtMCwwICsxLDY3
MyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChDKSAxOTk3
LTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisqCisqIEZpbGUgRk1UQUJMRS5ICisqCisqIE1vZGlmaWNhdGlvbiBIaXN0b3J5OgorKgorKiAg
IERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMDIvMjkvOTcgICAgYWxp
dSAgICAgICAgQ3JlYXRpb24uCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyNpZm5kZWYg
Rk1UQUJMRV9ICisjZGVmaW5lIEZNVEFCTEVfSAorCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMu
aCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUgInVuaWNvZGUvc3RyaW5n
cGllY2UuaCIKKworLyoqCisgKiBcZmlsZSAKKyAqIFxicmllZiBDKysgQVBJOiBGb3JtYXR0YWJs
ZSBpcyBhIHRoaW4gd3JhcHBlciBmb3IgcHJpbWl0aXZlIG51bWVyaWMgdHlwZXMuCisgKi8KKwor
I2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworY2xhc3Mg
Q2hhclN0cmluZzsKK2NsYXNzIERpZ2l0TGlzdDsKKworLyoqCisgKiBGb3JtYXR0YWJsZSBvYmpl
Y3RzIGNhbiBiZSBwYXNzZWQgdG8gdGhlIEZvcm1hdCBjbGFzcyBvcgorICogaXRzIHN1YmNsYXNz
ZXMgZm9yIGZvcm1hdHRpbmcuICBGb3JtYXR0YWJsZSBpcyBhIHRoaW4gd3JhcHBlcgorICogY2xh
c3Mgd2hpY2ggaW50ZXJjb252ZXJ0cyBiZXR3ZWVuIHRoZSBwcmltaXRpdmUgbnVtZXJpYyB0eXBl
cworICogKGRvdWJsZSwgbG9uZywgZXRjLikgYXMgd2VsbCBhcyBVRGF0ZSBhbmQgVW5pY29kZVN0
cmluZy4KKyAqCisgKiA8cD5JbnRlcm5hbGx5LCBhIEZvcm1hdHRhYmxlIG9iamVjdCBpcyBhIHVu
aW9uIG9mIHByaW1pdGl2ZSB0eXBlcy4KKyAqIEFzIHN1Y2gsIGl0IGNhbiBvbmx5IHN0b3JlIG9u
ZSBmbGF2b3Igb2YgZGF0YSBhdCBhIHRpbWUuICBUbworICogZGV0ZXJtaW5lIHdoYXQgZmxhdm9y
IG9mIGRhdGEgaXQgY29udGFpbnMsIHVzZSB0aGUgZ2V0VHlwZSBtZXRob2QuCisgKgorICogPHA+
QXMgb2YgSUNVIDMuMCwgRm9ybWF0dGFibGUgbWF5IGFsc28gd3JhcCBhIFVPYmplY3QgcG9pbnRl
ciwKKyAqIHdoaWNoIGl0IG93bnMuICBUaGlzIGFsbG93cyBhbiBpbnN0YW5jZSBvZiBhbnkgSUNV
IGNsYXNzIHRvIGJlCisgKiBlbmNhcHN1bGF0ZWQgaW4gYSBGb3JtYXR0YWJsZS4gIEZvciBsZWdh
Y3kgcmVhc29ucyBhbmQgZm9yCisgKiBlZmZpY2llbmN5LCBwcmltaXRpdmUgbnVtZXJpYyB0eXBl
cyBhcmUgc3RpbGwgc3RvcmVkIGRpcmVjdGx5CisgKiB3aXRoaW4gYSBGb3JtYXR0YWJsZS4KKyAq
CisgKiA8cD5UaGUgRm9ybWF0dGFibGUgY2xhc3MgaXMgbm90IHN1aXRhYmxlIGZvciBzdWJjbGFz
c2luZy4KKyAqLworY2xhc3MgVV9JMThOX0FQSSBGb3JtYXR0YWJsZSA6IHB1YmxpYyBVT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICAvKioKKyAgICAgKiBUaGlzIGVudW0gaXMgb25seSB1c2VkIHRvIGxl
dCBjYWxsZXJzIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgKiB0aGUgRm9ybWF0dGFibGUoVURh
dGUpIGNvbnN0cnVjdG9yIGFuZCB0aGUgRm9ybWF0dGFibGUoZG91YmxlKQorICAgICAqIGNvbnN0
cnVjdG9yOyB0aGUgY29tcGlsZXIgY2Fubm90IGRpc3Rpbmd1aXNoIHRoZSBzaWduYXR1cmVzLAor
ICAgICAqIHNpbmNlIFVEYXRlIGlzIGN1cnJlbnRseSB0eXBlZGVmZWQgdG8gYmUgZWl0aGVyIGRv
dWJsZSBvciBsb25nLgorICAgICAqIElmIFVEYXRlIGlzIGNoYW5nZWQgbGF0ZXIgdG8gYmUgYSBi
b25hZmlkZSBjbGFzcworICAgICAqIG9yIHN0cnVjdCwgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCB0
aGlzIGVudW0uCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgZW51bSBJU0RB
VEUgeyBrSXNEYXRlIH07CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yCisg
ICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgRm9ybWF0dGFibGUoKTsgLy8gVHlw
ZSBrTG9uZywgdmFsdWUgMAorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIEZvcm1hdHRhYmxl
IG9iamVjdCB3aXRoIGEgVURhdGUgaW5zdGFuY2UuCisgICAgICogQHBhcmFtIGQgdGhlIFVEYXRl
IGluc3RhbmNlLgorICAgICAqIEBwYXJhbSBmbGFnIHRoZSBmbGFnIHRvIGluZGljYXRlIHRoaXMg
aXMgYSBkYXRlLiBBbHdheXMgc2V0IGl0IHRvIGtJc0RhdGUKKyAgICAgKiBAc3RhYmxlIElDVSAy
LjAgIAorICAgICAqLworICAgIEZvcm1hdHRhYmxlKFVEYXRlIGQsIElTREFURSBmbGFnKTsKKwor
ICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBGb3JtYXR0YWJsZSBvYmplY3Qgd2l0aCBhIGRvdWJs
ZSBudW1iZXIuCisgICAgICogQHBhcmFtIGQgdGhlIGRvdWJsZSBudW1iZXIuCisgICAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgRm9ybWF0dGFibGUoZG91YmxlIGQpOworCisgICAg
LyoqCisgICAgICogQ3JlYXRlcyBhIEZvcm1hdHRhYmxlIG9iamVjdCB3aXRoIGEgbG9uZyBudW1i
ZXIuCisgICAgICogQHBhcmFtIGwgdGhlIGxvbmcgbnVtYmVyLgorICAgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgICAqLworICAgIEZvcm1hdHRhYmxlKGludDMyX3QgbCk7CisKKyAgICAvKioKKyAg
ICAgKiBDcmVhdGVzIGEgRm9ybWF0dGFibGUgb2JqZWN0IHdpdGggYW4gaW50NjRfdCBudW1iZXIK
KyAgICAgKiBAcGFyYW0gbGwgdGhlIGludDY0X3QgbnVtYmVyLgorICAgICAqIEBzdGFibGUgSUNV
IDIuOAorICAgICAqLworICAgIEZvcm1hdHRhYmxlKGludDY0X3QgbGwpOworCisjaWYgIVVDT05G
SUdfTk9fQ09OVkVSU0lPTgorICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBGb3JtYXR0YWJsZSBv
YmplY3Qgd2l0aCBhIGNoYXIgc3RyaW5nIHBvaW50ZXIuCisgICAgICogQXNzdW1lcyB0aGF0IHRo
ZSBjaGFyIHN0cmluZyBpcyBudWxsIHRlcm1pbmF0ZWQuCisgICAgICogQHBhcmFtIHN0clRvQ29w
eSB0aGUgY2hhciBzdHJpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAg
Rm9ybWF0dGFibGUoY29uc3QgY2hhciogc3RyVG9Db3B5KTsKKyNlbmRpZgorCisgICAgLyoqCisg
ICAgICogQ3JlYXRlcyBhIEZvcm1hdHRhYmxlIG9iamVjdCBvZiBhbiBhcHByb3ByaWF0ZSBudW1l
cmljIHR5cGUgZnJvbSBhCisgICAgICogYSBkZWNpbWFsIG51bWJlciBpbiBzdHJpbmcgZm9ybS4g
IFRoZSBGb3JtYXR0YWJsZSB3aWxsIHJldGFpbiB0aGUKKyAgICAgKiBmdWxsIHByZWNpc2lvbiBv
ZiB0aGUgaW5wdXQgaW4gZGVjaW1hbCBmb3JtYXQsIGV2ZW4gd2hlbiBpdCBleGNlZWRzCisgICAg
ICogd2hhdCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgYSBkb3VibGUgb2YgaW50NjRfdC4KKyAgICAg
KgorICAgICAqIEBwYXJhbSBudW1iZXIgIHRoZSB1bmZvcm1hdHRlZCAobm90IGxvY2FsaXplZCkg
c3RyaW5nIHJlcHJlc2VudGF0aW9uCisgICAgICogICAgICAgICAgICAgICAgICAgICBvZiB0aGUg
RGVjaW1hbCBudW1iZXIuCisgICAgICogQHBhcmFtIHN0YXR1cyAgdGhlIGVycm9yIGNvZGUuICBQ
b3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX0lOVkFMSURfRk9STUFUX0VSUk9SCisgICAgICogICAg
ICAgICAgICAgICAgaWYgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGRvZXMgbm90IGNvbmZvcm0g
dG8gdGhhdCBvZiBhCisgICAgICogICAgICAgICAgICAgICAgZGVjaW1hbCBudW1iZXIuCisgICAg
ICogQHN0YWJsZSBJQ1UgNC40CisgICAgICovCisgICAgRm9ybWF0dGFibGUoY29uc3QgU3RyaW5n
UGllY2UgJm51bWJlciwgVUVycm9yQ29kZSAmc3RhdHVzKTsKKworICAgIC8qKgorICAgICAqIENy
ZWF0ZXMgYSBGb3JtYXR0YWJsZSBvYmplY3Qgd2l0aCBhIFVuaWNvZGVTdHJpbmcgb2JqZWN0IHRv
IGNvcHkgZnJvbS4KKyAgICAgKiBAcGFyYW0gc3RyVG9Db3B5IHRoZSBVbmljb2RlU3RyaW5nIHN0
cmluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBGb3JtYXR0YWJsZShj
b25zdCBVbmljb2RlU3RyaW5nJiBzdHJUb0NvcHkpOworCisgICAgLyoqCisgICAgICogQ3JlYXRl
cyBhIEZvcm1hdHRhYmxlIG9iamVjdCB3aXRoIGEgVW5pY29kZVN0cmluZyBvYmplY3QgdG8gYWRv
cHQgZnJvbS4KKyAgICAgKiBAcGFyYW0gc3RyVG9BZG9wdCB0aGUgVW5pY29kZVN0cmluZyBzdHJp
bmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgRm9ybWF0dGFibGUoVW5p
Y29kZVN0cmluZyogc3RyVG9BZG9wdCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgRm9y
bWF0dGFibGUgb2JqZWN0IHdpdGggYW4gYXJyYXkgb2YgRm9ybWF0dGFibGUgb2JqZWN0cy4KKyAg
ICAgKiBAcGFyYW0gYXJyYXlUb0NvcHkgdGhlIEZvcm1hdHRhYmxlIG9iamVjdCBhcnJheS4KKyAg
ICAgKiBAcGFyYW0gY291bnQgdGhlIGFycmF5IGNvdW50LgorICAgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgICAqLworICAgIEZvcm1hdHRhYmxlKGNvbnN0IEZvcm1hdHRhYmxlKiBhcnJheVRvQ29w
eSwgaW50MzJfdCBjb3VudCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgRm9ybWF0dGFi
bGUgb2JqZWN0IHRoYXQgYWRvcHRzIHRoZSBnaXZlbiBVT2JqZWN0LgorICAgICAqIEBwYXJhbSBv
YmplY3RUb0Fkb3B0IHRoZSBVT2JqZWN0IHRvIHNldCB0aGlzIG9iamVjdCB0bworICAgICAqIEBz
dGFibGUgSUNVIDMuMAorICAgICAqLworICAgIEZvcm1hdHRhYmxlKFVPYmplY3QqIG9iamVjdFRv
QWRvcHQpOworCisgICAgLyoqCisgICAgICogQ29weSBjb25zdHJ1Y3Rvci4KKyAgICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBGb3JtYXR0YWJsZShjb25zdCBGb3JtYXR0YWJsZSYp
OworCisgICAgLyoqCisgICAgICogQXNzaWdubWVudCBvcGVyYXRvci4KKyAgICAgKiBAcGFyYW0g
cmhzICAgVGhlIEZvcm1hdHRhYmxlIG9iamVjdCB0byBjb3B5IGludG8gdGhpcyBvYmplY3QuCisg
ICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgRm9ybWF0dGFibGUmICAgIG9wZXJh
dG9yPShjb25zdCBGb3JtYXR0YWJsZSAmcmhzKTsKKworICAgIC8qKgorICAgICAqIEVxdWFsaXR5
IGNvbXBhcmlzb24uCisgICAgICogQHBhcmFtIG90aGVyICAgIHRoZSBvYmplY3QgdG8gYmUgY29t
cGFyZWQgd2l0aC4KKyAgICAgKiBAcmV0dXJuICAgICAgICBUUlVFIGlmIG90aGVyIGFyZSBlcXVh
bCB0byB0aGlzLCBGQUxTRSBvdGhlcndpc2UuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAg
ICovCisgICAgVUJvb2wgICAgICAgICAgb3BlcmF0b3I9PShjb25zdCBGb3JtYXR0YWJsZSAmb3Ro
ZXIpIGNvbnN0OworICAgIAorICAgIC8qKiAKKyAgICAgKiBFcXVhbGl0eSBvcGVyYXRvci4KKyAg
ICAgKiBAcGFyYW0gb3RoZXIgICAgdGhlIG9iamVjdCB0byBiZSBjb21wYXJlZCB3aXRoLgorICAg
ICAqIEByZXR1cm4gICAgICAgIFRSVUUgaWYgb3RoZXIgYXJlIHVuZXF1YWwgdG8gdGhpcywgRkFM
U0Ugb3RoZXJ3aXNlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIFVCb29s
ICAgICAgICAgIG9wZXJhdG9yIT0oY29uc3QgRm9ybWF0dGFibGUmIG90aGVyKSBjb25zdAorICAg
ICAgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisKKyAgICAvKiogCisgICAgICogRGVz
dHJ1Y3Rvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsICAg
ICAgICAgfkZvcm1hdHRhYmxlKCk7CisKKyAgICAvKioKKyAgICAgKiBDbG9uZSB0aGlzIG9iamVj
dC4KKyAgICAgKiBDbG9uZXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGluIG11bHRpcGxlIHRo
cmVhZHMuCisgICAgICogSWYgYW4gZXJyb3Igb2NjdXJzLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQu
CisgICAgICogVGhlIGNhbGxlciBtdXN0IGRlbGV0ZSB0aGUgY2xvbmUuCisgICAgICoKKyAgICAg
KiBAcmV0dXJuIGEgY2xvbmUgb2YgdGhpcyBvYmplY3QKKyAgICAgKgorICAgICAqIEBzZWUgZ2V0
RHluYW1pY0NsYXNzSUQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8KKyAgICBGb3Jt
YXR0YWJsZSAqY2xvbmUoKSBjb25zdDsKKworICAgIC8qKiAKKyAgICAgKiBTZWxlY3RvciBmb3Ig
Zmxhdm9yIG9mIGRhdGEgdHlwZSBjb250YWluZWQgd2l0aGluIGEKKyAgICAgKiBGb3JtYXR0YWJs
ZSBvYmplY3QuICBGb3JtYXR0YWJsZSBpcyBhIHVuaW9uIG9mIHNldmVyYWwKKyAgICAgKiBkaWZm
ZXJlbnQgdHlwZXMsIGFuZCBhdCBhbnkgdGltZSBjb250YWlucyBleGFjdGx5IG9uZSB0eXBlLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIGVudW0gVHlwZSB7CisgICAgICAg
IC8qKgorICAgICAgICAgKiBTZWxlY3RvciBpbmRpY2F0aW5nIGEgVURhdGUgdmFsdWUuICBVc2Ug
Z2V0RGF0ZSB0byByZXRyaWV2ZQorICAgICAgICAgKiB0aGUgdmFsdWUuCisgICAgICAgICAqIEBz
dGFibGUgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAga0RhdGUsCisKKyAgICAgICAgLyoq
CisgICAgICAgICAqIFNlbGVjdG9yIGluZGljYXRpbmcgYSBkb3VibGUgdmFsdWUuICBVc2UgZ2V0
RG91YmxlIHRvCisgICAgICAgICAqIHJldHJpZXZlIHRoZSB2YWx1ZS4KKyAgICAgICAgICogQHN0
YWJsZSBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBrRG91YmxlLAorCisgICAgICAgIC8q
KgorICAgICAgICAgKiBTZWxlY3RvciBpbmRpY2F0aW5nIGEgMzItYml0IGludGVnZXIgdmFsdWUu
ICBVc2UgZ2V0TG9uZyB0bworICAgICAgICAgKiByZXRyaWV2ZSB0aGUgdmFsdWUuCisgICAgICAg
ICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAga0xvbmcsCisKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIFNlbGVjdG9yIGluZGljYXRpbmcgYSBVbmljb2RlU3RyaW5nIHZh
bHVlLiAgVXNlIGdldFN0cmluZworICAgICAgICAgKiB0byByZXRyaWV2ZSB0aGUgdmFsdWUuCisg
ICAgICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAga1N0cmluZywK
KworICAgICAgICAvKioKKyAgICAgICAgICogU2VsZWN0b3IgaW5kaWNhdGluZyBhbiBhcnJheSBv
ZiBGb3JtYXR0YWJsZXMuICBVc2UgZ2V0QXJyYXkKKyAgICAgICAgICogdG8gcmV0cmlldmUgdGhl
IHZhbHVlLgorICAgICAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAg
IGtBcnJheSwKKworICAgICAgICAvKioKKyAgICAgICAgICogU2VsZWN0b3IgaW5kaWNhdGluZyBh
IDY0LWJpdCBpbnRlZ2VyIHZhbHVlLiAgVXNlIGdldEludDY0CisgICAgICAgICAqIHRvIHJldHJp
ZXZlIHRoZSB2YWx1ZS4KKyAgICAgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICAgICAqLwor
ICAgICAgICBrSW50NjQsCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNlbGVjdG9yIGluZGlj
YXRpbmcgYSBVT2JqZWN0IHZhbHVlLiAgVXNlIGdldE9iamVjdCB0bworICAgICAgICAgKiByZXRy
aWV2ZSB0aGUgdmFsdWUuCisgICAgICAgICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAgICAgKi8K
KyAgICAgICAga09iamVjdAorICAgfTsKKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGEg
dHlwZSBvZiB0aGlzIEZvcm1hdHRhYmxlIG9iamVjdC4KKyAgICAgKiBAcmV0dXJuICAgIHRoZSBk
YXRhIHR5cGUgb2YgdGhpcyBGb3JtYXR0YWJsZSBvYmplY3QuCisgICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAgICovCisgICAgVHlwZSAgICAgICAgICAgIGdldFR5cGUodm9pZCkgY29uc3Q7Cisg
ICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBUUlVFIGlmIHRoZSBkYXRhIHR5cGUgb2YgdGhp
cyBGb3JtYXR0YWJsZSBvYmplY3QKKyAgICAgKiBpcyBrRG91YmxlLCBrTG9uZywga0ludDY0IG9y
IGtEZWNpbWFsTnVtYmVyLgorICAgICAqIEByZXR1cm4gVFJVRSBpZiB0aGlzIGlzIGEgcHVyZSBu
dW1lcmljIG9iamVjdAorICAgICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAqLworICAgIFVCb29s
ICAgICAgICAgICBpc051bWVyaWMoKSBjb25zdDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRz
IHRoZSBkb3VibGUgdmFsdWUgb2YgdGhpcyBvYmplY3QuIElmIHRoaXMgb2JqZWN0IGlzIG5vdCBv
ZiB0eXBlCisgICAgICoga0RvdWJsZSB0aGVuIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgorICAg
ICAqIEByZXR1cm4gICAgdGhlIGRvdWJsZSB2YWx1ZSBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8gCisgICAgZG91YmxlICAgICAgICAgIGdldERvdWJsZSh2
b2lkKSBjb25zdCB7IHJldHVybiBmVmFsdWUuZkRvdWJsZTsgfQorCisgICAgLyoqCisgICAgICog
R2V0cyB0aGUgZG91YmxlIHZhbHVlIG9mIHRoaXMgb2JqZWN0LiBJZiB0aGlzIG9iamVjdCBpcyBv
ZiB0eXBlCisgICAgICogbG9uZywgaW50NjQgb3IgRGVjaW1hbCBOdW1iZXIgdGhlbiBhIGNvbnZl
cnNpb24gaXMgcGVmb3JtZWQsIHdpdGgKKyAgICAgKiBwb3NzaWJsZSBsb3NzIG9mIHByZWNpc2lv
bi4gIElmIHRoZSB0eXBlIGlzIGtPYmplY3QgYW5kIHRoZQorICAgICAqIG9iamVjdCBpcyBhIE1l
YXN1cmUsIHRoZW4gdGhlIHJlc3VsdCBvZgorICAgICAqIGdldE51bWJlcigpLmdldERvdWJsZShz
dGF0dXMpIGlzIHJldHVybmVkLiAgSWYgdGhpcyBvYmplY3QgaXMKKyAgICAgKiBuZWl0aGVyIGEg
bnVtZXJpYyB0eXBlIG5vciBhIE1lYXN1cmUsIHRoZW4gMCBpcyByZXR1cm5lZCBhbmQKKyAgICAg
KiB0aGUgc3RhdHVzIGlzIHNldCB0byBVX0lOVkFMSURfRk9STUFUX0VSUk9SLgorICAgICAqIEBw
YXJhbSBzdGF0dXMgdGhlIGVycm9yIGNvZGUKKyAgICAgKiBAcmV0dXJuIHRoZSBkb3VibGUgdmFs
dWUgb2YgdGhpcyBvYmplY3QuCisgICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAgICovIAorICAg
IGRvdWJsZSAgICAgICAgICBnZXREb3VibGUoVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKwor
ICAgIC8qKgorICAgICAqIEdldHMgdGhlIGxvbmcgdmFsdWUgb2YgdGhpcyBvYmplY3QuIElmIHRo
aXMgb2JqZWN0IGlzIG5vdCBvZiB0eXBlCisgICAgICoga0xvbmcgdGhlbiB0aGUgcmVzdWx0IGlz
IHVuZGVmaW5lZC4KKyAgICAgKiBAcmV0dXJuICAgIHRoZSBsb25nIHZhbHVlIG9mIHRoaXMgb2Jq
ZWN0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLyAKKyAgICBpbnQzMl90ICAgICAg
ICAgZ2V0TG9uZyh2b2lkKSBjb25zdCB7IHJldHVybiAoaW50MzJfdClmVmFsdWUuZkludDY0OyB9
CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBsb25nIHZhbHVlIG9mIHRoaXMgb2JqZWN0LiBJ
ZiB0aGUgbWFnbml0dWRlIGlzIHRvbworICAgICAqIGxhcmdlIHRvIGZpdCBpbiBhIGxvbmcsIHRo
ZW4gdGhlIG1heGltdW0gb3IgbWluaW11bSBsb25nIHZhbHVlLAorICAgICAqIGFzIGFwcHJvcHJp
YXRlLCBpcyByZXR1cm5lZCBhbmQgdGhlIHN0YXR1cyBpcyBzZXQgdG8KKyAgICAgKiBVX0lOVkFM
SURfRk9STUFUX0VSUk9SLiAgSWYgdGhpcyBvYmplY3QgaXMgb2YgdHlwZSBrSW50NjQgYW5kCisg
ICAgICogaXQgZml0cyB3aXRoaW4gYSBsb25nLCB0aGVuIG5vIHByZWNpc2lvbiBpcyBsb3N0LiAg
SWYgaXQgaXMgb2YKKyAgICAgKiB0eXBlIGtEb3VibGUgb3Iga0RlY2ltYWxOdW1iZXIsIHRoZW4g
YSBjb252ZXJzaW9uIGlzIHBlZm9ybWVkLCB3aXRoCisgICAgICogdHJ1bmNhdGlvbiBvZiBhbnkg
ZnJhY3Rpb25hbCBwYXJ0LiAgSWYgdGhlIHR5cGUgaXMga09iamVjdCBhbmQKKyAgICAgKiB0aGUg
b2JqZWN0IGlzIGEgTWVhc3VyZSwgdGhlbiB0aGUgcmVzdWx0IG9mCisgICAgICogZ2V0TnVtYmVy
KCkuZ2V0TG9uZyhzdGF0dXMpIGlzIHJldHVybmVkLiAgSWYgdGhpcyBvYmplY3QgaXMKKyAgICAg
KiBuZWl0aGVyIGEgbnVtZXJpYyB0eXBlIG5vciBhIE1lYXN1cmUsIHRoZW4gMCBpcyByZXR1cm5l
ZCBhbmQKKyAgICAgKiB0aGUgc3RhdHVzIGlzIHNldCB0byBVX0lOVkFMSURfRk9STUFUX0VSUk9S
LgorICAgICAqIEBwYXJhbSBzdGF0dXMgdGhlIGVycm9yIGNvZGUKKyAgICAgKiBAcmV0dXJuICAg
IHRoZSBsb25nIHZhbHVlIG9mIHRoaXMgb2JqZWN0LgorICAgICAqIEBzdGFibGUgSUNVIDMuMAor
ICAgICAqLyAKKyAgICBpbnQzMl90ICAgICAgICAgZ2V0TG9uZyhVRXJyb3JDb2RlJiBzdGF0dXMp
IGNvbnN0OworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgaW50NjQgdmFsdWUgb2YgdGhpcyBv
YmplY3QuIElmIHRoaXMgb2JqZWN0IGlzIG5vdCBvZiB0eXBlCisgICAgICoga0ludDY0IHRoZW4g
dGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCisgICAgICogQHJldHVybiAgICB0aGUgaW50NjQgdmFs
dWUgb2YgdGhpcyBvYmplY3QuCisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICovIAorICAg
IGludDY0X3QgICAgICAgICBnZXRJbnQ2NCh2b2lkKSBjb25zdCB7IHJldHVybiBmVmFsdWUuZklu
dDY0OyB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBpbnQ2NCB2YWx1ZSBvZiB0aGlzIG9i
amVjdC4gSWYgdGhpcyBvYmplY3QgaXMgb2YgYSBudW1lcmljCisgICAgICogdHlwZSBhbmQgdGhl
IG1hZ25pdHVkZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIGFuIGludDY0LCB0aGVuCisgICAgICog
dGhlIG1heGltdW0gb3IgbWluaW11bSBpbnQ2NCB2YWx1ZSwgYXMgYXBwcm9wcmlhdGUsIGlzIHJl
dHVybmVkCisgICAgICogYW5kIHRoZSBzdGF0dXMgaXMgc2V0IHRvIFVfSU5WQUxJRF9GT1JNQVRf
RVJST1IuICBJZiB0aGUKKyAgICAgKiBtYWduaXR1ZGUgZml0cyBpbiBhbiBpbnQ2NCwgdGhlbiBh
IGNhc3RpbmcgY29udmVyc2lvbiBpcworICAgICAqIHBlZm9ybWVkLCB3aXRoIHRydW5jYXRpb24g
b2YgYW55IGZyYWN0aW9uYWwgcGFydC4gIElmIHRoZSB0eXBlCisgICAgICogaXMga09iamVjdCBh
bmQgdGhlIG9iamVjdCBpcyBhIE1lYXN1cmUsIHRoZW4gdGhlIHJlc3VsdCBvZgorICAgICAqIGdl
dE51bWJlcigpLmdldERvdWJsZShzdGF0dXMpIGlzIHJldHVybmVkLiAgSWYgdGhpcyBvYmplY3Qg
aXMKKyAgICAgKiBuZWl0aGVyIGEgbnVtZXJpYyB0eXBlIG5vciBhIE1lYXN1cmUsIHRoZW4gMCBp
cyByZXR1cm5lZCBhbmQKKyAgICAgKiB0aGUgc3RhdHVzIGlzIHNldCB0byBVX0lOVkFMSURfRk9S
TUFUX0VSUk9SLgorICAgICAqIEBwYXJhbSBzdGF0dXMgdGhlIGVycm9yIGNvZGUKKyAgICAgKiBA
cmV0dXJuICAgIHRoZSBpbnQ2NCB2YWx1ZSBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBAc3RhYmxl
IElDVSAzLjAKKyAgICAgKi8gCisgICAgaW50NjRfdCAgICAgICAgIGdldEludDY0KFVFcnJvckNv
ZGUmIHN0YXR1cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBEYXRlIHZhbHVl
IG9mIHRoaXMgb2JqZWN0LiBJZiB0aGlzIG9iamVjdCBpcyBub3Qgb2YgdHlwZQorICAgICAqIGtE
YXRlIHRoZW4gdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCisgICAgICogQHJldHVybiAgICB0aGUg
RGF0ZSB2YWx1ZSBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAg
Ki8gCisgICAgVURhdGUgICAgICAgICAgIGdldERhdGUoKSBjb25zdCB7IHJldHVybiBmVmFsdWUu
ZkRhdGU7IH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIERhdGUgdmFsdWUgb2YgdGhpcyBv
YmplY3QuICBJZiB0aGUgdHlwZSBpcyBub3QgYSBkYXRlLAorICAgICAqIHN0YXR1cyBpcyBzZXQg
dG8gVV9JTlZBTElEX0ZPUk1BVF9FUlJPUiBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcworICAgICAq
IHVuZGVmaW5lZC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIHRoZSBlcnJvciBjb2RlLgorICAgICAq
IEByZXR1cm4gICAgdGhlIERhdGUgdmFsdWUgb2YgdGhpcyBvYmplY3QuCisgICAgICogQHN0YWJs
ZSBJQ1UgMy4wCisgICAgICovIAorICAgICBVRGF0ZSAgICAgICAgICBnZXREYXRlKFVFcnJvckNv
ZGUmIHN0YXR1cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzdHJpbmcgdmFs
dWUgb2YgdGhpcyBvYmplY3QuIElmIHRoaXMgb2JqZWN0IGlzIG5vdCBvZiB0eXBlCisgICAgICog
a1N0cmluZyB0aGVuIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgorICAgICAqIEBwYXJhbSByZXN1
bHQgICAgT3V0cHV0IHBhcmFtIHRvIHJlY2VpdmUgdGhlIERhdGUgdmFsdWUgb2YgdGhpcyBvYmpl
Y3QuCisgICAgICogQHJldHVybiAgICAgICAgICBBIHJlZmVyZW5jZSB0byAncmVzdWx0Jy4KKyAg
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8gCisgICAgVW5pY29kZVN0cmluZyYgIGdldFN0
cmluZyhVbmljb2RlU3RyaW5nJiByZXN1bHQpIGNvbnN0CisgICAgICB7IHJlc3VsdD0qZlZhbHVl
LmZTdHJpbmc7IHJldHVybiByZXN1bHQ7IH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHN0
cmluZyB2YWx1ZSBvZiB0aGlzIG9iamVjdC4gSWYgdGhlIHR5cGUgaXMgbm90IGEKKyAgICAgKiBz
dHJpbmcsIHN0YXR1cyBpcyBzZXQgdG8gVV9JTlZBTElEX0ZPUk1BVF9FUlJPUiBhbmQgYSBib2d1
cworICAgICAqIHN0cmluZyBpcyByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gcmVzdWx0ICAgIE91
dHB1dCBwYXJhbSB0byByZWNlaXZlIHRoZSBEYXRlIHZhbHVlIG9mIHRoaXMgb2JqZWN0LgorICAg
ICAqIEBwYXJhbSBzdGF0dXMgICAgdGhlIGVycm9yIGNvZGUuIAorICAgICAqIEByZXR1cm4gICAg
ICAgICAgQSByZWZlcmVuY2UgdG8gJ3Jlc3VsdCcuCisgICAgICogQHN0YWJsZSBJQ1UgMy4wCisg
ICAgICovIAorICAgIFVuaWNvZGVTdHJpbmcmICBnZXRTdHJpbmcoVW5pY29kZVN0cmluZyYgcmVz
dWx0LCBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCisgICAgLyoqCisgICAgICogR2V0cyBh
IGNvbnN0IHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoaXMgb2JqZWN0LiBJZgor
ICAgICAqIHRoaXMgb2JqZWN0IGlzIG5vdCBvZiB0eXBlIGtTdHJpbmcgdGhlbiB0aGUgcmVzdWx0
IGlzCisgICAgICogdW5kZWZpbmVkLgorICAgICAqIEByZXR1cm4gICBhIGNvbnN0IHJlZmVyZW5j
ZSB0byB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoaXMgb2JqZWN0LgorICAgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgICAqLworICAgIGlubGluZSBjb25zdCBVbmljb2RlU3RyaW5nJiBnZXRTdHJpbmco
dm9pZCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgY29uc3QgcmVmZXJlbmNlIHRv
IHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhpcyBvYmplY3QuICBJZgorICAgICAqIHRoZSB0eXBlIGlz
IG5vdCBhIHN0cmluZywgc3RhdHVzIGlzIHNldCB0bworICAgICAqIFVfSU5WQUxJRF9GT1JNQVRf
RVJST1IgYW5kIHRoZSByZXN1bHQgaXMgYSBib2d1cyBzdHJpbmcuCisgICAgICogQHBhcmFtIHN0
YXR1cyAgICB0aGUgZXJyb3IgY29kZS4KKyAgICAgKiBAcmV0dXJuICAgYSBjb25zdCByZWZlcmVu
Y2UgdG8gdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBAc3RhYmxlIElD
VSAzLjAKKyAgICAgKi8KKyAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBnZXRTdHJpbmcoVUVycm9y
Q29kZSYgc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEdldHMgYSByZWZlcmVuY2Ug
dG8gdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGlzIG9iamVjdC4gSWYgdGhpcworICAgICAqIG9iamVj
dCBpcyBub3Qgb2YgdHlwZSBrU3RyaW5nIHRoZW4gdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCisg
ICAgICogQHJldHVybiAgIGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhpcyBv
YmplY3QuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgaW5saW5lIFVuaWNv
ZGVTdHJpbmcmIGdldFN0cmluZyh2b2lkKTsKKworICAgIC8qKgorICAgICAqIEdldHMgYSByZWZl
cmVuY2UgdG8gdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGlzIG9iamVjdC4gSWYgdGhlCisgICAgICog
dHlwZSBpcyBub3QgYSBzdHJpbmcsIHN0YXR1cyBpcyBzZXQgdG8gVV9JTlZBTElEX0ZPUk1BVF9F
UlJPUgorICAgICAqIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9ndXMgc3RyaW5nLgorICAgICAqIEBw
YXJhbSBzdGF0dXMgICAgdGhlIGVycm9yIGNvZGUuIAorICAgICAqIEByZXR1cm4gICBhIHJlZmVy
ZW5jZSB0byB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoaXMgb2JqZWN0LgorICAgICAqIEBzdGFibGUg
SUNVIDMuMAorICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcmIGdldFN0cmluZyhVRXJyb3JDb2Rl
JiBzdGF0dXMpOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgYXJyYXkgdmFsdWUgYW5kIGNv
dW50IG9mIHRoaXMgb2JqZWN0LiBJZiB0aGlzIG9iamVjdAorICAgICAqIGlzIG5vdCBvZiB0eXBl
IGtBcnJheSB0aGVuIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgorICAgICAqIEBwYXJhbSBjb3Vu
dCAgICBmaWxsLWluIHdpdGggdGhlIGNvdW50IG9mIHRoaXMgb2JqZWN0LgorICAgICAqIEByZXR1
cm4gICAgICAgICB0aGUgYXJyYXkgdmFsdWUgb2YgdGhpcyBvYmplY3QuCisgICAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAgICovIAorICAgIGNvbnN0IEZvcm1hdHRhYmxlKiBnZXRBcnJheShpbnQz
Ml90JiBjb3VudCkgY29uc3QKKyAgICAgIHsgY291bnQ9ZlZhbHVlLmZBcnJheUFuZENvdW50LmZD
b3VudDsgcmV0dXJuIGZWYWx1ZS5mQXJyYXlBbmRDb3VudC5mQXJyYXk7IH0KKworICAgIC8qKgor
ICAgICAqIEdldHMgdGhlIGFycmF5IHZhbHVlIGFuZCBjb3VudCBvZiB0aGlzIG9iamVjdC4gSWYg
dGhlIHR5cGUgaXMKKyAgICAgKiBub3QgYW4gYXJyYXksIHN0YXR1cyBpcyBzZXQgdG8gVV9JTlZB
TElEX0ZPUk1BVF9FUlJPUiwgY291bnQgaXMKKyAgICAgKiBzZXQgdG8gMCwgYW5kIHRoZSByZXN1
bHQgaXMgTlVMTC4KKyAgICAgKiBAcGFyYW0gY291bnQgICAgZmlsbC1pbiB3aXRoIHRoZSBjb3Vu
dCBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIHRoZSBlcnJvciBjb2RlLiAK
KyAgICAgKiBAcmV0dXJuICAgICAgICAgdGhlIGFycmF5IHZhbHVlIG9mIHRoaXMgb2JqZWN0Lgor
ICAgICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAqLyAKKyAgICBjb25zdCBGb3JtYXR0YWJsZSog
Z2V0QXJyYXkoaW50MzJfdCYgY291bnQsIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CisKKyAg
ICAvKioKKyAgICAgKiBBY2Nlc3NlcyB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgaW4gdGhlIGFycmF5
IHZhbHVlIG9mIHRoaXMKKyAgICAgKiBGb3JtYXR0YWJsZSBvYmplY3QuIElmIHRoaXMgb2JqZWN0
IGlzIG5vdCBvZiB0eXBlIGtBcnJheSB0aGVuCisgICAgICogdGhlIHJlc3VsdCBpcyB1bmRlZmlu
ZWQuCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBzcGVjaWZpZWQgaW5kZXguCisgICAgICogQHJl
dHVybiB0aGUgYWNjZXNzZWQgZWxlbWVudCBpbiB0aGUgYXJyYXkuCisgICAgICogQHN0YWJsZSBJ
Q1UgMi4wCisgICAgICovCisgICAgRm9ybWF0dGFibGUmICAgIG9wZXJhdG9yW10oaW50MzJfdCBp
bmRleCkgeyByZXR1cm4gZlZhbHVlLmZBcnJheUFuZENvdW50LmZBcnJheVtpbmRleF07IH0KKyAg
ICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgVU9iamVjdCBj
b250YWluZWQgd2l0aGluIHRoaXMKKyAgICAgKiBmb3JtYXR0YWJsZSwgb3IgTlVMTCBpZiB0aGlz
IG9iamVjdCBkb2VzIG5vdCBjb250YWluIGEgVU9iamVjdC4KKyAgICAgKiBAcmV0dXJuIGEgVU9i
amVjdCBwb2ludGVyLCBvciBOVUxMCisgICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAgICovCisg
ICAgY29uc3QgVU9iamVjdCogIGdldE9iamVjdCgpIGNvbnN0OworCisgICAgLyoqCisgICAgICog
UmV0dXJucyBhIG51bWVyaWMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgY29u
dGFpbmVkIHdpdGhpbiB0aGlzCisgICAgICogZm9ybWF0dGFibGUsIG9yIE5VTEwgaWYgdGhpcyBv
YmplY3QgZG9lcyBub3QgY29udGFpbiBudW1lcmljIHR5cGUuCisgICAgICogRm9yIHZhbHVlcyBv
YnRhaW5lZCBieSBwYXJzaW5nLCB0aGUgcmV0dXJuZWQgZGVjaW1hbCBudW1iZXIgcmV0YWlucwor
ICAgICAqIHRoZSBmdWxsIHByZWNpc2lvbiBhbmQgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIGlucHV0
LCB1bmNvbnN0cmFpbmVkIGJ5CisgICAgICogdGhlIGxpbWl0cyBvZiBhIGRvdWJsZSBmbG9hdGlu
ZyBwb2ludCBvciBhIDY0IGJpdCBpbnQuCisgICAgICogCisgICAgICogVGhpcyBmdW5jdGlvbiBp
cyBub3QgdGhyZWFkIHNhZmUsIGFuZCB0aGVyZm9yZSBpcyBub3QgZGVjbGFyZWQgY29uc3QsCisg
ICAgICogZXZlbiB0aG91Z2ggaXQgaXMgbG9naWNhbGx5IGNvbnN0LgorICAgICAqCisgICAgICog
UG9zc2libGUgZXJyb3JzIGluY2x1ZGUgVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUiwgYW5kCisg
ICAgICogVV9JTlZBTElEX1NUQVRFIGlmIHRoZSBmb3JtYXR0YWJsZSBvYmplY3QgaGFzIG5vdCBi
ZWVuIHNldCB0bworICAgICAqIGEgbnVtZXJpYyB0eXBlLgorICAgICAqCisgICAgICogQHBhcmFt
IHN0YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKiBAcmV0dXJuIHRoZSB1bmZvcm1hdHRlZCBz
dHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIuCisgICAgICogQHN0YWJsZSBJQ1UgNC40
CisgICAgICovCisgICAgU3RyaW5nUGllY2UgZ2V0RGVjaW1hbE51bWJlcihVRXJyb3JDb2RlICZz
dGF0dXMpOworCisgICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRvdWJsZSB2YWx1ZSBvZiB0aGlz
IG9iamVjdCBhbmQgY2hhbmdlcyB0aGUgdHlwZSB0bworICAgICAqIGtEb3VibGUuCisgICAgICog
QHBhcmFtIGQgICAgdGhlIG5ldyBkb3VibGUgdmFsdWUgdG8gYmUgc2V0LgorICAgICAqIEBzdGFi
bGUgSUNVIDIuMAorICAgICAqLyAKKyAgICB2b2lkICAgICAgICAgICAgc2V0RG91YmxlKGRvdWJs
ZSBkKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGxvbmcgdmFsdWUgb2YgdGhpcyBvYmpl
Y3QgYW5kIGNoYW5nZXMgdGhlIHR5cGUgdG8KKyAgICAgKiBrTG9uZy4KKyAgICAgKiBAcGFyYW0g
bCAgICB0aGUgbmV3IGxvbmcgdmFsdWUgdG8gYmUgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgICAqLyAKKyAgICB2b2lkICAgICAgICAgICAgc2V0TG9uZyhpbnQzMl90IGwpOworCisg
ICAgLyoqCisgICAgICogU2V0cyB0aGUgaW50NjQgdmFsdWUgb2YgdGhpcyBvYmplY3QgYW5kIGNo
YW5nZXMgdGhlIHR5cGUgdG8KKyAgICAgKiBrSW50NjQuCisgICAgICogQHBhcmFtIGxsICAgIHRo
ZSBuZXcgaW50NjQgdmFsdWUgdG8gYmUgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuOAorICAg
ICAqLyAKKyAgICB2b2lkICAgICAgICAgICAgc2V0SW50NjQoaW50NjRfdCBsbCk7CisKKyAgICAv
KioKKyAgICAgKiBTZXRzIHRoZSBEYXRlIHZhbHVlIG9mIHRoaXMgb2JqZWN0IGFuZCBjaGFuZ2Vz
IHRoZSB0eXBlIHRvCisgICAgICoga0RhdGUuCisgICAgICogQHBhcmFtIGQgICAgdGhlIG5ldyBE
YXRlIHZhbHVlIHRvIGJlIHNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8gCisg
ICAgdm9pZCAgICAgICAgICAgIHNldERhdGUoVURhdGUgZCk7CisKKyAgICAvKioKKyAgICAgKiBT
ZXRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhpcyBvYmplY3QgYW5kIGNoYW5nZXMgdGhlIHR5cGUg
dG8KKyAgICAgKiBrU3RyaW5nLgorICAgICAqIEBwYXJhbSBzdHJpbmdUb0NvcHkgICAgdGhlIG5l
dyBzdHJpbmcgdmFsdWUgdG8gYmUgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAq
LyAKKyAgICB2b2lkICAgICAgICAgICAgc2V0U3RyaW5nKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHN0
cmluZ1RvQ29weSk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBhcnJheSB2YWx1ZSBhbmQg
Y291bnQgb2YgdGhpcyBvYmplY3QgYW5kIGNoYW5nZXMgdGhlCisgICAgICogdHlwZSB0byBrQXJy
YXkuCisgICAgICogQHBhcmFtIGFycmF5ICAgIHRoZSBhcnJheSB2YWx1ZS4KKyAgICAgKiBAcGFy
YW0gY291bnQgICAgdGhlIG51bWJlciBvZiBhcnJheSBlbGVtZW50cyB0byBiZSBjb3BpZWQuCisg
ICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovIAorICAgIHZvaWQgICAgICAgICAgICBzZXRB
cnJheShjb25zdCBGb3JtYXR0YWJsZSogYXJyYXksIGludDMyX3QgY291bnQpOworCisgICAgLyoq
CisgICAgICogU2V0cyBhbmQgYWRvcHRzIHRoZSBzdHJpbmcgdmFsdWUgYW5kIGNvdW50IG9mIHRo
aXMgb2JqZWN0IGFuZAorICAgICAqIGNoYW5nZXMgdGhlIHR5cGUgdG8ga0FycmF5LgorICAgICAq
IEBwYXJhbSBzdHJpbmdUb0Fkb3B0ICAgIHRoZSBuZXcgc3RyaW5nIHZhbHVlIHRvIGJlIGFkb3B0
ZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovIAorICAgIHZvaWQgICAgICAgICAg
ICBhZG9wdFN0cmluZyhVbmljb2RlU3RyaW5nKiBzdHJpbmdUb0Fkb3B0KTsKKworICAgIC8qKgor
ICAgICAqIFNldHMgYW5kIGFkb3B0cyB0aGUgYXJyYXkgdmFsdWUgYW5kIGNvdW50IG9mIHRoaXMg
b2JqZWN0IGFuZAorICAgICAqIGNoYW5nZXMgdGhlIHR5cGUgdG8ga0FycmF5LgorICAgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgICAqLyAKKyAgICB2b2lkICAgICAgICAgICAgYWRvcHRBcnJheShG
b3JtYXR0YWJsZSogYXJyYXksIGludDMyX3QgY291bnQpOworICAgICAgIAorICAgIC8qKgorICAg
ICAqIFNldHMgYW5kIGFkb3B0cyB0aGUgVU9iamVjdCB2YWx1ZSBvZiB0aGlzIG9iamVjdCBhbmQg
Y2hhbmdlcworICAgICAqIHRoZSB0eXBlIHRvIGtPYmplY3QuICBBZnRlciB0aGlzIGNhbGwsIHRo
ZSBjYWxsZXIgbXVzdCBub3QKKyAgICAgKiBkZWxldGUgdGhlIGdpdmVuIG9iamVjdC4KKyAgICAg
KiBAcGFyYW0gb2JqZWN0VG9BZG9wdCB0aGUgVU9iamVjdCB2YWx1ZSB0byBiZSBhZG9wdGVkCisg
ICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGFkb3B0
T2JqZWN0KFVPYmplY3QqIG9iamVjdFRvQWRvcHQpOworCisgICAgLyoqCisgICAgICogU2V0cyB0
aGUgdGhlIG51bWVyaWMgdmFsdWUgZnJvbSBhIGRlY2ltYWwgbnVtYmVyIHN0cmluZywgYW5kIGNo
YW5nZXMKKyAgICAgKiB0aGUgdHlwZSB0byB0byBhIG51bWVyaWMgdHlwZSBhcHByb3ByaWF0ZSBm
b3IgdGhlIG51bWJlci4gIAorICAgICAqIFRoZSBzeW50YXggb2YgdGhlIG51bWJlciBpcyBhICJu
dW1lcmljIHN0cmluZyIKKyAgICAgKiBhcyBkZWZpbmVkIGluIHRoZSBEZWNpbWFsIEFyaXRobWV0
aWMgU3BlY2lmaWNhdGlvbiwgYXZhaWxhYmxlIGF0CisgICAgICogaHR0cDovL3NwZWxlb3Ryb3Zl
LmNvbS9kZWNpbWFsCisgICAgICogVGhlIGZ1bGwgcHJlY2lzaW9uIGFuZCByYW5nZSBvZiB0aGUg
aW5wdXQgbnVtYmVyIHdpbGwgYmUgcmV0YWluZWQsCisgICAgICogZXZlbiB3aGVuIGl0IGV4Y2Vl
ZHMgd2hhdCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgYSBkb3VibGUgb3IgYW4gaW50NjQuCisgICAg
ICoKKyAgICAgKiBAcGFyYW0gbnVtYmVyU3RyaW5nICBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgdW5mb3JtYXR0ZWQgZGVjaW1hbCBudW1iZXIuCisgICAgICogQHBhcmFtIHN0YXR1cyAg
ICAgICAgdGhlIGVycm9yIGNvZGUuICBTZXQgdG8gVV9JTlZBTElEX0ZPUk1BVF9FUlJPUiBpZiB0
aGUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyBzdHJpbmcgaXMgbm90IGEg
dmFsaWQgZGVjaW1hbCBudW1iZXIuCisgICAgICogQHN0YWJsZSBJQ1UgNC40CisgICAgICovCisg
ICAgdm9pZCAgICAgICAgICAgICBzZXREZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZ1BpZWNlICZu
dW1iZXJTdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgJnN0YXR1cyk7CisKKyAgICAvKioKKyAgICAgKiBJQ1UgInBvb3IgbWFuJ3MgUlRUSSIs
IHJldHVybnMgYSBVQ2xhc3NJRCBmb3IgdGhlIGFjdHVhbCBjbGFzcy4KKyAgICAgKgorICAgICAq
IEBzdGFibGUgSUNVIDIuMgorICAgICAqLworICAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0RHluYW1p
Y0NsYXNzSUQoKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIElDVSAicG9vciBtYW4ncyBSVFRJ
IiwgcmV0dXJucyBhIFVDbGFzc0lEIGZvciB0aGlzIGNsYXNzLgorICAgICAqCisgICAgICogQHN0
YWJsZSBJQ1UgMi4yCisgICAgICovCisgICAgc3RhdGljIFVDbGFzc0lEIFVfRVhQT1JUMiBnZXRT
dGF0aWNDbGFzc0lEKCk7CisKKyAgICAvKioKKyAgICAgKiBEZXByZWNhdGVkIHZhcmlhbnQgb2Yg
Z2V0TG9uZyhVRXJyb3JDb2RlJikuCisgICAgICogQHBhcmFtIHN0YXR1cyB0aGUgZXJyb3IgY29k
ZQorICAgICAqIEByZXR1cm4gdGhlIGxvbmcgdmFsdWUgb2YgdGhpcyBvYmplY3QuCisgICAgICog
QGRlcHJlY2F0ZWQgSUNVIDMuMCB1c2UgZ2V0TG9uZyhVRXJyb3JDb2RlJikgaW5zdGVhZAorICAg
ICAqLyAKKyAgICBpbmxpbmUgaW50MzJfdCBnZXRMb25nKFVFcnJvckNvZGUqIHN0YXR1cykgY29u
c3Q7CisKKyAgICAvKioKKyAgICAgKiBJbnRlcm5hbCBmdW5jdGlvbiwgZG8gbm90IHVzZS4KKyAg
ICAgKiBUT0RPOiAgZmlndXJlIG91dCBob3cgdG8gbWFrZSB0aGlzIGJlIG5vbi1wdWJsaWMuCisg
ICAgICogICAgICAgIE51bWJlckZvcm1hdDo6Zm9ybWF0KEZvcm1hdHRhYmxlLCAuLi4KKyAgICAg
KiAgICAgICAgbmVlZHMgdG8gZ2V0IGF0IHRoZSBEaWdpdExpc3QsIGlmIGl0IGV4aXN0cywgZm9y
CisgICAgICogICAgICAgIGJpZyBkZWNpbWFsIGZvcm1hdHRpbmcuCisgICAgICogIEBpbnRlcm5h
bAorICAgICAqLworICAgIERpZ2l0TGlzdCAqZ2V0RGlnaXRMaXN0KCkgY29uc3QgeyByZXR1cm4g
ZkRlY2ltYWxOdW07fTsKKworICAgIC8qKgorICAgICAqICBBZG9wdCwgYW5kIHNldCB2YWx1ZSBm
cm9tLCBhIERpZ2l0TGlzdAorICAgICAqICAgICBJbnRlcm5hbCBGdW5jdGlvbiwgZG8gbm90IHVz
ZS4KKyAgICAgKiAgQHBhcmFtIGRsIHRoZSBEaWdpdCBMaXN0IHRvIGJlIGFkb3B0ZWQKKyAgICAg
KiAgQGludGVybmFsCisgICAgICovCisgICAgdm9pZCBhZG9wdERpZ2l0TGlzdChEaWdpdExpc3Qg
KmRsKTsKKworcHJpdmF0ZToKKyAgICAvKioKKyAgICAgKiBDbGVhbnMgdXAgdGhlIG1lbW9yeSBm
b3IgdW53YW50ZWQgdmFsdWVzLiAgRm9yIGV4YW1wbGUsIHRoZSBhZG9wdGVkCisgICAgICogc3Ry
aW5nIG9yIGFycmF5IG9iamVjdHMuCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGRpc3Bv
c2Uodm9pZCk7CisKKyAgICAvKioKKyAgICAgKiBDb21tb24gaW5pdGlhbGl6YXRpb24sIGZvciB1
c2UgYnkgY29uc3RydWN0b3JzLgorICAgICAqLworICAgIHZvaWQgICAgICAgICAgICBpbml0KCk7
CisKKyAgICBVbmljb2RlU3RyaW5nKiBnZXRCb2d1cygpIGNvbnN0OworCisgICAgdW5pb24gewor
ICAgICAgICBVT2JqZWN0KiAgICAgICAgZk9iamVjdDsKKyAgICAgICAgVW5pY29kZVN0cmluZyog
IGZTdHJpbmc7CisgICAgICAgIGRvdWJsZSAgICAgICAgICBmRG91YmxlOworICAgICAgICBpbnQ2
NF90ICAgICAgICAgZkludDY0OworICAgICAgICBVRGF0ZSAgICAgICAgICAgZkRhdGU7CisgICAg
ICAgIHN0cnVjdCB7CisgICAgICAgICAgRm9ybWF0dGFibGUqICBmQXJyYXk7CisgICAgICAgICAg
aW50MzJfdCAgICAgICBmQ291bnQ7CisgICAgICAgIH0gICAgICAgICAgICAgICBmQXJyYXlBbmRD
b3VudDsKKyAgICB9IGZWYWx1ZTsKKworICAgIENoYXJTdHJpbmcgICAgICAgICAgICpmRGVjaW1h
bFN0cjsKKyAgICBEaWdpdExpc3QgICAgICAgICAgICAqZkRlY2ltYWxOdW07CisKKyAgICBUeXBl
ICAgICAgICAgICAgICAgIGZUeXBlOworICAgIFVuaWNvZGVTdHJpbmcgICAgICAgZkJvZ3VzOyAv
LyBCb2d1cyBzdHJpbmcgd2hlbiBpdCdzIG5lZWRlZC4KK307CisKK2lubGluZSBVRGF0ZSBGb3Jt
YXR0YWJsZTo6Z2V0RGF0ZShVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0IHsKKyAgICBpZiAoZlR5
cGUgIT0ga0RhdGUpIHsKKyAgICAgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAg
ICAgICBzdGF0dXMgPSBVX0lOVkFMSURfRk9STUFUX0VSUk9SOworICAgICAgICB9CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gZlZhbHVlLmZEYXRlOworfQorCitpbmxpbmUg
Y29uc3QgVW5pY29kZVN0cmluZyYgRm9ybWF0dGFibGU6OmdldFN0cmluZyh2b2lkKSBjb25zdCB7
CisgICAgcmV0dXJuICpmVmFsdWUuZlN0cmluZzsKK30KKworaW5saW5lIFVuaWNvZGVTdHJpbmcm
IEZvcm1hdHRhYmxlOjpnZXRTdHJpbmcodm9pZCkgeworICAgIHJldHVybiAqZlZhbHVlLmZTdHJp
bmc7Cit9CisKK2lubGluZSBpbnQzMl90IEZvcm1hdHRhYmxlOjpnZXRMb25nKFVFcnJvckNvZGUq
IHN0YXR1cykgY29uc3QgeworICAgIHJldHVybiBnZXRMb25nKCpzdGF0dXMpOworfQorCitVX05B
TUVTUEFDRV9FTkQKKworI2VuZGlmIC8qICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICovCisK
KyNlbmRpZiAvL19GTVRBQkxFCisvL2VvZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ljdS91bmljb2RlL2Zvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmlj
b2RlL2Zvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NTFjOWU0NGU1ZDFjZTc2NGZkNjVmYTBkNTZkMzI0
YjRmZDEwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3Vu
aWNvZGUvZm9ybWF0LmgKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAxMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgorKiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogRmlsZSBGT1JNQVQuSAorKgorKiBNb2RpZmlj
YXRpb24gSGlzdG9yeToKKyoKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlwdGlv
bgorKiAgIDAyLzE5Lzk3ICAgIGFsaXUgICAgICAgIENvbnZlcnRlZCBmcm9tIGphdmEuCisqICAg
MDMvMTcvOTcgICAgY2xodWFuZyAgICAgVXBkYXRlZCBwZXIgQysrIGltcGxlbWVudGF0aW9uLgor
KiAgIDAzLzI3Lzk3ICAgIGhlbGVuYSAgICAgIFVwZGF0ZWQgdG8gcGFzcyB0aGUgc2ltcGxlIHRl
c3QgYWZ0ZXIgY29kZSByZXZpZXcuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCisvLyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBq
YXZhIHNvdXJjZSBmaWxlIEZvcm1hdC5qYXZhCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisj
aWZuZGVmIEZPUk1BVF9ICisjZGVmaW5lIEZPUk1BVF9ICisKKworI2luY2x1ZGUgInVuaWNvZGUv
dXR5cGVzLmgiCisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogQmFzZSBjbGFz
cyBmb3IgYWxsIGZvcm1hdHMuIAorICovCisKKyNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HCisK
KyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUgInVuaWNvZGUvZm10YWJsZS5o
IgorI2luY2x1ZGUgInVuaWNvZGUvZmllbGRwb3MuaCIKKyNpbmNsdWRlICJ1bmljb2RlL2Zwb3Np
dGVyLmgiCisjaW5jbHVkZSAidW5pY29kZS9wYXJzZXBvcy5oIgorI2luY2x1ZGUgInVuaWNvZGUv
cGFyc2VlcnIuaCIgCisjaW5jbHVkZSAidW5pY29kZS9sb2NpZC5oIgorCitVX05BTUVTUEFDRV9C
RUdJTgorCisvKioKKyAqIEJhc2UgY2xhc3MgZm9yIGFsbCBmb3JtYXRzLiAgVGhpcyBpcyBhbiBh
YnN0cmFjdCBiYXNlIGNsYXNzIHdoaWNoCisgKiBzcGVjaWZpZXMgdGhlIHByb3RvY29sIGZvciBj
bGFzc2VzIHdoaWNoIGNvbnZlcnQgb3RoZXIgb2JqZWN0cyBvcgorICogdmFsdWVzLCBzdWNoIGFz
IG51bWVyaWMgdmFsdWVzIGFuZCBkYXRlcywgYW5kIHRoZWlyIHN0cmluZworICogcmVwcmVzZW50
YXRpb25zLiAgSW4gc29tZSBjYXNlcyB0aGVzZSByZXByZXNlbnRhdGlvbnMgbWF5IGJlCisgKiBs
b2NhbGl6ZWQgb3IgY29udGFpbiBsb2NhbGl6ZWQgY2hhcmFjdGVycyBvciBzdHJpbmdzLiAgRm9y
IGV4YW1wbGUsCisgKiBhIG51bWVyaWMgZm9ybWF0dGVyIHN1Y2ggYXMgRGVjaW1hbEZvcm1hdCBt
YXkgY29udmVydCBhIG51bWVyaWMKKyAqIHZhbHVlIHN1Y2ggYXMgMTIzNDUgdG8gdGhlIHN0cmlu
ZyAiJDEyLDM0NSIuICBJdCBtYXkgYWxzbyBwYXJzZQorICogdGhlIHN0cmluZyBiYWNrIGludG8g
YSBudW1lcmljIHZhbHVlLiAgQSBkYXRlIGFuZCB0aW1lIGZvcm1hdHRlcgorICogbGlrZSBTaW1w
bGVEYXRlRm9ybWF0IG1heSByZXByZXNlbnQgYSBzcGVjaWZpYyBkYXRlLCBlbmNvZGVkCisgKiBu
dW1lcmljYWxseSwgYXMgYSBzdHJpbmcgc3VjaCBhcyAiV2VkbmVzZGF5LCBGZWJydWFyeSAyNiwg
MTk5NyBBRCIuCisgKiA8UD4KKyAqIE1hbnkgb2YgdGhlIGNvbmNyZXRlIHN1YmNsYXNzZXMgb2Yg
Rm9ybWF0IGVtcGxveSB0aGUgbm90aW9uIG9mCisgKiBhIHBhdHRlcm4uICBBIHBhdHRlcm4gaXMg
YSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJ1bGVzIHdoaWNoCisgKiBnb3Zlcm4gdGhl
IGludGVyY29udmVyc2lvbiBiZXR3ZWVuIHZhbHVlcyBhbmQgc3RyaW5ncy4gIEZvciBleGFtcGxl
LAorICogYSBEZWNpbWFsRm9ybWF0IG9iamVjdCBtYXkgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBw
YXR0ZXJuCisgKiAiJCMsIyMwLjAwOygkIywjIzAuMDApIiwgd2hpY2ggaXMgYSBjb21tb24gVVMg
RW5nbGlzaCBmb3JtYXQgZm9yCisgKiBjdXJyZW5jeSB2YWx1ZXMsIHlpZWxkaW5nIHN0cmluZ3Mg
c3VjaCBhcyAiJDEsMjM0LjQ1IiBmb3IgMTIzNC40NSwKKyAqIGFuZCAiKCQ5ODcuNjUpIiBmb3Ig
OTg3LjY1NDMuICBUaGUgc3BlY2lmaWMgc3ludGF4IG9mIGEgcGF0dGVybgorICogaXMgZGVmaW5l
ZCBieSBlYWNoIHN1YmNsYXNzLgorICogPFA+CisgKiBFdmVuIHRob3VnaCBtYW55IHN1YmNsYXNz
ZXMgdXNlIHBhdHRlcm5zLCB0aGUgbm90aW9uIG9mIGEgcGF0dGVybgorICogaXMgbm90IGluaGVy
ZW50IHRvIEZvcm1hdCBjbGFzc2VzIGluIGdlbmVyYWwsIGFuZCBpcyBub3QgcGFydCBvZgorICog
dGhlIGV4cGxpY2l0IGJhc2UgY2xhc3MgcHJvdG9jb2wuCisgKiA8UD4KKyAqIFR3byBjb21wbGV4
IGZvcm1hdHRpbmcgY2xhc3NlcyBiZWFyIG1lbnRpb25pbmcuICBUaGVzZSBhcmUKKyAqIE1lc3Nh
Z2VGb3JtYXQgYW5kIENob2ljZUZvcm1hdC4gIENob2ljZUZvcm1hdCBpcyBhIHN1YmNsYXNzIG9m
CisgKiBOdW1iZXJGb3JtYXQgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIGZvcm1hdCBkaWZmZXJl
bnQgbnVtYmVyIHJhbmdlcworICogYXMgc3RyaW5ncy4gIEZvciBpbnN0YW5jZSwgMCBtYXkgYmUg
cmVwcmVzZW50ZWQgYXMgIm5vIGZpbGVzIiwgMSBhcworICogIm9uZSBmaWxlIiwgYW5kIGFueSBu
dW1iZXIgZ3JlYXRlciB0aGFuIDEgYXMgIm1hbnkgZmlsZXMiLgorICogTWVzc2FnZUZvcm1hdCBp
cyBhIGZvcm1hdHRlciB3aGljaCB1dGlsaXplcyBvdGhlciBGb3JtYXQgb2JqZWN0cyB0bworICog
Zm9ybWF0IGEgc3RyaW5nIGNvbnRhaW5pbmcgd2l0aCBtdWx0aXBsZSB2YWx1ZXMuICBGb3IgaW5z
dGFuY2UsCisgKiBBIE1lc3NhZ2VGb3JtYXQgb2JqZWN0IG1pZ2h0IHByb2R1Y2UgdGhlIHN0cmlu
ZyAiVGhlcmUgYXJlIG5vIGZpbGVzCisgKiBvbiB0aGUgZGlzayBNeURpc2sgb24gRmVicnVhcnkg
MjcsIDE5OTcuIiBnaXZlbiB0aGUgYXJndW1lbnRzIDAsCisgKiAiTXlEaXNrIiwgYW5kIHRoZSBk
YXRlIHZhbHVlIG9mIDIvMjcvOTcuICBTZWUgdGhlIENob2ljZUZvcm1hdAorICogYW5kIE1lc3Nh
Z2VGb3JtYXQgaGVhZGVycyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKyAqIDxQPgorICogSWYg
Zm9ybWF0dGluZyBpcyB1bnN1Y2Nlc3NmdWwsIGEgZmFpbGluZyBVRXJyb3JDb2RlIGlzIHJldHVy
bmVkIHdoZW4KKyAqIHRoZSBGb3JtYXQgY2Fubm90IGZvcm1hdCB0aGUgdHlwZSBvZiBvYmplY3Qs
IG90aGVyd2lzZSBpZiB0aGVyZSBpcworICogc29tZXRoaW5nIGlsbGZvcm1lZCBhYm91dCB0aGUg
dGhlIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyCisgKiAweEZGRkQgaXMgcmV0dXJuZWQu
CisgKiA8UD4KKyAqIElmIHRoZXJlIGlzIG5vIG1hdGNoIHdoZW4gcGFyc2luZywgYSBwYXJzZSBm
YWlsdXJlIFVFcnJvckNvZGUgaXMKKyAqIHJldHVyZWQgZm9yIG1ldGhvZHMgd2hpY2ggdGFrZSBu
byBQYXJzZVBvc2l0aW9uLiAgRm9yIHRoZSBtZXRob2QKKyAqIHRoYXQgdGFrZXMgYSBQYXJzZVBv
c2l0aW9uLCB0aGUgaW5kZXggcGFyYW1ldGVyIGlzIGxlZnQgdW5jaGFuZ2VkLgorICogPFA+Cisg
KiA8ZW0+VXNlciBzdWJjbGFzc2VzIGFyZSBub3Qgc3VwcG9ydGVkLjwvZW0+IFdoaWxlIGNsaWVu
dHMgbWF5IHdyaXRlCisgKiBzdWJjbGFzc2VzLCBzdWNoIGNvZGUgd2lsbCBub3QgbmVjZXNzYXJp
bHkgd29yayBhbmQgd2lsbCBub3QgYmUKKyAqIGd1YXJhbnRlZWQgdG8gd29yayBzdGFibHkgZnJv
bSByZWxlYXNlIHRvIHJlbGVhc2UuCisgKi8KK2NsYXNzIFVfSTE4Tl9BUEkgRm9ybWF0IDogcHVi
bGljIFVPYmplY3QgeworcHVibGljOgorCisgICAgLyoqIERlc3RydWN0b3IKKyAgICAgKiBAc3Rh
YmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICB2aXJ0dWFsIH5Gb3JtYXQoKTsKKworICAgIC8qKgor
ICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBGb3JtYXQgb2JqZWN0cyBhcmUgc2VtYW50
aWNhbGx5IGVxdWFsLgorICAgICAqIE9iamVjdHMgb2YgZGlmZmVyZW50IHN1YmNsYXNzZXMgYXJl
IGNvbnNpZGVyZWQgdW5lcXVhbC4KKyAgICAgKiBAcGFyYW0gb3RoZXIgICAgdGhlIG9iamVjdCB0
byBiZSBjb21wYXJlZCB3aXRoLgorICAgICAqIEByZXR1cm4gICAgICAgICBSZXR1cm4gdHJ1ZSBp
ZiB0aGUgZ2l2ZW4gRm9ybWF0IG9iamVjdHMgYXJlIHNlbWFudGljYWxseSBlcXVhbC4KKyAgICAg
KiAgICAgICAgICAgICAgICAgT2JqZWN0cyBvZiBkaWZmZXJlbnQgc3ViY2xhc3NlcyBhcmUgY29u
c2lkZXJlZCB1bmVxdWFsLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZp
cnR1YWwgVUJvb2wgb3BlcmF0b3I9PShjb25zdCBGb3JtYXQmIG90aGVyKSBjb25zdCA9IDA7CisK
KyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gRm9ybWF0IG9iamVjdHMg
YXJlIG5vdCBzZW1hbnRpY2FsbHkKKyAgICAgKiBlcXVhbC4KKyAgICAgKiBAcGFyYW0gb3RoZXIg
ICAgdGhlIG9iamVjdCB0byBiZSBjb21wYXJlZCB3aXRoLgorICAgICAqIEByZXR1cm4gICAgICAg
ICBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gRm9ybWF0IG9iamVjdHMgYXJlIG5vdCBzZW1hbnRp
Y2FsbHkuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgVUJvb2wgb3BlcmF0
b3IhPShjb25zdCBGb3JtYXQmIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhl
cik7IH0KKworICAgIC8qKgorICAgICAqIENsb25lIHRoaXMgb2JqZWN0IHBvbHltb3JwaGljYWxs
eS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKKyAgICAgKiBmb3IgZGVsZXRpbmcgdGhlIHJl
c3VsdCB3aGVuIGRvbmUuCisgICAgICogQHJldHVybiAgICBBIGNvcHkgb2YgdGhlIG9iamVjdAor
ICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZpcnR1YWwgRm9ybWF0KiBjbG9u
ZSgpIGNvbnN0ID0gMDsKKworICAgIC8qKgorICAgICAqIEZvcm1hdHMgYW4gb2JqZWN0IHRvIHBy
b2R1Y2UgYSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb2JqICAgICAgIFRoZSBvYmpl
Y3QgdG8gZm9ybWF0LgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0
byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBl
bmRlZCB0byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1
dCBwYXJhbWV0ZXIgZmlsbGVkIGluIHdpdGggc3VjY2VzcyBvciBmYWlsdXJlIHN0YXR1cy4KKyAg
ICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4K
KyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBVbmljb2RlU3RyaW5nJiBmb3Jt
YXQoY29uc3QgRm9ybWF0dGFibGUmIG9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Y29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNv
ZGUmIHN0YXR1cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYW4gb2JqZWN0IHRv
IHByb2R1Y2UgYSBzdHJpbmcuICBUaGlzIGlzIGEgcHVyZSB2aXJ0dWFsIG1ldGhvZCB3aGljaAor
ICAgICAqIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQuIFRoaXMgbWV0aG9kIGFsbG93cyBwb2x5
bW9ycGhpYyBmb3JtYXR0aW5nCisgICAgICogb2YgRm9ybWF0dGFibGUgb2JqZWN0cy4gSWYgYSBz
dWJjbGFzcyBvZiBGb3JtYXQgcmVjZWl2ZXMgYSBGb3JtYXR0YWJsZQorICAgICAqIG9iamVjdCB0
eXBlIGl0IGRvZXNuJ3QgaGFuZGxlIChlLmcuLCBpZiBhIG51bWVyaWMgRm9ybWF0dGFibGUgaXMg
cGFzc2VkCisgICAgICogdG8gYSBEYXRlRm9ybWF0IG9iamVjdCkgdGhlbiBpdCByZXR1cm5zIGEg
ZmFpbGluZyBVRXJyb3JDb2RlLgorICAgICAqCisgICAgICogQHBhcmFtIG9iaiAgICAgICBUaGUg
b2JqZWN0IHRvIGZvcm1hdC4KKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0
ZXIgdG8gcmVjZWl2ZSByZXN1bHQuCisgICAgICogICAgICAgICAgICAgICAgICBSZXN1bHQgaXMg
YXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCisgICAgICogQHBhcmFtIHBvcyAgICAgICBP
biBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgorICAgICAqICAgICAgICAg
ICAgICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgor
ICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3Mv
ZmFpbHVyZSBzdGF0dXMuCisgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2Fw
cGVuZFRvJyBwYXJhbWV0ZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAg
dmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgRm9ybWF0dGFibGUmIG9iaiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uJiBwb3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25z
dCA9IDA7CisgICAgLyoqCisgICAgICogRm9ybWF0IGFuIG9iamVjdCB0byBwcm9kdWNlIGEgc3Ry
aW5nLiAgU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcworICAgICAqIG1ldGhvZC4gVGhp
cyBtZXRob2QgYWxsb3dzIHBvbHltb3JwaGljIGZvcm1hdHRpbmcgb2YgRm9ybWF0dGFibGUgb2Jq
ZWN0cy4KKyAgICAgKiBJZiBhIHN1YmNsYXNzIG9mIEZvcm1hdCByZWNlaXZlcyBhIEZvcm1hdHRh
YmxlIG9iamVjdCB0eXBlIGl0IGRvZXNuJ3QKKyAgICAgKiBoYW5kbGUgKGUuZy4sIGlmIGEgbnVt
ZXJpYyBGb3JtYXR0YWJsZSBpcyBwYXNzZWQgdG8gYSBEYXRlRm9ybWF0IG9iamVjdCkKKyAgICAg
KiB0aGVuIGl0IHJldHVybnMgYSBmYWlsaW5nIFVFcnJvckNvZGUuCisgICAgICoKKyAgICAgKiBA
cGFyYW0gb2JqICAgICAgIFRoZSBvYmplY3QgdG8gZm9ybWF0LgorICAgICAqIEBwYXJhbSBhcHBl
bmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAg
ICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGluZyBjb250ZW50cy4KKyAgICAg
KiBAcGFyYW0gcG9zSXRlciAgIE9uIHJldHVybiwgY2FuIGJlIHVzZWQgdG8gaXRlcmF0ZSBvdmVy
IHBvc2l0aW9ucworICAgICAqICAgICAgICAgICAgICAgICAgb2YgZmllbGRzIGdlbmVyYXRlZCBi
eSB0aGlzIGZvcm1hdCBjYWxsLgorICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFt
IGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCisgICAgICogQHJldHVybiAgICAg
ICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCisgICAgICogQHN0YWJsZSBJ
Q1UgNC40CisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3Qg
Rm9ybWF0dGFibGUmIG9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlj
b2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWVsZFBvc2l0aW9uSXRlcmF0b3IqIHBvc0l0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFBh
cnNlIGEgc3RyaW5nIHRvIHByb2R1Y2UgYW4gb2JqZWN0LiAgVGhpcyBpcyBhIHB1cmUgdmlydHVh
bAorICAgICAqIG1ldGhvZCB3aGljaCBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50LiAgVGhpcyBt
ZXRob2QgYWxsb3dzCisgICAgICogcG9seW1vcnBoaWMgcGFyc2luZyBvZiBzdHJpbmdzIGludG8g
Rm9ybWF0dGFibGUgb2JqZWN0cy4KKyAgICAgKiA8UD4KKyAgICAgKiBCZWZvcmUgY2FsbGluZywg
c2V0IHBhcnNlX3Bvcy5pbmRleCB0byB0aGUgb2Zmc2V0IHlvdSB3YW50IHRvCisgICAgICogc3Rh
cnQgcGFyc2luZyBhdCBpbiB0aGUgc291cmNlLiAgQWZ0ZXIgY2FsbGluZywgcGFyc2VfcG9zLmlu
ZGV4CisgICAgICogaXMgdGhlIGVuZCBvZiB0aGUgdGV4dCB5b3UgcGFyc2VkLiAgSWYgZXJyb3Ig
b2NjdXJzLCBpbmRleCBpcworICAgICAqIHVuY2hhbmdlZC4KKyAgICAgKiA8UD4KKyAgICAgKiBX
aGVuIHBhcnNpbmcsIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyBkaXNjYXJkZWQgKHdpdGggc3VjY2Vz
c2Z1bAorICAgICAqIHBhcnNlKSwgd2hpbGUgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyBsZWZ0IGFz
IGlzLgorICAgICAqIDxQPgorICAgICAqIEV4YW1wbGU6CisgICAgICogPFA+CisgICAgICogUGFy
c2luZyAiXzEyX3h5IiAod2hlcmUgXyByZXByZXNlbnRzIGEgc3BhY2UpIGZvciBhIG51bWJlciwK
KyAgICAgKiB3aXRoIGluZGV4ID09IDAgd2lsbCByZXN1bHQgaW4gdGhlIG51bWJlciAxMiwgd2l0
aAorICAgICAqIHBhcnNlX3Bvcy5pbmRleCB1cGRhdGVkIHRvIDMgKGp1c3QgYmVmb3JlIHRoZSBz
ZWNvbmQgc3BhY2UpLgorICAgICAqIFBhcnNpbmcgYSBzZWNvbmQgdGltZSB3aWxsIHJlc3VsdCBp
biBhIGZhaWxpbmcgVUVycm9yQ29kZSBzaW5jZQorICAgICAqICJ4eSIgaXMgbm90IGEgbnVtYmVy
LCBhbmQgbGVhdmUgaW5kZXggYXQgMy4KKyAgICAgKiA8UD4KKyAgICAgKiBTdWJjbGFzc2VzIHdp
bGwgdHlwaWNhbGx5IHN1cHBseSBzcGVjaWZpYyBwYXJzZSBtZXRob2RzIHRoYXQKKyAgICAgKiBy
ZXR1cm4gZGlmZmVyZW50IHR5cGVzIG9mIHZhbHVlcy4gU2luY2UgbWV0aG9kcyBjYW4ndCBvdmVy
bG9hZAorICAgICAqIG9uIHJldHVybiB0eXBlcywgdGhlc2Ugd2lsbCB0eXBpY2FsbHkgYmUgbmFt
ZWQgInBhcnNlIiwgd2hpbGUKKyAgICAgKiB0aGlzIHBvbHltb3JwaGljIG1ldGhvZCB3aWxsIGFs
d2F5cyBiZSBjYWxsZWQgcGFyc2VPYmplY3QuICBBbnkKKyAgICAgKiBwYXJzZSBtZXRob2QgdGhh
dCBkb2VzIG5vdCB0YWtlIGEgcGFyc2VfcG9zIHNob3VsZCBzZXQgc3RhdHVzCisgICAgICogdG8g
YW4gZXJyb3IgdmFsdWUgd2hlbiBubyB0ZXh0IGluIHRoZSByZXF1aXJlZCBmb3JtYXQgaXMgYXQg
dGhlCisgICAgICogc3RhcnQgcG9zaXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gc291cmNl
ICAgIFRoZSBzdHJpbmcgdG8gYmUgcGFyc2VkIGludG8gYW4gb2JqZWN0LgorICAgICAqIEBwYXJh
bSByZXN1bHQgICAgRm9ybWF0dGFibGUgdG8gYmUgc2V0IHRvIHRoZSBwYXJzZSByZXN1bHQuCisg
ICAgICogICAgICAgICAgICAgICAgICBJZiBwYXJzZSBmYWlscywgcmV0dXJuIGNvbnRlbnRzIGFy
ZSB1bmRlZmluZWQuCisgICAgICogQHBhcmFtIHBhcnNlX3BvcyBUaGUgcG9zaXRpb24gdG8gc3Rh
cnQgcGFyc2luZyBhdC4gVXBvbiByZXR1cm4KKyAgICAgKiAgICAgICAgICAgICAgICAgIHRoaXMg
cGFyYW0gaXMgc2V0IHRvIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUKKyAgICAgKiAgICAgICAgICAg
ICAgICAgIGxhc3QgY2hhcmFjdGVyIHN1Y2Nlc3NmdWxseSBwYXJzZWQuIElmIHRoZQorICAgICAq
ICAgICAgICAgICAgICAgICAgc291cmNlIGlzIG5vdCBwYXJzZWQgc3VjY2Vzc2Z1bGx5LCB0aGlz
IHBhcmFtCisgICAgICogICAgICAgICAgICAgICAgICB3aWxsIHJlbWFpbiB1bmNoYW5nZWQuCisg
ICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHBhcnNlT2Jq
ZWN0KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0dGFibGUmIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFyc2VQb3NpdGlvbiYgcGFyc2VfcG9zKSBjb25zdCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBQ
YXJzZXMgYSBzdHJpbmcgdG8gcHJvZHVjZSBhbiBvYmplY3QuIFRoaXMgaXMgYSBjb252ZW5pZW5j
ZSBtZXRob2QKKyAgICAgKiB3aGljaCBjYWxscyB0aGUgcHVyZSB2aXJ0dWFsIHBhcnNlT2JqZWN0
KCkgbWV0aG9kLCBhbmQgcmV0dXJucyBhCisgICAgICogZmFpbHVyZSBVRXJyb3JDb2RlIGlmIHRo
ZSBQYXJzZVBvc2l0aW9uIGluZGljYXRlcyBmYWlsdXJlLgorICAgICAqCisgICAgICogQHBhcmFt
IHNvdXJjZSAgICBUaGUgc3RyaW5nIHRvIGJlIHBhcnNlZCBpbnRvIGFuIG9iamVjdC4KKyAgICAg
KiBAcGFyYW0gcmVzdWx0ICAgIEZvcm1hdHRhYmxlIHRvIGJlIHNldCB0byB0aGUgcGFyc2UgcmVz
dWx0LgorICAgICAqICAgICAgICAgICAgICAgICAgSWYgcGFyc2UgZmFpbHMsIHJldHVybiBjb250
ZW50cyBhcmUgdW5kZWZpbmVkLgorICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFt
IHRvIGJlIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZQorICAgICAqICAgICAgICAgICAgICAg
ICAgcmVzdWx0IGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdm9p
ZCBwYXJzZU9iamVjdChjb25zdCBVbmljb2RlU3RyaW5nJiBzb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICBGb3JtYXR0YWJsZSYgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgVUVycm9y
Q29kZSYgc3RhdHVzKSBjb25zdDsKKworICAgIC8qKiBHZXQgdGhlIGxvY2FsZSBmb3IgdGhpcyBm
b3JtYXQgb2JqZWN0LiBZb3UgY2FuIGNob29zZSBiZXR3ZWVuIHZhbGlkIGFuZCBhY3R1YWwgbG9j
YWxlLgorICAgICAqICBAcGFyYW0gdHlwZSB0eXBlIG9mIHRoZSBsb2NhbGUgd2UncmUgbG9va2lu
ZyBmb3IgKHZhbGlkIG9yIGFjdHVhbCkgCisgICAgICogIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29k
ZSBmb3IgdGhlIG9wZXJhdGlvbgorICAgICAqICBAcmV0dXJuIHRoZSBsb2NhbGUKKyAgICAgKiAg
QHN0YWJsZSBJQ1UgMi44CisgICAgICovCisgICAgTG9jYWxlIGdldExvY2FsZShVTG9jRGF0YUxv
Y2FsZVR5cGUgdHlwZSwgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKworICAgIC8qKiBHZXQg
dGhlIGxvY2FsZSBmb3IgdGhpcyBmb3JtYXQgb2JqZWN0LiBZb3UgY2FuIGNob29zZSBiZXR3ZWVu
IHZhbGlkIGFuZCBhY3R1YWwgbG9jYWxlLgorICAgICAqICBAcGFyYW0gdHlwZSB0eXBlIG9mIHRo
ZSBsb2NhbGUgd2UncmUgbG9va2luZyBmb3IgKHZhbGlkIG9yIGFjdHVhbCkgCisgICAgICogIEBw
YXJhbSBzdGF0dXMgZXJyb3IgY29kZSBmb3IgdGhlIG9wZXJhdGlvbgorICAgICAqICBAcmV0dXJu
IHRoZSBsb2NhbGUKKyAgICAgKiAgQGludGVybmFsCisgICAgICovCisgICAgY29uc3QgY2hhciog
Z2V0TG9jYWxlSUQoVUxvY0RhdGFMb2NhbGVUeXBlIHR5cGUsIFVFcnJvckNvZGUgJnN0YXR1cykg
Y29uc3Q7CisKKyBwcm90ZWN0ZWQ6CisgICAgLyoqIEBzdGFibGUgSUNVIDIuOCAqLworICAgIHZv
aWQgc2V0TG9jYWxlSURzKGNvbnN0IGNoYXIqIHZhbGlkLCBjb25zdCBjaGFyKiBhY3R1YWwpOwor
Citwcm90ZWN0ZWQ6CisgICAgLyoqCisgICAgICogRGVmYXVsdCBjb25zdHJ1Y3RvciBmb3Igc3Vi
Y2xhc3MgdXNlIG9ubHkuICBEb2VzIG5vdGhpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisg
ICAgICovCisgICAgRm9ybWF0KCk7CisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICAgKi8KKyAgICBGb3JtYXQoY29uc3QgRm9ybWF0Jik7IC8vIERvZXMgbm90aGluZzsgZm9y
IHN1YmNsYXNzZXMgb25seQorCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAg
ICovCisgICAgRm9ybWF0JiBvcGVyYXRvcj0oY29uc3QgRm9ybWF0Jik7IC8vIERvZXMgbm90aGlu
ZzsgZm9yIHN1YmNsYXNzZXMKKworICAgICAgIAorICAgIC8qKgorICAgICAqIFNpbXBsZSBmdW5j
dGlvbiBmb3IgaW5pdGlhbGl6aW5nIGEgVVBhcnNlRXJyb3IgZnJvbSBhIFVuaWNvZGVTdHJpbmcu
CisgICAgICoKKyAgICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byBjb3B5IGludG8g
dGhlIHBhcnNlRXJyb3IKKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBpbiBwYXR0ZXJu
IHdoZXJlIHRoZSBlcnJvciBvY2N1cmVkCisgICAgICogQHBhcmFtIHBhcnNlRXJyb3IgVGhlIFVQ
YXJzZUVycm9yIG9iamVjdCB0byBmaWxsIGluCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAg
ICovCisgICAgc3RhdGljIHZvaWQgc3ludGF4RXJyb3IoY29uc3QgVW5pY29kZVN0cmluZyYgcGF0
dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHBvcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVUGFyc2VFcnJvciYgcGFyc2VFcnJvcik7CisKKyBwcml2YXRl
OgorICAgIGNoYXIgYWN0dWFsTG9jYWxlW1VMT0NfRlVMTE5BTUVfQ0FQQUNJVFldOworICAgIGNo
YXIgdmFsaWRMb2NhbGVbVUxPQ19GVUxMTkFNRV9DQVBBQ0lUWV07Cit9OworCitVX05BTUVTUEFD
RV9FTkQKKworI2VuZGlmIC8qICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICovCisKKyNlbmRp
ZiAvLyBfRk9STUFUCisvL2VvZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lj
dS91bmljb2RlL2Zwb3NpdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUv
ZnBvc2l0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2FhNzc3MjhhYzNhNjg2MzBmYTMyNDZjN2VlZjZiNDE4
NGVhZGJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmlj
b2RlL2Zwb3NpdGVyLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorKiAgIENvcHlyaWdodCAoQykgMjAxMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgor
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogRmlsZSBhdHRpdGVyLmgKKyoKKyogTW9kaWZp
Y2F0aW9uIEhpc3Rvcnk6CisqCisqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRp
b24KKyogICAxMi8xNS8yMDA5ICBkb3VnZmVsdCAgICBDcmVhdGVkCisqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorKi8KKworI2lmbmRlZiBGUE9TSVRFUl9ICisjZGVmaW5lIEZQT1NJVEVSX0gKKwor
I2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisjaW5jbHVkZSAidW5pY29kZS91b2JqZWN0Lmgi
CisKKy8qKgorICogXGZpbGUKKyAqIFxicmllZiBDKysgQVBJOiBGaWVsZFBvc2l0aW9uIEl0ZXJh
dG9yLgorICovCisKKyNpZiBVQ09ORklHX05PX0ZPUk1BVFRJTkcKKworVV9OQU1FU1BBQ0VfQkVH
SU4KKworLyoKKyAqIEFsbG93IHRoZSBkZWNsYXJhdGlvbiBvZiBBUElzIHdpdGggcG9pbnRlcnMg
dG8gRmllbGRQb3NpdGlvbkl0ZXJhdG9yCisgKiBldmVuIHdoZW4gZm9ybWF0dGluZyBpcyByZW1v
dmVkIGZyb20gdGhlIGJ1aWxkLgorICovCitjbGFzcyBGaWVsZFBvc2l0aW9uSXRlcmF0b3I7CisK
K1VfTkFNRVNQQUNFX0VORAorCisjZWxzZQorCisjaW5jbHVkZSAidW5pY29kZS9maWVsZHBvcy5o
IgorI2luY2x1ZGUgInVuaWNvZGUvdW1pc2MuaCIKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworY2xh
c3MgVVZlY3RvcjMyOworCisvKioKKyAqIEZpZWxkUG9zaXRpb25JdGVyYXRvciByZXR1cm5zIHRo
ZSBmaWVsZCBpZHMgYW5kIHRoZWlyIHN0YXJ0L2xpbWl0IHBvc2l0aW9ucyBnZW5lcmF0ZWQKKyAq
IGJ5IGEgY2FsbCB0byBGb3JtYXQ6OmZvcm1hdC4gIFNlZSBGb3JtYXQsIE51bWJlckZvcm1hdCwg
RGVjaW1hbEZvcm1hdC4KKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitjbGFzcyBVX0kxOE5fQVBJ
IEZpZWxkUG9zaXRpb25JdGVyYXRvciA6IHB1YmxpYyBVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICAv
KioKKyAgICAgKiBEZXN0cnVjdG9yLgorICAgICAqIEBzdGFibGUgSUNVIDQuNAorICAgICAqLwor
ICAgIH5GaWVsZFBvc2l0aW9uSXRlcmF0b3IoKTsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVj
dHMgYSBuZXcsIGVtcHR5IGl0ZXJhdG9yLgorICAgICAqIEBzdGFibGUgSUNVIDQuNAorICAgICAq
LworICAgIEZpZWxkUG9zaXRpb25JdGVyYXRvcih2b2lkKTsKKworICAgIC8qKgorICAgICAqIENv
cHkgY29uc3RydWN0b3IuICBJZiB0aGUgY29weSBmYWlsZWQgZm9yIHNvbWUgcmVhc29uLCB0aGUg
bmV3IGl0ZXJhdG9yIHdpbGwKKyAgICAgKiBiZSBlbXB0eS4KKyAgICAgKiBAc3RhYmxlIElDVSA0
LjQKKyAgICAgKi8KKyAgICBGaWVsZFBvc2l0aW9uSXRlcmF0b3IoY29uc3QgRmllbGRQb3NpdGlv
bkl0ZXJhdG9yJik7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbm90aGVyIG9i
amVjdCBpcyBzZW1hbnRpY2FsbHkgZXF1YWwgdG8gdGhpcworICAgICAqIG9uZS4KKyAgICAgKiA8
cD4KKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIEZpZWxkUG9zaXRpb25JdGVyYXRvciBpcyBh
dCB0aGUgc2FtZSBwb3NpdGlvbiBpbiBhbgorICAgICAqIGVxdWFsIGFycmF5IG9mIHJ1biB2YWx1
ZXMuCisgICAgICogQHN0YWJsZSBJQ1UgNC40CisgICAgICovCisgICAgVUJvb2wgb3BlcmF0b3I9
PShjb25zdCBGaWVsZFBvc2l0aW9uSXRlcmF0b3ImKSBjb25zdDsKKworICAgIC8qKgorICAgICAq
IFJldHVybnMgdGhlIGNvbXBsZW1lbnQgb2YgdGhlIHJlc3VsdCBvZiBvcGVyYXRvcj09CisgICAg
ICogQHBhcmFtIHJocyBUaGUgRmllbGRQb3NpdGlvbkl0ZXJhdG9yIHRvIGJlIGNvbXBhcmVkIGZv
ciBpbmVxdWFsaXR5CisgICAgICogQHJldHVybiB0aGUgY29tcGxlbWVudCBvZiB0aGUgcmVzdWx0
IG9mIG9wZXJhdG9yPT0KKyAgICAgKiBAc3RhYmxlIElDVSA0LjQKKyAgICAgKi8KKyAgICBVQm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZpZWxkUG9zaXRpb25JdGVyYXRvciYgcmhzKSBjb25zdCB7IHJl
dHVybiAhb3BlcmF0b3I9PShyaHMpOyB9CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGUgY3VycmVu
dCBwb3NpdGlvbiBpcyB2YWxpZCwgdXBkYXRlcyB0aGUgRmllbGRQb3NpdGlvbiB2YWx1ZXMsIGFk
dmFuY2VzIHRoZSBpdGVyYXRvciwKKyAgICAgKiBhbmQgcmV0dXJucyBUUlVFLCBvdGhlcndpc2Ug
cmV0dXJucyBGQUxTRS4KKyAgICAgKiBAc3RhYmxlIElDVSA0LjQKKyAgICAgKi8KKyAgICBVQm9v
bCBuZXh0KEZpZWxkUG9zaXRpb24mIGZwKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
RmllbGRQb3NpdGlvbkl0ZXJhdG9ySGFuZGxlcjsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhl
IGRhdGEgdXNlZCBieSB0aGUgaXRlcmF0b3IsIGFuZCByZXNldHMgdGhlIHBvc2l0aW9uLgorICAg
ICAqIFJldHVybnMgVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SIGluIHN0YXR1cyBpZiB0aGUgZGF0
YSBpcyBub3QgdmFsaWQgCisgICAgICogKGxlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiAzLCBv
ciBzdGFydCA+PSBsaW1pdCBmb3IgYW55IHJ1bikuCisgICAgICovCisgICAgdm9pZCBzZXREYXRh
KFVWZWN0b3IzMiAqYWRvcHQsIFVFcnJvckNvZGUmIHN0YXR1cyk7CisKKyAgICBVVmVjdG9yMzIg
KmRhdGE7CisgICAgaW50MzJfdCBwb3M7CisKKyAgICAvLyBObyBJQ1UgInBvb3IgbWFuJ3MgUlRU
SSIgZm9yIHRoaXMgY2xhc3Mgbm9yIGl0cyBzdWJjbGFzc2VzLgorICAgIHZpcnR1YWwgVUNsYXNz
SUQgZ2V0RHluYW1pY0NsYXNzSUQoKSBjb25zdDsKK307CisKK1VfTkFNRVNQQUNFX0VORAorCisj
ZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcgKi8KKworI2VuZGlmIC8vIEZQT1NJ
VEVSX0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9sb2Np
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL2xvY2lkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTRmNTI4NTMzNGZhNmFmNjA1YWJmMjM1MDllOTZlODM0ZjUwMzFiZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9sb2NpZC5oCkBAIC0wLDAg
KzEsNzgxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0IChD
KSAxOTk2LTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3Jh
dGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorKgorKiBGaWxlIGxvY2lkLmgKKyoKKyogQ3JlYXRlZCBieTogSGVsZW5hIFNoaWgK
KyoKKyogTW9kaWZpY2F0aW9uIEhpc3Rvcnk6CisqCisqICAgRGF0ZSAgICAgICAgTmFtZSAgICAg
ICAgRGVzY3JpcHRpb24KKyogICAwMi8xMS85NyAgICBhbGl1ICAgICAgICBDaGFuZ2VkIGdMb2NQ
YXRoIHRvIGZnTG9jUGF0aCBhbmQgYWRkZWQgbWV0aG9kcyB0bworKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdldCBhbmQgc2V0IGl0LgorKiAgIDA0LzAyLzk3ICAgIGFsaXUgICAgICAgIE1h
ZGUgb3BlcmF0b3IhPSBpbmxpbmU7IGZpeGVkIHJldHVybiB2YWx1ZSBvZiBnZXROYW1lKCkuCisq
ICAgMDQvMTUvOTcgICAgYWxpdSAgICAgICAgQ2xlYW51cCBmb3IgQUlYL1dpbjMyLgorKiAgIDA0
LzI0Lzk3ICAgIGFsaXUgICAgICAgIE51bWVyb3VzIGNoYW5nZXMgcGVyIGNvZGUgcmV2aWV3Lgor
KiAgIDA4LzE4Lzk4ICAgIHN0ZXBoZW4gICAgIEFkZGVkIHRva2VuaXplU3RyaW5nKCksY2hhbmdl
ZCBnZXREaXNwbGF5TmFtZSgpCisqICAgMDkvMDgvOTggICAgc3RlcGhlbiAgICAgTW92ZWQgZGVm
aW5pdGlvbiBvZiBrRW1wdHlTdHJpbmcgZm9yIE1hYyBQb3J0CisqICAgMTEvMDkvOTkgICAgd2Vp
diAgICAgICAgQWRkZWQgY29uc3QgY2hhciAqIGdldE5hbWUoKSBjb25zdDsKKyogICAwNC8xMi8w
MCAgICBzcmwgICAgICAgICByZW1vdmluZyB1bmljb2Rlc3RyaW5nIGFwaSdzIGFuZCBjYWNoZWQg
aGFzaCBjb2RlCisqICAgMDgvMTAvMDEgICAgZ3Job3RlbiAgICAgQ2hhbmdlIHRoZSBzdGF0aWMg
TG9jYWxlcyB0byBhY2Nlc3NvciBmdW5jdGlvbnMKKyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8K
KworI2lmbmRlZiBMT0NJRF9ICisjZGVmaW5lIExPQ0lEX0gKKworI2luY2x1ZGUgInVuaWNvZGUv
dXR5cGVzLmgiCisjaW5jbHVkZSAidW5pY29kZS91b2JqZWN0LmgiCisjaW5jbHVkZSAidW5pY29k
ZS91bmlzdHIuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3B1dGlsLmgiCisjaW5jbHVkZSAidW5pY29k
ZS91bG9jLmgiCisjaW5jbHVkZSAidW5pY29kZS9zdHJlbnVtLmgiCisKKy8qKgorICogXGZpbGUK
KyAqIFxicmllZiBDKysgQVBJOiBMb2NhbGUgSUQgb2JqZWN0LgorICovCisKKy8qKgorICogQSA8
Y29kZT5Mb2NhbGU8L2NvZGU+IG9iamVjdCByZXByZXNlbnRzIGEgc3BlY2lmaWMgZ2VvZ3JhcGhp
Y2FsLCBwb2xpdGljYWwsCisgKiBvciBjdWx0dXJhbCByZWdpb24uIEFuIG9wZXJhdGlvbiB0aGF0
IHJlcXVpcmVzIGEgPGNvZGU+TG9jYWxlPC9jb2RlPiB0byBwZXJmb3JtCisgKiBpdHMgdGFzayBp
cyBjYWxsZWQgPGVtPmxvY2FsZS1zZW5zaXRpdmU8L2VtPiBhbmQgdXNlcyB0aGUgPGNvZGU+TG9j
YWxlPC9jb2RlPgorICogdG8gdGFpbG9yIGluZm9ybWF0aW9uIGZvciB0aGUgdXNlci4gRm9yIGV4
YW1wbGUsIGRpc3BsYXlpbmcgYSBudW1iZXIKKyAqIGlzIGEgbG9jYWxlLXNlbnNpdGl2ZSBvcGVy
YXRpb24tLXRoZSBudW1iZXIgc2hvdWxkIGJlIGZvcm1hdHRlZAorICogYWNjb3JkaW5nIHRvIHRo
ZSBjdXN0b21zL2NvbnZlbnRpb25zIG9mIHRoZSB1c2VyJ3MgbmF0aXZlIGNvdW50cnksCisgKiBy
ZWdpb24sIG9yIGN1bHR1cmUuCisgKgorICogVGhlIExvY2FsZSBjbGFzcyBpcyBub3Qgc3VpdGFi
bGUgZm9yIHN1YmNsYXNzaW5nLgorICoKKyAqIDxQPgorICogWW91IGNhbiBjcmVhdGUgYSA8Y29k
ZT5Mb2NhbGU8L2NvZGU+IG9iamVjdCB1c2luZyB0aGUgY29uc3RydWN0b3IgaW4KKyAqIHRoaXMg
Y2xhc3M6CisgKiBcaHRtbG9ubHk8YmxvY2txdW90ZT5cZW5kaHRtbG9ubHkKKyAqIDxwcmU+Cisg
KiAgICAgICBMb2NhbGUoIGNvbnN0ICAgY2hhciogIGxhbmd1YWdlLAorICogICAgICAgICAgICAg
ICBjb25zdCAgIGNoYXIqICBjb3VudHJ5LAorICogICAgICAgICAgICAgICBjb25zdCAgIGNoYXIq
ICB2YXJpYW50KTsKKyAqIDwvcHJlPgorICogXGh0bWxvbmx5PC9ibG9ja3F1b3RlPlxlbmRodG1s
b25seQorICogVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvcnMgaXMgYSB2YWxp
ZCA8U1RST05HPklTTworICogTGFuZ3VhZ2UgQ29kZS48L1NUUk9ORz4gVGhlc2UgY29kZXMgYXJl
IHRoZSBsb3dlci1jYXNlIHR3by1sZXR0ZXIKKyAqIGNvZGVzIGFzIGRlZmluZWQgYnkgSVNPLTYz
OS4KKyAqIFlvdSBjYW4gZmluZCBhIGZ1bGwgbGlzdCBvZiB0aGVzZSBjb2RlcyBhdDoKKyAqIDxC
Uj48YSBocmVmID0iaHR0cDovL3d3dy5sb2MuZ292L3N0YW5kYXJkcy9pc282MzktMi8iPgorICog
aHR0cDovL3d3dy5sb2MuZ292L3N0YW5kYXJkcy9pc282MzktMi88L2E+CisgKgorICogPFA+Cisg
KiBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvcnMgaXMgYSB2YWxpZCA8U1RS
T05HPklTTyBDb3VudHJ5CisgKiBDb2RlLjwvU1RST05HPiBUaGVzZSBjb2RlcyBhcmUgdGhlIHVw
cGVyLWNhc2UgdHdvLWxldHRlciBjb2RlcworICogYXMgZGVmaW5lZCBieSBJU08tMzE2Ni4KKyAq
IFlvdSBjYW4gZmluZCBhIGZ1bGwgbGlzdCBvZiB0aGVzZSBjb2RlcyBhdCBhIG51bWJlciBvZiBz
aXRlcywgc3VjaCBhczoKKyAqIDxCUj48YSBocmVmPSJodHRwOi8vd3d3Lmlzby5vcmcvaXNvL2Vu
L3Byb2RzLXNlcnZpY2VzL2lzbzMxNjZtYS9pbmRleC5odG1sIj4KKyAqIGh0dHA6Ly93d3cuaXNv
Lm9yZy9pc28vZW4vcHJvZHMtc2VydmljZXMvaXNvMzE2Nm1hL2luZGV4Lmh0bWw8L2E+CisgKgor
ICogPFA+CisgKiBUaGUgdGhpcmQgY29uc3RydWN0b3IgcmVxdWlyZXMgYSB0aGlyZCBhcmd1bWVu
dC0tdGhlIDxTVFJPTkc+VmFyaWFudC48L1NUUk9ORz4KKyAqIFRoZSBWYXJpYW50IGNvZGVzIGFy
ZSB2ZW5kb3IgYW5kIGJyb3dzZXItc3BlY2lmaWMuCisgKiBGb3IgZXhhbXBsZSwgdXNlIFJFVklT
RUQgZm9yIGEgbGFuZ2F1Z2UncyByZXZpc2VkIHNjcmlwdCBvcnRob2dyYXBoeSwgYW5kIFBPU0lY
IGZvciBQT1NJWC4KKyAqIFdoZXJlIHRoZXJlIGFyZSB0d28gdmFyaWFudHMsIHNlcGFyYXRlIHRo
ZW0gd2l0aCBhbiB1bmRlcnNjb3JlLCBhbmQKKyAqIHB1dCB0aGUgbW9zdCBpbXBvcnRhbnQgb25l
IGZpcnN0LiBGb3IKKyAqIGV4YW1wbGUsIGEgVHJhZGl0aW9uYWwgU3BhbmlzaCBjb2xsYXRpb24g
bWlnaHQgYmUgcmVmZXJlbmNlZCwgd2l0aAorICogIkVTIiwgIkVTIiwgIlRyYWRpdGlvbmFsX1BP
U0lYIi4KKyAqCisgKiA8UD4KKyAqIEJlY2F1c2UgYSA8Y29kZT5Mb2NhbGU8L2NvZGU+IG9iamVj
dCBpcyBqdXN0IGFuIGlkZW50aWZpZXIgZm9yIGEgcmVnaW9uLAorICogbm8gdmFsaWRpdHkgY2hl
Y2sgaXMgcGVyZm9ybWVkIHdoZW4geW91IGNvbnN0cnVjdCBhIDxjb2RlPkxvY2FsZTwvY29kZT4u
CisgKiBJZiB5b3Ugd2FudCB0byBzZWUgd2hldGhlciBwYXJ0aWN1bGFyIHJlc291cmNlcyBhcmUg
YXZhaWxhYmxlIGZvciB0aGUKKyAqIDxjb2RlPkxvY2FsZTwvY29kZT4geW91IGNvbnN0cnVjdCwg
eW91IG11c3QgcXVlcnkgdGhvc2UgcmVzb3VyY2VzLiBGb3IKKyAqIGV4YW1wbGUsIGFzayB0aGUg
PGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiBmb3IgdGhlIGxvY2FsZXMgaXQgc3VwcG9ydHMKKyAq
IHVzaW5nIGl0cyA8Y29kZT5nZXRBdmFpbGFibGVMb2NhbGVzPC9jb2RlPiBtZXRob2QuCisgKiA8
QlI+PFNUUk9ORz5Ob3RlOjwvU1RST05HPiBXaGVuIHlvdSBhc2sgZm9yIGEgcmVzb3VyY2UgZm9y
IGEgcGFydGljdWxhcgorICogbG9jYWxlLCB5b3UgZ2V0IGJhY2sgdGhlIGJlc3QgYXZhaWxhYmxl
IG1hdGNoLCBub3QgbmVjZXNzYXJpbHkKKyAqIHByZWNpc2VseSB3aGF0IHlvdSBhc2tlZCBmb3Iu
IEZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rIGF0CisgKiA8Y29kZT5SZXNvdXJjZUJ1bmRsZTwv
Y29kZT4uCisgKgorICogPFA+CisgKiBUaGUgPGNvZGU+TG9jYWxlPC9jb2RlPiBjbGFzcyBwcm92
aWRlcyBhIG51bWJlciBvZiBjb252ZW5pZW50IGNvbnN0YW50cworICogdGhhdCB5b3UgY2FuIHVz
ZSB0byBjcmVhdGUgPGNvZGU+TG9jYWxlPC9jb2RlPiBvYmplY3RzIGZvciBjb21tb25seSB1c2Vk
CisgKiBsb2NhbGVzLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyByZWZlcnMgdG8gYSA8Y29k
ZT5Mb2NhbGU8L2NvZGU+IG9iamVjdAorICogZm9yIHRoZSBVbml0ZWQgU3RhdGVzOgorICogXGh0
bWxvbmx5PGJsb2NrcXVvdGU+XGVuZGh0bWxvbmx5CisgKiA8cHJlPgorICogICAgICAgTG9jYWxl
OjpnZXRVUygpCisgKiA8L3ByZT4KKyAqIFxodG1sb25seTwvYmxvY2txdW90ZT5cZW5kaHRtbG9u
bHkKKyAqCisgKiA8UD4KKyAqIE9uY2UgeW91J3ZlIGNyZWF0ZWQgYSA8Y29kZT5Mb2NhbGU8L2Nv
ZGU+IHlvdSBjYW4gcXVlcnkgaXQgZm9yIGluZm9ybWF0aW9uIGFib3V0CisgKiBpdHNlbGYuIFVz
ZSA8Y29kZT5nZXRDb3VudHJ5PC9jb2RlPiB0byBnZXQgdGhlIElTTyBDb3VudHJ5IENvZGUgYW5k
CisgKiA8Y29kZT5nZXRMYW5ndWFnZTwvY29kZT4gdG8gZ2V0IHRoZSBJU08gTGFuZ3VhZ2UgQ29k
ZS4gWW91IGNhbgorICogdXNlIDxjb2RlPmdldERpc3BsYXlDb3VudHJ5PC9jb2RlPiB0byBnZXQg
dGhlCisgKiBuYW1lIG9mIHRoZSBjb3VudHJ5IHN1aXRhYmxlIGZvciBkaXNwbGF5aW5nIHRvIHRo
ZSB1c2VyLiBTaW1pbGFybHksCisgKiB5b3UgY2FuIHVzZSA8Y29kZT5nZXREaXNwbGF5TGFuZ3Vh
Z2U8L2NvZGU+IHRvIGdldCB0aGUgbmFtZSBvZgorICogdGhlIGxhbmd1YWdlIHN1aXRhYmxlIGZv
ciBkaXNwbGF5aW5nIHRvIHRoZSB1c2VyLiBJbnRlcmVzdGluZ2x5LAorICogdGhlIDxjb2RlPmdl
dERpc3BsYXlYWFg8L2NvZGU+IG1ldGhvZHMgYXJlIHRoZW1zZWx2ZXMgbG9jYWxlLXNlbnNpdGl2
ZQorICogYW5kIGhhdmUgdHdvIHZlcnNpb25zOiBvbmUgdGhhdCB1c2VzIHRoZSBkZWZhdWx0IGxv
Y2FsZSBhbmQgb25lCisgKiB0aGF0IHRha2VzIGEgbG9jYWxlIGFzIGFuIGFyZ3VtZW50IGFuZCBk
aXNwbGF5cyB0aGUgbmFtZSBvciBjb3VudHJ5IGluCisgKiBhIGxhbmd1YWdlIGFwcHJvcHJpYXRl
IHRvIHRoYXQgbG9jYWxlLgorICoKKyAqIDxQPgorICogSUNVIHByb3ZpZGVzIGEgbnVtYmVyIG9m
IGNsYXNzZXMgdGhhdCBwZXJmb3JtIGxvY2FsZS1zZW5zaXRpdmUKKyAqIG9wZXJhdGlvbnMuIEZv
ciBleGFtcGxlLCB0aGUgPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiBjbGFzcyBmb3JtYXRzCisg
KiBudW1iZXJzLCBjdXJyZW5jeSwgb3IgcGVyY2VudGFnZXMgaW4gYSBsb2NhbGUtc2Vuc2l0aXZl
IG1hbm5lci4gQ2xhc3NlcworICogc3VjaCBhcyA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+IGhh
dmUgYSBudW1iZXIgb2YgY29udmVuaWVuY2UgbWV0aG9kcworICogZm9yIGNyZWF0aW5nIGEgZGVm
YXVsdCBvYmplY3Qgb2YgdGhhdCB0eXBlLiBGb3IgZXhhbXBsZSwgdGhlCisgKiA8Y29kZT5OdW1i
ZXJGb3JtYXQ8L2NvZGU+IGNsYXNzIHByb3ZpZGVzIHRoZXNlIHRocmVlIGNvbnZlbmllbmNlIG1l
dGhvZHMKKyAqIGZvciBjcmVhdGluZyBhIGRlZmF1bHQgPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2Rl
PiBvYmplY3Q6CisgKiBcaHRtbG9ubHk8YmxvY2txdW90ZT5cZW5kaHRtbG9ubHkKKyAqIDxwcmU+
CisgKiAgICAgVUVycm9yQ29kZSBzdWNjZXNzID0gVV9aRVJPX0VSUk9SOworICogICAgIExvY2Fs
ZSBteUxvY2FsZTsKKyAqICAgICBOdW1iZXJGb3JtYXQgKm5mOworICoKKyAqICAgICBuZiA9IE51
bWJlckZvcm1hdDo6Y3JlYXRlSW5zdGFuY2UoIHN1Y2Nlc3MgKTsgICAgICAgICAgZGVsZXRlIG5m
OworICogICAgIG5mID0gTnVtYmVyRm9ybWF0OjpjcmVhdGVDdXJyZW5jeUluc3RhbmNlKCBzdWNj
ZXNzICk7ICBkZWxldGUgbmY7CisgKiAgICAgbmYgPSBOdW1iZXJGb3JtYXQ6OmNyZWF0ZVBlcmNl
bnRJbnN0YW5jZSggc3VjY2VzcyApOyAgIGRlbGV0ZSBuZjsKKyAqIDwvcHJlPgorICogXGh0bWxv
bmx5PC9ibG9ja3F1b3RlPlxlbmRodG1sb25seQorICogRWFjaCBvZiB0aGVzZSBtZXRob2RzIGhh
cyB0d28gdmFyaWFudHM7IG9uZSB3aXRoIGFuIGV4cGxpY2l0IGxvY2FsZQorICogYW5kIG9uZSB3
aXRob3V0OyB0aGUgbGF0dGVyIHVzaW5nIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAqIFxodG1sb25s
eTxibG9ja3F1b3RlPlxlbmRodG1sb25seQorICogPHByZT4KKyAqICAgICBuZiA9IE51bWJlckZv
cm1hdDo6Y3JlYXRlSW5zdGFuY2UoIG15TG9jYWxlLCBzdWNjZXNzICk7ICAgICAgICAgIGRlbGV0
ZSBuZjsKKyAqICAgICBuZiA9IE51bWJlckZvcm1hdDo6Y3JlYXRlQ3VycmVuY3lJbnN0YW5jZSgg
bXlMb2NhbGUsIHN1Y2Nlc3MgKTsgIGRlbGV0ZSBuZjsKKyAqICAgICBuZiA9IE51bWJlckZvcm1h
dDo6Y3JlYXRlUGVyY2VudEluc3RhbmNlKCBteUxvY2FsZSwgc3VjY2VzcyApOyAgIGRlbGV0ZSBu
ZjsKKyAqIDwvcHJlPgorICogXGh0bWxvbmx5PC9ibG9ja3F1b3RlPlxlbmRodG1sb25seQorICog
QSA8Y29kZT5Mb2NhbGU8L2NvZGU+IGlzIHRoZSBtZWNoYW5pc20gZm9yIGlkZW50aWZ5aW5nIHRo
ZSBraW5kIG9mIG9iamVjdAorICogKDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4pIHRoYXQgeW91
IHdvdWxkIGxpa2UgdG8gZ2V0LiBUaGUgbG9jYWxlIGlzCisgKiA8U1RST05HPmp1c3Q8L1NUUk9O
Rz4gYSBtZWNoYW5pc20gZm9yIGlkZW50aWZ5aW5nIG9iamVjdHMsCisgKiA8U1RST05HPm5vdDwv
U1RST05HPiBhIGNvbnRhaW5lciBmb3IgdGhlIG9iamVjdHMgdGhlbXNlbHZlcy4KKyAqCisgKiA8
UD4KKyAqIEVhY2ggY2xhc3MgdGhhdCBwZXJmb3JtcyBsb2NhbGUtc2Vuc2l0aXZlIG9wZXJhdGlv
bnMgYWxsb3dzIHlvdQorICogdG8gZ2V0IGFsbCB0aGUgYXZhaWxhYmxlIG9iamVjdHMgb2YgdGhh
dCB0eXBlLiBZb3UgY2FuIHNpZnQKKyAqIHRocm91Z2ggdGhlc2Ugb2JqZWN0cyBieSBsYW5ndWFn
ZSwgY291bnRyeSwgb3IgdmFyaWFudCwKKyAqIGFuZCB1c2UgdGhlIGRpc3BsYXkgbmFtZXMgdG8g
cHJlc2VudCBhIG1lbnUgdG8gdGhlIHVzZXIuCisgKiBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVh
dGUgYSBtZW51IG9mIGFsbCB0aGUgY29sbGF0aW9uIG9iamVjdHMKKyAqIHN1aXRhYmxlIGZvciBh
IGdpdmVuIGxhbmd1YWdlLiBTdWNoIGNsYXNzZXMgaW1wbGVtZW50IHRoZXNlCisgKiB0aHJlZSBj
bGFzcyBtZXRob2RzOgorICogXGh0bWxvbmx5PGJsb2NrcXVvdGU+XGVuZGh0bWxvbmx5CisgKiA8
cHJlPgorICogICAgICAgc3RhdGljIExvY2FsZSogZ2V0QXZhaWxhYmxlTG9jYWxlcyhpbnQzMl90
JiBudW1Mb2NhbGVzKQorICogICAgICAgc3RhdGljIFVuaWNvZGVTdHJpbmcmIGdldERpc3BsYXlO
YW1lKGNvbnN0IExvY2FsZSYgIG9iamVjdExvY2FsZSwKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2NhbGUmICBkaXNwbGF5TG9jYWxlLAorICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcm
IGRpc3BsYXlOYW1lKQorICogICAgICAgc3RhdGljIFVuaWNvZGVTdHJpbmcmIGdldERpc3BsYXlO
YW1lKGNvbnN0IExvY2FsZSYgIG9iamVjdExvY2FsZSwKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBkaXNwbGF5TmFtZSkKKyAqIDwv
cHJlPgorICogXGh0bWxvbmx5PC9ibG9ja3F1b3RlPlxlbmRodG1sb25seQorICoKKyAqIEBzdGFi
bGUgSUNVIDIuMAorICogQHNlZSBSZXNvdXJjZUJ1bmRsZQorICovCitVX05BTUVTUEFDRV9CRUdJ
TgorY2xhc3MgVV9DT01NT05fQVBJIExvY2FsZSA6IHB1YmxpYyBVT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICAvKiogVXNlZnVsIGNvbnN0YW50IGZvciB0aGUgUm9vdCBsb2NhbGUuIEBzdGFibGUgSUNV
IDQuNCAqLworICAgIHN0YXRpYyBjb25zdCBMb2NhbGUgJlVfRVhQT1JUMiBnZXRSb290KHZvaWQp
OworICAgIC8qKiBVc2VmdWwgY29uc3RhbnQgZm9yIHRoaXMgbGFuZ3VhZ2UuIEBzdGFibGUgSUNV
IDIuMCAqLworICAgIHN0YXRpYyBjb25zdCBMb2NhbGUgJlVfRVhQT1JUMiBnZXRFbmdsaXNoKHZv
aWQpOworICAgIC8qKiBVc2VmdWwgY29uc3RhbnQgZm9yIHRoaXMgbGFuZ3VhZ2UuIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIHN0YXRpYyBjb25zdCBMb2NhbGUgJlVfRVhQT1JUMiBnZXRGcmVuY2go
dm9pZCk7CisgICAgLyoqIFVzZWZ1bCBjb25zdGFudCBmb3IgdGhpcyBsYW5ndWFnZS4gQHN0YWJs
ZSBJQ1UgMi4wICovCisgICAgc3RhdGljIGNvbnN0IExvY2FsZSAmVV9FWFBPUlQyIGdldEdlcm1h
bih2b2lkKTsKKyAgICAvKiogVXNlZnVsIGNvbnN0YW50IGZvciB0aGlzIGxhbmd1YWdlLiBAc3Rh
YmxlIElDVSAyLjAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlICZVX0VYUE9SVDIgZ2V0SXRh
bGlhbih2b2lkKTsKKyAgICAvKiogVXNlZnVsIGNvbnN0YW50IGZvciB0aGlzIGxhbmd1YWdlLiBA
c3RhYmxlIElDVSAyLjAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlICZVX0VYUE9SVDIgZ2V0
SmFwYW5lc2Uodm9pZCk7CisgICAgLyoqIFVzZWZ1bCBjb25zdGFudCBmb3IgdGhpcyBsYW5ndWFn
ZS4gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgc3RhdGljIGNvbnN0IExvY2FsZSAmVV9FWFBPUlQy
IGdldEtvcmVhbih2b2lkKTsKKyAgICAvKiogVXNlZnVsIGNvbnN0YW50IGZvciB0aGlzIGxhbmd1
YWdlLiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlICZVX0VYUE9S
VDIgZ2V0Q2hpbmVzZSh2b2lkKTsKKyAgICAvKiogVXNlZnVsIGNvbnN0YW50IGZvciB0aGlzIGxh
bmd1YWdlLiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlICZVX0VY
UE9SVDIgZ2V0U2ltcGxpZmllZENoaW5lc2Uodm9pZCk7CisgICAgLyoqIFVzZWZ1bCBjb25zdGFu
dCBmb3IgdGhpcyBsYW5ndWFnZS4gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgc3RhdGljIGNvbnN0
IExvY2FsZSAmVV9FWFBPUlQyIGdldFRyYWRpdGlvbmFsQ2hpbmVzZSh2b2lkKTsKKworICAgIC8q
KiBVc2VmdWwgY29uc3RhbnQgZm9yIHRoaXMgY291bnRyeS9yZWdpb24uIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIHN0YXRpYyBjb25zdCBMb2NhbGUgJlVfRVhQT1JUMiBnZXRGcmFuY2Uodm9pZCk7
CisgICAgLyoqIFVzZWZ1bCBjb25zdGFudCBmb3IgdGhpcyBjb3VudHJ5L3JlZ2lvbi4gQHN0YWJs
ZSBJQ1UgMi4wICovCisgICAgc3RhdGljIGNvbnN0IExvY2FsZSAmVV9FWFBPUlQyIGdldEdlcm1h
bnkodm9pZCk7CisgICAgLyoqIFVzZWZ1bCBjb25zdGFudCBmb3IgdGhpcyBjb3VudHJ5L3JlZ2lv
bi4gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgc3RhdGljIGNvbnN0IExvY2FsZSAmVV9FWFBPUlQy
IGdldEl0YWx5KHZvaWQpOworICAgIC8qKiBVc2VmdWwgY29uc3RhbnQgZm9yIHRoaXMgY291bnRy
eS9yZWdpb24uIEBzdGFibGUgSUNVIDIuMCAqLworICAgIHN0YXRpYyBjb25zdCBMb2NhbGUgJlVf
RVhQT1JUMiBnZXRKYXBhbih2b2lkKTsKKyAgICAvKiogVXNlZnVsIGNvbnN0YW50IGZvciB0aGlz
IGNvdW50cnkvcmVnaW9uLiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9j
YWxlICZVX0VYUE9SVDIgZ2V0S29yZWEodm9pZCk7CisgICAgLyoqIFVzZWZ1bCBjb25zdGFudCBm
b3IgdGhpcyBjb3VudHJ5L3JlZ2lvbi4gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgc3RhdGljIGNv
bnN0IExvY2FsZSAmVV9FWFBPUlQyIGdldENoaW5hKHZvaWQpOworICAgIC8qKiBVc2VmdWwgY29u
c3RhbnQgZm9yIHRoaXMgY291bnRyeS9yZWdpb24uIEBzdGFibGUgSUNVIDIuMCAqLworICAgIHN0
YXRpYyBjb25zdCBMb2NhbGUgJlVfRVhQT1JUMiBnZXRQUkModm9pZCk7CisgICAgLyoqIFVzZWZ1
bCBjb25zdGFudCBmb3IgdGhpcyBjb3VudHJ5L3JlZ2lvbi4gQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgc3RhdGljIGNvbnN0IExvY2FsZSAmVV9FWFBPUlQyIGdldFRhaXdhbih2b2lkKTsKKyAgICAv
KiogVXNlZnVsIGNvbnN0YW50IGZvciB0aGlzIGNvdW50cnkvcmVnaW9uLiBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlICZVX0VYUE9SVDIgZ2V0VUsodm9pZCk7Cisg
ICAgLyoqIFVzZWZ1bCBjb25zdGFudCBmb3IgdGhpcyBjb3VudHJ5L3JlZ2lvbi4gQHN0YWJsZSBJ
Q1UgMi4wICovCisgICAgc3RhdGljIGNvbnN0IExvY2FsZSAmVV9FWFBPUlQyIGdldFVTKHZvaWQp
OworICAgIC8qKiBVc2VmdWwgY29uc3RhbnQgZm9yIHRoaXMgY291bnRyeS9yZWdpb24uIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIHN0YXRpYyBjb25zdCBMb2NhbGUgJlVfRVhQT1JUMiBnZXRDYW5h
ZGEodm9pZCk7CisgICAgLyoqIFVzZWZ1bCBjb25zdGFudCBmb3IgdGhpcyBjb3VudHJ5L3JlZ2lv
bi4gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgc3RhdGljIGNvbnN0IExvY2FsZSAmVV9FWFBPUlQy
IGdldENhbmFkYUZyZW5jaCh2b2lkKTsKKworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEg
ZGVmYXVsdCBsb2NhbGUgb2JqZWN0LCBhIExvY2FsZSBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlIElE
LgorICAgICAqCisgICAgICogQHNlZSBnZXREZWZhdWx0CisgICAgICogQHNlZSB1bG9jX2dldERl
ZmF1bHQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBMb2NhbGUoKTsKKwor
ICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIGxvY2FsZSBmcm9tIGxhbmd1YWdlLCBjb3VudHJ5
LCB2YXJpYW50LgorICAgICAqIElmIGFuIGVycm9yIG9jY3VycywgdGhlbiB0aGUgY29uc3RydWN0
ZWQgb2JqZWN0IHdpbGwgYmUgImJvZ3VzIgorICAgICAqIChpc0JvZ3VzKCkgd2lsbCByZXR1cm4g
VFJVRSkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbGFuZ3VhZ2UgTG93ZXJjYXNlIHR3by1sZXR0
ZXIgb3IgdGhyZWUtbGV0dGVyIElTTy02MzkgY29kZS4KKyAgICAgKiAgVGhpcyBwYXJhbWV0ZXIg
Y2FuIGluc3RlYWQgYmUgYW4gSUNVIHN0eWxlIEMgbG9jYWxlIChlLmcuICJlbl9VUyIpLAorICAg
ICAqICBidXQgdGhlIG90aGVyIHBhcmFtZXRlcnMgbXVzdCBub3QgYmUgdXNlZC4KKyAgICAgKiAg
VGhpcyBwYXJhbWV0ZXIgY2FuIGJlIE5VTEw7IGlmIHNvLAorICAgICAqICB0aGUgbG9jYWxlIGlz
IGluaXRpYWxpemVkIHRvIG1hdGNoIHRoZSBjdXJyZW50IGRlZmF1bHQgbG9jYWxlLgorICAgICAq
ICAoVGhpcyBpcyB0aGUgc2FtZSBhcyB1c2luZyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4pCisg
ICAgICogIFBsZWFzZSBub3RlOiBUaGUgSmF2YSBMb2NhbGUgY2xhc3MgZG9lcyBOT1QgYWNjZXB0
IHRoZSBmb3JtCisgICAgICogICduZXcgTG9jYWxlKCJlbl9VUyIpJyBidXQgb25seSAnbmV3IExv
Y2FsZSgiZW4iLCJVUyIpJworICAgICAqCisgICAgICogQHBhcmFtIGNvdW50cnkgIFVwcGVyY2Fz
ZSB0d28tbGV0dGVyIElTTy0zMTY2IGNvZGUuIChvcHRpb25hbCkKKyAgICAgKiBAcGFyYW0gdmFy
aWFudCAgVXBwZXJjYXNlIHZlbmRvciBhbmQgYnJvd3NlciBzcGVjaWZpYyBjb2RlLiBTZWUgY2xh
c3MKKyAgICAgKiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uIChvcHRpb25hbCkKKyAgICAg
KiBAcGFyYW0ga2V5d29yZHNBbmRWYWx1ZXMgQSBzdHJpbmcgY29uc2lzdGluZyBvZiBrZXl3b3Jk
L3ZhbHVlcyBwYWlycywgc3VjaCBhcworICAgICAqICAgICAgICAgICAgICAgICAiY29sbGF0aW9u
PXBob25lYm9vaztjdXJyZW5jeT1ldXJvIgorICAgICAqCisgICAgICogQHNlZSBnZXREZWZhdWx0
CisgICAgICogQHNlZSB1bG9jX2dldERlZmF1bHQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICAgKi8KKyAgICBMb2NhbGUoIGNvbnN0ICAgY2hhciAqIGxhbmd1YWdlLAorICAgICAgICAgICAg
Y29uc3QgICBjaGFyICogY291bnRyeSAgPSAwLAorICAgICAgICAgICAgY29uc3QgICBjaGFyICog
dmFyaWFudCAgPSAwLAorICAgICAgICAgICAgY29uc3QgICBjaGFyICoga2V5d29yZHNBbmRWYWx1
ZXMgPSAwKTsKKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIGEgTG9jYWxlIG9iamVjdCBm
cm9tIGFub3RoZXIgTG9jYWxlIG9iamVjdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvdGhlciBU
aGUgTG9jYWxlIG9iamVjdCBiZWluZyBjb3BpZWQgaW4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAgICovCisgICAgTG9jYWxlKGNvbnN0ICAgIExvY2FsZSYgb3RoZXIpOworCisKKyAgICAv
KioKKyAgICAgKiBEZXN0cnVjdG9yCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisg
ICAgdmlydHVhbCB+TG9jYWxlKCkgOworCisgICAgLyoqCisgICAgICogUmVwbGFjZXMgdGhlIGVu
dGlyZSBjb250ZW50cyBvZiAqdGhpcyB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWUuCisgICAgICoK
KyAgICAgKiBAcGFyYW0gb3RoZXIgVGhlIExvY2FsZSBvYmplY3QgYmVpbmcgY29waWVkIGluLgor
ICAgICAqIEByZXR1cm4gICAgICAqdGhpcworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAq
LworICAgIExvY2FsZSYgb3BlcmF0b3I9KGNvbnN0IExvY2FsZSYgb3RoZXIpOworCisgICAgLyoq
CisgICAgICogQ2hlY2tzIGlmIHR3byBsb2NhbGUga2V5cyBhcmUgdGhlIHNhbWUuCisgICAgICoK
KyAgICAgKiBAcGFyYW0gb3RoZXIgVGhlIGxvY2FsZSBrZXkgb2JqZWN0IHRvIGJlIGNvbXBhcmVk
IHdpdGggdGhpcy4KKyAgICAgKiBAcmV0dXJuICAgICAgVHJ1ZSBpZiB0aGUgdHdvIGxvY2FsZSBr
ZXlzIGFyZSB0aGUgc2FtZSwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgICAqLworICAgIFVCb29sICAgb3BlcmF0b3I9PShjb25zdCAgICBMb2NhbGUmICAgICBv
dGhlcikgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBDaGVja3MgaWYgdHdvIGxvY2FsZSBrZXlz
IGFyZSBub3QgdGhlIHNhbWUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3RoZXIgVGhlIGxvY2Fs
ZSBrZXkgb2JqZWN0IHRvIGJlIGNvbXBhcmVkIHdpdGggdGhpcy4KKyAgICAgKiBAcmV0dXJuICAg
ICAgVHJ1ZSBpZiB0aGUgdHdvIGxvY2FsZSBrZXlzIGFyZSBub3QgdGhlIHNhbWUsIGZhbHNlCisg
ICAgICogICAgICAgICAgICAgIG90aGVyd2lzZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICAgKi8KKyAgICBVQm9vbCAgIG9wZXJhdG9yIT0oY29uc3QgICAgTG9jYWxlJiAgICAgb3RoZXIp
IGNvbnN0OworCisgICAgLyoqCisgICAgICogQ2xvbmUgdGhpcyBvYmplY3QuCisgICAgICogQ2xv
bmVzIGNhbiBiZSB1c2VkIGNvbmN1cnJlbnRseSBpbiBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAq
IElmIGFuIGVycm9yIG9jY3VycywgdGhlbiBOVUxMIGlzIHJldHVybmVkLgorICAgICAqIFRoZSBj
YWxsZXIgbXVzdCBkZWxldGUgdGhlIGNsb25lLgorICAgICAqCisgICAgICogQHJldHVybiBhIGNs
b25lIG9mIHRoaXMgb2JqZWN0CisgICAgICoKKyAgICAgKiBAc2VlIGdldER5bmFtaWNDbGFzc0lE
CisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICovCisgICAgTG9jYWxlICpjbG9uZSgpIGNv
bnN0OworCisgICAgLyoqCisgICAgICogQ29tbW9uIG1ldGhvZHMgb2YgZ2V0dGluZyB0aGUgY3Vy
cmVudCBkZWZhdWx0IExvY2FsZS4gVXNlZCBmb3IgdGhlCisgICAgICogcHJlc2VudGF0aW9uOiBt
ZW51cywgZGlhbG9ncywgZXRjLiBHZW5lcmFsbHkgc2V0IG9uY2Ugd2hlbiB5b3VyIGFwcGxldCBv
cgorICAgICAqIGFwcGxpY2F0aW9uIGlzIGluaXRpYWxpemVkLCB0aGVuIG5ldmVyIHJlc2V0LiAo
SWYgeW91IGRvIHJlc2V0IHRoZQorICAgICAqIGRlZmF1bHQgbG9jYWxlLCB5b3UgcHJvYmFibHkg
d2FudCB0byByZWxvYWQgeW91ciBHVUksIHNvIHRoYXQgdGhlIGNoYW5nZQorICAgICAqIGlzIHJl
ZmxlY3RlZCBpbiB5b3VyIGludGVyZmFjZS4pCisgICAgICoKKyAgICAgKiBNb3JlIGFkdmFuY2Vk
IHByb2dyYW1zIHdpbGwgYWxsb3cgdXNlcnMgdG8gdXNlIGRpZmZlcmVudCBsb2NhbGVzIGZvcgor
ICAgICAqIGRpZmZlcmVudCBmaWVsZHMsIGUuZy4gaW4gYSBzcHJlYWRzaGVldC4KKyAgICAgKgor
ICAgICAqIE5vdGUgdGhhdCB0aGUgaW5pdGlhbCBzZXR0aW5nIHdpbGwgbWF0Y2ggdGhlIGhvc3Qg
c3lzdGVtLgorICAgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIExvY2FsZSBvYmplY3Qg
Zm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBJRAorICAgICAqIEBzeXN0ZW0KKyAgICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlJiBVX0VYUE9SVDIgZ2V0
RGVmYXVsdCh2b2lkKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRlZmF1bHQuIE5vcm1h
bGx5IHNldCBvbmNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBwcm9jZXNzLAorICAgICAqIHRoZW4g
bmV2ZXIgcmVzZXQuCisgICAgICogc2V0RGVmYXVsdCgpIG9ubHkgY2hhbmdlcyBJQ1UncyBkZWZh
dWx0IGxvY2FsZSBJRCwgPHN0cm9uZz5ub3Q8L3N0cm9uZz4KKyAgICAgKiB0aGUgZGVmYXVsdCBs
b2NhbGUgSUQgb2YgdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQuCisgICAgICoKKyAgICAgKiBAcGFy
YW0gbmV3TG9jYWxlIExvY2FsZSB0byBzZXQgdG8uICBJZiBOVUxMLCBzZXQgdG8gdGhlIHZhbHVl
IG9idGFpbmVkCisgICAgICogICAgICAgICAgICAgICAgICBmcm9tIHRoZSBydW50aW1lIGVudmly
b25lbWVudC4KKyAgICAgKiBAcGFyYW0gc3VjY2VzcyBUaGUgZXJyb3IgY29kZS4KKyAgICAgKiBA
c3lzdGVtCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgc3RhdGljIHZvaWQg
VV9FWFBPUlQyIHNldERlZmF1bHQoY29uc3QgTG9jYWxlJiBuZXdMb2NhbGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgICBzdWNjZXNzKTsKKworICAg
IC8qKgorICAgICAqIENyZWF0ZXMgYSBsb2NhbGUgd2hpY2ggaGFzIGhhZCBtaW5pbWFsIGNhbm9u
aWNhbGl6YXRpb24KKyAgICAgKiBhcyBwZXIgdWxvY19nZXROYW1lKCkuCisgICAgICogQHBhcmFt
IG5hbWUgVGhlIG5hbWUgdG8gY3JlYXRlIGZyb20uICBJZiBuYW1lIGlzIG51bGwsCisgICAgICog
IHRoZSBkZWZhdWx0IExvY2FsZSBpcyB1c2VkLgorICAgICAqIEByZXR1cm4gbmV3IGxvY2FsZSBv
YmplY3QKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKiBAc2VlIHVsb2NfZ2V0TmFtZQor
ICAgICAqLworICAgIHN0YXRpYyBMb2NhbGUgVV9FWFBPUlQyIGNyZWF0ZUZyb21OYW1lKGNvbnN0
IGNoYXIgKm5hbWUpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIGxvY2FsZSBmcm9tIHRo
ZSBnaXZlbiBzdHJpbmcgYWZ0ZXIgY2Fub25pY2FsaXppbmcKKyAgICAgKiB0aGUgc3RyaW5nIGJ5
IGNhbGxpbmcgdWxvY19jYW5vbmljYWxpemUoKS4KKyAgICAgKiBAcGFyYW0gbmFtZSB0aGUgbG9j
YWxlIElEIHRvIGNyZWF0ZSBmcm9tLiAgTXVzdCBub3QgYmUgTlVMTC4KKyAgICAgKiBAcmV0dXJu
IGEgbmV3IGxvY2FsZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbmFtZQorICAg
ICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAqIEBzZWUgdWxvY19jYW5vbmljYWxpemUKKyAgICAg
Ki8KKyAgICBzdGF0aWMgTG9jYWxlIFVfRVhQT1JUMiBjcmVhdGVDYW5vbmljYWwoY29uc3QgY2hh
ciogbmFtZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBsb2NhbGUncyBJU08tNjM5
IGxhbmd1YWdlIGNvZGUuCisgICAgICogQHJldHVybiAgICAgIEFuIGFsaWFzIHRvIHRoZSBjb2Rl
CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgaW5saW5lIGNvbnN0IGNoYXIg
KiAgZ2V0TGFuZ3VhZ2UoICkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBs
b2NhbGUncyBJU08tMTU5MjQgYWJicmV2aWF0aW9uIHNjcmlwdCBjb2RlLgorICAgICAqIEByZXR1
cm4gICAgICBBbiBhbGlhcyB0byB0aGUgY29kZQorICAgICAqIEBzZWUgdXNjcmlwdF9nZXRTaG9y
dE5hbWUKKyAgICAgKiBAc2VlIHVzY3JpcHRfZ2V0Q29kZQorICAgICAqIEBzdGFibGUgSUNVIDIu
OAorICAgICAqLworICAgIGlubGluZSBjb25zdCBjaGFyICogIGdldFNjcmlwdCggKSBjb25zdDsK
KworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGxvY2FsZSdzIElTTy0zMTY2IGNvdW50cnkg
Y29kZS4KKyAgICAgKiBAcmV0dXJuICAgICAgQW4gYWxpYXMgdG8gdGhlIGNvZGUKKyAgICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBpbmxpbmUgY29uc3QgY2hhciAqICBnZXRDb3Vu
dHJ5KCApIGNvbnN0OworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbG9jYWxlJ3MgdmFy
aWFudCBjb2RlLgorICAgICAqIEByZXR1cm4gICAgICBBbiBhbGlhcyB0byB0aGUgY29kZQorICAg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIGlubGluZSBjb25zdCBjaGFyICogIGdl
dFZhcmlhbnQoICkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwcm9ncmFt
bWF0aWMgbmFtZSBvZiB0aGUgZW50aXJlIGxvY2FsZSwgd2l0aCB0aGUgbGFuZ3VhZ2UsCisgICAg
ICogY291bnRyeSBhbmQgdmFyaWFudCBzZXBhcmF0ZWQgYnkgdW5kZXJiYXJzLiBJZiBhIGZpZWxk
IGlzIG1pc3NpbmcsIHVwCisgICAgICogdG8gdHdvIGxlYWRpbmcgdW5kZXJiYXJzIHdpbGwgb2Nj
dXIuIEV4YW1wbGU6ICJlbiIsICJkZV9ERSIsICJlbl9VU19XSU4iLAorICAgICAqICJkZV9fUE9T
SVgiLCAiZnJfX01BQyIsICJfX01BQyIsICJfTVQiLCAiX0ZSX0VVUk8iCisgICAgICogQHJldHVy
biAgICAgIEEgcG9pbnRlciB0byAibmFtZSIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAg
ICovCisgICAgaW5saW5lIGNvbnN0IGNoYXIgKiBnZXROYW1lKCkgY29uc3Q7CisKKyAgICAvKioK
KyAgICAgKiBSZXR1cm5zIHRoZSBwcm9ncmFtbWF0aWMgbmFtZSBvZiB0aGUgZW50aXJlIGxvY2Fs
ZSBhcyBnZXROYW1lIHdvdWxkIHJldHVybiwKKyAgICAgKiBidXQgd2l0aG91dCBrZXl3b3Jkcy4K
KyAgICAgKiBAcmV0dXJuICAgICAgQSBwb2ludGVyIHRvICJuYW1lIi4KKyAgICAgKiBAc2VlIGdl
dE5hbWUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8KKyAgICBjb25zdCBjaGFyICog
Z2V0QmFzZU5hbWUoKSBjb25zdDsKKworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbGlzdCBv
ZiBrZXl3b3JkcyBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFy
YW0gc3RhdHVzIHRoZSBzdGF0dXMgY29kZQorICAgICAqIEByZXR1cm4gcG9pbnRlciB0byBTdHJp
bmdFbnVtZXJhdGlvbiBjbGFzcywgb3IgTlVMTCBpZiB0aGVyZSBhcmUgbm8ga2V5d29yZHMuIAor
ICAgICAqIENsaWVudCBtdXN0IGRpc3Bvc2Ugb2YgaXQgYnkgY2FsbGluZyBkZWxldGUuCisgICAg
ICogQHN0YWJsZSBJQ1UgMi44CisgICAgICovCisgICAgU3RyaW5nRW51bWVyYXRpb24gKiBjcmVh
dGVLZXl3b3JkcyhVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0OworCisgICAgLyoqCisgICAgICog
R2V0IHRoZSB2YWx1ZSBmb3IgYSBrZXl3b3JkLgorICAgICAqCisgICAgICogQHBhcmFtIGtleXdv
cmROYW1lIG5hbWUgb2YgdGhlIGtleXdvcmQgZm9yIHdoaWNoIHdlIHdhbnQgdGhlIHZhbHVlLiBD
YXNlIGluc2Vuc2l0aXZlLgorICAgICAqIEBwYXJhbSBidWZmZXIgVGhlIGJ1ZmZlciB0byByZWNl
aXZlIHRoZSBrZXl3b3JkIHZhbHVlLgorICAgICAqIEBwYXJhbSBidWZmZXJDYXBhY2l0eSBUaGUg
Y2FwYWNpdHkgb2YgcmVjZWl2aW5nIGJ1ZmZlcgorICAgICAqIEBwYXJhbSBzdGF0dXMgUmV0dXJu
cyBhbnkgZXJyb3IgaW5mb3JtYXRpb24gd2hpbGUgcGVyZm9ybWluZyB0aGlzIG9wZXJhdGlvbi4K
KyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGtleXdvcmQgdmFsdWUKKyAgICAgKgor
ICAgICAqIEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIGludDMyX3QgZ2V0S2V5d29yZFZh
bHVlKGNvbnN0IGNoYXIqIGtleXdvcmROYW1lLCBjaGFyICpidWZmZXIsIGludDMyX3QgYnVmZmVy
Q2FwYWNpdHksIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBT
ZXQgdGhlIHZhbHVlIGZvciBhIGtleXdvcmQuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5d29y
ZE5hbWUgbmFtZSBvZiB0aGUga2V5d29yZCB0byBiZSBzZXQuIENhc2UgaW5zZW5zaXRpdmUuCisg
ICAgICogQHBhcmFtIGtleXdvcmRWYWx1ZSB2YWx1ZSBvZiB0aGUga2V5d29yZCB0byBiZSBzZXQu
IElmIDAtbGVuZ3RoIG9yCisgICAgICogIE5VTEwsIHdpbGwgcmVzdWx0IGluIHRoZSBrZXl3b3Jk
IGJlaW5nIHJlbW92ZWQuIE5vIGVycm9yIGlzIGdpdmVuIGlmCisgICAgICogIHRoYXQga2V5d29y
ZCBkb2VzIG5vdCBleGlzdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIFJldHVybnMgYW55IGVycm9y
IGluZm9ybWF0aW9uIHdoaWxlIHBlcmZvcm1pbmcgdGhpcyBvcGVyYXRpb24uCisgICAgICoKKyAg
ICAgKiBAaW50ZXJuYWwgCisgICAgICovCisgICAgdm9pZCBzZXRLZXl3b3JkVmFsdWUoY29uc3Qg
Y2hhcioga2V5d29yZE5hbWUsIGNvbnN0IGNoYXIqIGtleXdvcmRWYWx1ZSwgVUVycm9yQ29kZSAm
c3RhdHVzKTsKKworICAgIC8qKgorICAgICAqIHJldHVybnMgdGhlIGxvY2FsZSdzIHRocmVlLWxl
dHRlciBsYW5ndWFnZSBjb2RlLCBhcyBzcGVjaWZpZWQKKyAgICAgKiBpbiBJU08gZHJhZnQgc3Rh
bmRhcmQgSVNPLTYzOS0yLgorICAgICAqIEByZXR1cm4gICAgICBBbiBhbGlhcyB0byB0aGUgY29k
ZSwgb3IgTlVMTAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIGNvbnN0IGNo
YXIgKiBnZXRJU08zTGFuZ3VhZ2UoKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEZpbGxzIGlu
ICJuYW1lIiB3aXRoIHRoZSBsb2NhbGUncyB0aHJlZS1sZXR0ZXIgSVNPLTMxNjYgY291bnRyeSBj
b2RlLgorICAgICAqIEByZXR1cm4gICAgICBBbiBhbGlhcyB0byB0aGUgY29kZSwgb3IgTlVMTAor
ICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIGNvbnN0IGNoYXIgKiBnZXRJU08z
Q291bnRyeSgpIGNvbnN0OworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgV2luZG93cyBM
Q0lEIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBsb2NhbGUuCisgICAgICogVGhpcyB2YWx1
ZSBpcyBzdG9yZWQgaW4gdGhlIHJlc291cmNlIGRhdGEgZm9yIHRoZSBsb2NhbGUgYXMgYSBvbmUt
dG8tZm91ci1kaWdpdAorICAgICAqIGhleGFkZWNpbWFsIG51bWJlci4gIElmIHRoZSByZXNvdXJj
ZSBpcyBtaXNzaW5nLCBpbiB0aGUgd3JvbmcgZm9ybWF0LCBvcgorICAgICAqIHRoZXJlIGlzIG5v
IFdpbmRvd3MgTENJRCB2YWx1ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoaXMgbG9jYWxlLCByZXR1
cm5zIDAuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdWludDMyX3QgICAg
ICAgIGdldExDSUQodm9pZCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBGaWxscyBpbiAiZGlz
cExhbmciIHdpdGggdGhlIG5hbWUgb2YgdGhpcyBsb2NhbGUncyBsYW5ndWFnZSBpbiBhIGZvcm1h
dCBzdWl0YWJsZSBmb3IKKyAgICAgKiB1c2VyIGRpc3BsYXkgaW4gdGhlIGRlZmF1bHQgbG9jYWxl
LiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBsb2NhbGUncyBsYW5ndWFnZSBjb2RlIGlzCisgICAgICog
ImZyIiBhbmQgdGhlIGRlZmF1bHQgbG9jYWxlJ3MgbGFuZ3VhZ2UgY29kZSBpcyAiZW4iLCB0aGlz
IGZ1bmN0aW9uIHdvdWxkIHNldAorICAgICAqIGRpc3BMYW5nIHRvICJGcmVuY2giLgorICAgICAq
IEBwYXJhbSBkaXNwTGFuZyAgUmVjZWl2ZXMgdGhlIGxhbmd1YWdlJ3MgZGlzcGxheSBuYW1lLgor
ICAgICAqIEByZXR1cm4gICAgICAgICAgQSByZWZlcmVuY2UgdG8gImRpc3BMYW5nIi4KKyAgICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBVbmljb2RlU3RyaW5nJiAgZ2V0RGlzcGxh
eUxhbmd1YWdlKFVuaWNvZGVTdHJpbmcmICAgZGlzcExhbmcpIGNvbnN0OworCisgICAgLyoqCisg
ICAgICogRmlsbHMgaW4gImRpc3BMYW5nIiB3aXRoIHRoZSBuYW1lIG9mIHRoaXMgbG9jYWxlJ3Mg
bGFuZ3VhZ2UgaW4gYSBmb3JtYXQgc3VpdGFibGUgZm9yCisgICAgICogdXNlciBkaXNwbGF5IGlu
IHRoZSBsb2NhbGUgc3BlY2lmaWVkIGJ5ICJkaXNwbGF5TG9jYWxlIi4gIEZvciBleGFtcGxlLCBp
ZiB0aGUgbG9jYWxlJ3MKKyAgICAgKiBsYW5ndWFnZSBjb2RlIGlzICJlbiIgYW5kIGRpc3BsYXlM
b2NhbGUncyBsYW5ndWFnZSBjb2RlIGlzICJmciIsIHRoaXMgZnVuY3Rpb24gd291bGQgc2V0Cisg
ICAgICogZGlzcExhbmcgdG8gIkFuZ2xhaXMiLgorICAgICAqIEBwYXJhbSBkaXNwbGF5TG9jYWxl
ICBTcGVjaWZpZXMgdGhlIGxvY2FsZSB0byBiZSB1c2VkIHRvIGRpc3BsYXkgdGhlIG5hbWUuICBJ
biBvdGhlciB3b3JkcywKKyAgICAgKiAgICAgICAgICAgICAgICAgIGlmIHRoZSBsb2NhbGUncyBs
YW5ndWFnZSBjb2RlIGlzICJlbiIsIHBhc3NpbmcgTG9jYWxlOjpnZXRGcmVuY2goKSBmb3IKKyAg
ICAgKiAgICAgICAgICAgICAgICAgIGRpc3BsYXlMb2NhbGUgd291bGQgcmVzdWx0IGluICJBbmds
YWlzIiwgd2hpbGUgcGFzc2luZyBMb2NhbGU6OmdldEdlcm1hbigpCisgICAgICogICAgICAgICAg
ICAgICAgICBmb3IgZGlzcGxheUxvY2FsZSB3b3VsZCByZXN1bHQgaW4gIkVuZ2xpc2NoIi4KKyAg
ICAgKiBAcGFyYW0gZGlzcExhbmcgIFJlY2VpdmVzIHRoZSBsYW5ndWFnZSdzIGRpc3BsYXkgbmFt
ZS4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIEEgcmVmZXJlbmNlIHRvICJkaXNwTGFuZyIuCisg
ICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyYgIGdldERp
c3BsYXlMYW5ndWFnZSggY29uc3QgICBMb2NhbGUmICAgICAgICAgZGlzcGxheUxvY2FsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJp
bmcmICBkaXNwTGFuZykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBGaWxscyBpbiAiZGlzcFNj
cmlwdCIgd2l0aCB0aGUgbmFtZSBvZiB0aGlzIGxvY2FsZSdzIHNjcmlwdCBpbiBhIGZvcm1hdCBz
dWl0YWJsZQorICAgICAqIGZvciB1c2VyIGRpc3BsYXkgaW4gdGhlIGRlZmF1bHQgbG9jYWxlLiAg
Rm9yIGV4YW1wbGUsIGlmIHRoZSBsb2NhbGUncyBzY3JpcHQgY29kZQorICAgICAqIGlzICJMQVRO
IiBhbmQgdGhlIGRlZmF1bHQgbG9jYWxlJ3MgbGFuZ3VhZ2UgY29kZSBpcyAiZW4iLCB0aGlzIGZ1
bmN0aW9uIHdvdWxkIHNldAorICAgICAqIGRpc3BTY3JpcHQgdG8gIkxhdGluIi4KKyAgICAgKiBA
cGFyYW0gZGlzcFNjcmlwdCAgICBSZWNlaXZlcyB0aGUgc2NyaXB0cydzIGRpc3BsYXkgbmFtZS4K
KyAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICBBIHJlZmVyZW5jZSB0byAiZGlzcFNjcmlwdCIu
CisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICovCisgICAgVW5pY29kZVN0cmluZyYgIGdl
dERpc3BsYXlTY3JpcHQoICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGRpc3BTY3JpcHQpIGNvbnN0
OworCisgICAgLyoqCisgICAgICogRmlsbHMgaW4gImRpc3BTY3JpcHQiIHdpdGggdGhlIG5hbWUg
b2YgdGhpcyBsb2NhbGUncyBjb3VudHJ5IGluIGEgZm9ybWF0IHN1aXRhYmxlCisgICAgICogZm9y
IHVzZXIgZGlzcGxheSBpbiB0aGUgbG9jYWxlIHNwZWNpZmllZCBieSAiZGlzcGxheUxvY2FsZSIu
ICBGb3IgZXhhbXBsZSwgaWYgdGhlIGxvY2FsZSdzCisgICAgICogc2NyaXB0IGNvZGUgaXMgIkxB
VE4iIGFuZCBkaXNwbGF5TG9jYWxlJ3MgbGFuZ3VhZ2UgY29kZSBpcyAiZW4iLCB0aGlzIGZ1bmN0
aW9uIHdvdWxkIHNldAorICAgICAqIGRpc3BTY3JpcHQgdG8gIkxhdGluIi4KKyAgICAgKiBAcGFy
YW0gZGlzcGxheUxvY2FsZSAgICAgIFNwZWNpZmllcyB0aGUgbG9jYWxlIHRvIGJlIHVzZWQgdG8g
ZGlzcGxheSB0aGUgbmFtZS4gIEluIG90aGVyCisgICAgICogICAgICAgICAgICAgICAgICAgICAg
d29yZHMsIGlmIHRoZSBsb2NhbGUncyBzY3JpcHQgY29kZSBpcyAiTEFUTiIsIHBhc3NpbmcKKyAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICBMb2NhbGU6OmdldEZyZW5jaCgpIGZvciBkaXNwbGF5
TG9jYWxlIHdvdWxkIHJlc3VsdCBpbiAiIiwgd2hpbGUKKyAgICAgKiAgICAgICAgICAgICAgICAg
ICAgICBwYXNzaW5nIExvY2FsZTo6Z2V0R2VybWFuKCkgZm9yIGRpc3BsYXlMb2NhbGUgd291bGQg
cmVzdWx0IGluCisgICAgICogICAgICAgICAgICAgICAgICAgICAgIiIuCisgICAgICogQHBhcmFt
IGRpc3BTY3JpcHQgICAgUmVjZWl2ZXMgdGhlIHNjcmlwdHMncyBkaXNwbGF5IG5hbWUuCisgICAg
ICogQHJldHVybiAgICAgICAgICAgICAgQSByZWZlcmVuY2UgdG8gImRpc3BTY3JpcHQiLgorICAg
ICAqIEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcmICBnZXREaXNw
bGF5U2NyaXB0KCAgY29uc3QgICBMb2NhbGUmICAgICAgICAgZGlzcGxheUxvY2FsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYg
IGRpc3BTY3JpcHQpIGNvbnN0OworCisgICAgLyoqCisgICAgICogRmlsbHMgaW4gImRpc3BDb3Vu
dHJ5IiB3aXRoIHRoZSBuYW1lIG9mIHRoaXMgbG9jYWxlJ3MgY291bnRyeSBpbiBhIGZvcm1hdCBz
dWl0YWJsZQorICAgICAqIGZvciB1c2VyIGRpc3BsYXkgaW4gdGhlIGRlZmF1bHQgbG9jYWxlLiAg
Rm9yIGV4YW1wbGUsIGlmIHRoZSBsb2NhbGUncyBjb3VudHJ5IGNvZGUKKyAgICAgKiBpcyAiRlIi
IGFuZCB0aGUgZGVmYXVsdCBsb2NhbGUncyBsYW5ndWFnZSBjb2RlIGlzICJlbiIsIHRoaXMgZnVu
Y3Rpb24gd291bGQgc2V0CisgICAgICogZGlzcENvdW50cnkgdG8gIkZyYW5jZSIuCisgICAgICog
QHBhcmFtIGRpc3BDb3VudHJ5ICAgUmVjZWl2ZXMgdGhlIGNvdW50cnkncyBkaXNwbGF5IG5hbWUu
CisgICAgICogQHJldHVybiAgICAgICAgICAgICAgQSByZWZlcmVuY2UgdG8gImRpc3BDb3VudHJ5
Ii4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBVbmljb2RlU3RyaW5nJiAg
Z2V0RGlzcGxheUNvdW50cnkoICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGRpc3BDb3VudHJ5KSBj
b25zdDsKKworICAgIC8qKgorICAgICAqIEZpbGxzIGluICJkaXNwQ291bnRyeSIgd2l0aCB0aGUg
bmFtZSBvZiB0aGlzIGxvY2FsZSdzIGNvdW50cnkgaW4gYSBmb3JtYXQgc3VpdGFibGUKKyAgICAg
KiBmb3IgdXNlciBkaXNwbGF5IGluIHRoZSBsb2NhbGUgc3BlY2lmaWVkIGJ5ICJkaXNwbGF5TG9j
YWxlIi4gIEZvciBleGFtcGxlLCBpZiB0aGUgbG9jYWxlJ3MKKyAgICAgKiBjb3VudHJ5IGNvZGUg
aXMgIlVTIiBhbmQgZGlzcGxheUxvY2FsZSdzIGxhbmd1YWdlIGNvZGUgaXMgImZyIiwgdGhpcyBm
dW5jdGlvbiB3b3VsZCBzZXQKKyAgICAgKiBkaXNwQ291bnRyeSB0byAiJkVhY3V0ZTt0YXRzLVVu
aXMiLgorICAgICAqIEBwYXJhbSBkaXNwbGF5TG9jYWxlICAgICAgU3BlY2lmaWVzIHRoZSBsb2Nh
bGUgdG8gYmUgdXNlZCB0byBkaXNwbGF5IHRoZSBuYW1lLiAgSW4gb3RoZXIKKyAgICAgKiAgICAg
ICAgICAgICAgICAgICAgICB3b3JkcywgaWYgdGhlIGxvY2FsZSdzIGNvdW50cnkgY29kZSBpcyAi
VVMiLCBwYXNzaW5nCisgICAgICogICAgICAgICAgICAgICAgICAgICAgTG9jYWxlOjpnZXRGcmVu
Y2goKSBmb3IgZGlzcGxheUxvY2FsZSB3b3VsZCByZXN1bHQgaW4gIiZFYWN1dGU7dGF0cy1Vbmlz
Iiwgd2hpbGUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBwYXNzaW5nIExvY2FsZTo6Z2V0
R2VybWFuKCkgZm9yIGRpc3BsYXlMb2NhbGUgd291bGQgcmVzdWx0IGluCisgICAgICogICAgICAg
ICAgICAgICAgICAgICAgIlZlcmVpbmlndGUgU3RhYXRlbiIuCisgICAgICogQHBhcmFtIGRpc3BD
b3VudHJ5ICAgUmVjZWl2ZXMgdGhlIGNvdW50cnkncyBkaXNwbGF5IG5hbWUuCisgICAgICogQHJl
dHVybiAgICAgICAgICAgICAgQSByZWZlcmVuY2UgdG8gImRpc3BDb3VudHJ5Ii4KKyAgICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBVbmljb2RlU3RyaW5nJiAgZ2V0RGlzcGxheUNv
dW50cnkoICBjb25zdCAgIExvY2FsZSYgICAgICAgICBkaXNwbGF5TG9jYWxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgIGRp
c3BDb3VudHJ5KSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEZpbGxzIGluICJkaXNwVmFyIiB3
aXRoIHRoZSBuYW1lIG9mIHRoaXMgbG9jYWxlJ3MgdmFyaWFudCBjb2RlIGluIGEgZm9ybWF0IHN1
aXRhYmxlCisgICAgICogZm9yIHVzZXIgZGlzcGxheSBpbiB0aGUgZGVmYXVsdCBsb2NhbGUuCisg
ICAgICogQHBhcmFtIGRpc3BWYXIgICBSZWNlaXZlcyB0aGUgdmFyaWFudCdzIG5hbWUuCisgICAg
ICogQHJldHVybiAgICAgICAgICBBIHJlZmVyZW5jZSB0byAiZGlzcFZhciIuCisgICAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyYgIGdldERpc3BsYXlWYXJp
YW50KCAgICAgIFVuaWNvZGVTdHJpbmcmIGRpc3BWYXIpIGNvbnN0OworCisgICAgLyoqCisgICAg
ICogRmlsbHMgaW4gImRpc3BWYXIiIHdpdGggdGhlIG5hbWUgb2YgdGhpcyBsb2NhbGUncyB2YXJp
YW50IGNvZGUgaW4gYSBmb3JtYXQKKyAgICAgKiBzdWl0YWJsZSBmb3IgdXNlciBkaXNwbGF5IGlu
IHRoZSBsb2NhbGUgc3BlY2lmaWVkIGJ5ICJkaXNwbGF5TG9jYWxlIi4KKyAgICAgKiBAcGFyYW0g
ZGlzcGxheUxvY2FsZSAgU3BlY2lmaWVzIHRoZSBsb2NhbGUgdG8gYmUgdXNlZCB0byBkaXNwbGF5
IHRoZSBuYW1lLgorICAgICAqIEBwYXJhbSBkaXNwVmFyICAgUmVjZWl2ZXMgdGhlIHZhcmlhbnQn
cyBkaXNwbGF5IG5hbWUuCisgICAgICogQHJldHVybiAgICAgICAgICBBIHJlZmVyZW5jZSB0byAi
ZGlzcFZhciIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgVW5pY29kZVN0
cmluZyYgIGdldERpc3BsYXlWYXJpYW50KCAgY29uc3QgICBMb2NhbGUmICAgICAgICAgZGlzcGxh
eUxvY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWNvZGVTdHJpbmcmICBkaXNwVmFyKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEZpbGxz
IGluICJuYW1lIiB3aXRoIHRoZSBuYW1lIG9mIHRoaXMgbG9jYWxlIGluIGEgZm9ybWF0IHN1aXRh
YmxlIGZvciB1c2VyIGRpc3BsYXkKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCBsb2NhbGUuICBUaGlz
IGZ1bmN0aW9uIHVzZXMgZ2V0RGlzcGxheUxhbmd1YWdlKCksIGdldERpc3BsYXlDb3VudHJ5KCks
CisgICAgICogYW5kIGdldERpc3BsYXlWYXJpYW50KCkgdG8gZG8gaXRzIHdvcmssIGFuZCBvdXRw
dXRzIHRoZSBkaXNwbGF5IG5hbWUgaW4gdGhlIGZvcm1hdAorICAgICAqICJsYW5ndWFnZSAoY291
bnRyeVssdmFyaWFudF0pIi4gIEZvciBleGFtcGxlLCBpZiB0aGUgZGVmYXVsdCBsb2NhbGUgaXMg
ZW5fVVMsIHRoZW4KKyAgICAgKiBmcl9GUidzIGRpc3BsYXkgbmFtZSB3b3VsZCBiZSAiRnJlbmNo
IChGcmFuY2UpIiwgYW5kIGVzX01YX1RyYWRpdGlvbmFsJ3MgZGlzcGxheSBuYW1lCisgICAgICog
d291bGQgYmUgIlNwYW5pc2ggKE1leGljbyxUcmFkaXRpb25hbCkiLgorICAgICAqIEBwYXJhbSBu
YW1lICBSZWNlaXZlcyB0aGUgbG9jYWxlJ3MgZGlzcGxheSBuYW1lLgorICAgICAqIEByZXR1cm4g
ICAgICBBIHJlZmVyZW5jZSB0byAibmFtZSIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAg
ICovCisgICAgVW5pY29kZVN0cmluZyYgIGdldERpc3BsYXlOYW1lKCAgICAgICAgIFVuaWNvZGVT
dHJpbmcmICBuYW1lKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEZpbGxzIGluICJuYW1lIiB3
aXRoIHRoZSBuYW1lIG9mIHRoaXMgbG9jYWxlIGluIGEgZm9ybWF0IHN1aXRhYmxlIGZvciB1c2Vy
IGRpc3BsYXkKKyAgICAgKiBpbiB0aGUgbG9jYWxlIHNwZWNmaWVkIGJ5ICJkaXNwbGF5TG9jYWxl
Ii4gIFRoaXMgZnVuY3Rpb24gdXNlcyBnZXREaXNwbGF5TGFuZ3VhZ2UoKSwKKyAgICAgKiBnZXRE
aXNwbGF5Q291bnRyeSgpLCBhbmQgZ2V0RGlzcGxheVZhcmlhbnQoKSB0byBkbyBpdHMgd29yaywg
YW5kIG91dHB1dHMgdGhlIGRpc3BsYXkKKyAgICAgKiBuYW1lIGluIHRoZSBmb3JtYXQgImxhbmd1
YWdlIChjb3VudHJ5Wyx2YXJpYW50XSkiLiAgRm9yIGV4YW1wbGUsIGlmIGRpc3BsYXlMb2NhbGUg
aXMKKyAgICAgKiBmcl9GUiwgdGhlbiBlbl9VUydzIGRpc3BsYXkgbmFtZSB3b3VsZCBiZSAiQW5n
bGFpcyAoJkVhY3V0ZTt0YXRzLVVuaXMpIiwgYW5kIG5vX05PX05ZJ3MKKyAgICAgKiBkaXNwbGF5
IG5hbWUgd291bGQgYmUgIm5vcnYmZWFjdXRlO2dpZW4gKE5vcnYmZWdyYXZlO2dlLE5ZKSIuCisg
ICAgICogQHBhcmFtIGRpc3BsYXlMb2NhbGUgIFNwZWNpZmllcyB0aGUgbG9jYWxlIHRvIGJlIHVz
ZWQgdG8gZGlzcGxheSB0aGUgbmFtZS4KKyAgICAgKiBAcGFyYW0gbmFtZSAgICAgIFJlY2VpdmVz
IHRoZSBsb2NhbGUncyBkaXNwbGF5IG5hbWUuCisgICAgICogQHJldHVybiAgICAgICAgICBBIHJl
ZmVyZW5jZSB0byAibmFtZSIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAg
VW5pY29kZVN0cmluZyYgIGdldERpc3BsYXlOYW1lKCBjb25zdCAgIExvY2FsZSYgICAgICAgICBk
aXNwbGF5TG9jYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmljb2RlU3RyaW5nJiAgbmFtZSkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0
ZXMgYSBoYXNoIGNvZGUgZm9yIHRoZSBsb2NhbGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisg
ICAgICovCisgICAgaW50MzJfdCAgICAgICAgIGhhc2hDb2RlKHZvaWQpIGNvbnN0OworCisgICAg
LyoqCisgICAgICogU2V0cyB0aGUgbG9jYWxlIHRvIGJvZ3VzCisgICAgICogQSBib2d1cyBsb2Nh
bGUgcmVwcmVzZW50cyBhIG5vbi1leGlzdGluZyBsb2NhbGUgYXNzb2NpYXRlZAorICAgICAqIHdp
dGggc2VydmljZXMgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIGZyb20gbm9uLWxvY2FsZSBkYXRh
CisgICAgICogaW4gYWRkaXRpb24gdG8gbG9jYWxlIChmb3IgZXhhbXBsZSwgY29sbGF0aW9uIGNh
biBiZQorICAgICAqIGluc3RhbnRpYXRlZCBmcm9tIGEgbG9jYWxlIGFuZCBmcm9tIGEgcnVsZSBz
ZXQpLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHZvaWQgc2V0VG9Cb2d1
cygpOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgYm9ndXMgc3RhdGUuIExvY2FsZSBvYmpl
Y3QgY2FuIGJlIGJvZ3VzIGlmIGl0IGRvZXNuJ3QgZXhpc3QKKyAgICAgKiBAcmV0dXJuIEZBTFNF
IGlmIGl0IGlzIGEgcmVhbCBsb2NhbGUsIFRSVUUgaWYgaXQgaXMgYSBib2d1cyBsb2NhbGUKKyAg
ICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBVQm9vbCBpc0JvZ3VzKHZvaWQpIGNv
bnN0OworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGluc3RhbGxlZCBs
b2NhbGVzLgorICAgICAqIEBwYXJhbSBjb3VudCBSZWNlaXZlcyB0aGUgbnVtYmVyIG9mIGxvY2Fs
ZXMgaW4gdGhlIGxpc3QuCisgICAgICogQHJldHVybiAgICAgIEEgcG9pbnRlciB0byBhbiBhcnJh
eSBvZiBMb2NhbGUgb2JqZWN0cy4gIFRoaXMgYXJyYXkgaXMgdGhlIGxpc3QKKyAgICAgKiAgICAg
ICAgICAgICAgb2YgYWxsIGxvY2FsZXMgd2l0aCBpbnN0YWxsZWQgcmVzb3VyY2UgZmlsZXMuICBU
aGUgY2FsbGVkIGRvZXMgTk9UCisgICAgICogICAgICAgICAgICAgIGdldCBvd25lcnNoaXAgb2Yg
dGhpcyBsaXN0LCBhbmQgbXVzdCBOT1QgZGVsZXRlIGl0LgorICAgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgICAqLworICAgIHN0YXRpYyBjb25zdCBMb2NhbGUqIFVfRVhQT1JUMiBnZXRBdmFpbGFi
bGVMb2NhbGVzKGludDMyX3QmIGNvdW50KTsKKworICAgIC8qKgorICAgICAqIEdldHMgYSBsaXN0
IG9mIGFsbCBhdmFpbGFibGUgMi1sZXR0ZXIgY291bnRyeSBjb2RlcyBkZWZpbmVkIGluIElTTyAz
MTY2LiAgVGhpcyBpcyBhCisgICAgICogcG9pbnRlciB0byBhbiBhcnJheSBvZiBwb2ludGVycyB0
byBhcnJheXMgb2YgY2hhci4gIEFsbCBvZiB0aGVzZSBwb2ludGVycyBhcmUKKyAgICAgKiBvd25l
ZCBieSBJQ1UtLSBkbyBub3QgZGVsZXRlIHRoZW0sIGFuZCBkbyBub3Qgd3JpdGUgdGhyb3VnaCB0
aGVtLiAgVGhlIGFycmF5IGlzCisgICAgICogdGVybWluYXRlZCB3aXRoIGEgbnVsbCBwb2ludGVy
LgorICAgICAqIEByZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgY291bnRyeSBjb2Rlcwor
ICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCogVV9FWFBPUlQyIGdldElTT0NvdW50cmllcygpOworCisgICAgLyoqCisgICAgICogR2V0
cyBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBsYW5ndWFnZSBjb2RlcyBkZWZpbmVkIGluIElTTyA2
MzkuICBUaGlzIGlzIGEgcG9pbnRlcgorICAgICAqIHRvIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRv
IGFycmF5cyBvZiBjaGFyLiAgQWxsIG9mIHRoZXNlIHBvaW50ZXJzIGFyZSBvd25lZAorICAgICAq
IGJ5IElDVS0tIGRvIG5vdCBkZWxldGUgdGhlbSwgYW5kIGRvIG5vdCB3cml0ZSB0aHJvdWdoIHRo
ZW0uICBUaGUgYXJyYXkgaXMKKyAgICAgKiB0ZXJtaW5hdGVkIHdpdGggYSBudWxsIHBvaW50ZXIu
CisgICAgICogQHJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBsYW5ndWFnZSBjb2Rlcwor
ICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCogVV9FWFBPUlQyIGdldElTT0xhbmd1YWdlcygpOworCisgICAgLyoqCisgICAgICogSUNV
ICJwb29yIG1hbidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoaXMgY2xhc3MuCisg
ICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgVUNsYXNz
SUQgVV9FWFBPUlQyIGdldFN0YXRpY0NsYXNzSUQoKTsKKworICAgIC8qKgorICAgICAqIElDVSAi
cG9vciBtYW4ncyBSVFRJIiwgcmV0dXJucyBhIFVDbGFzc0lEIGZvciB0aGUgYWN0dWFsIGNsYXNz
LgorICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAgICovCisgICAgdmlydHVhbCBV
Q2xhc3NJRCBnZXREeW5hbWljQ2xhc3NJRCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6IC8qIG9ubHkg
cHJvdGVjdGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBETyBOT1QgVVNFLiAqLworICAgIC8qKgor
ICAgICAqIFNldCB0aGlzIGZyb20gYSBzaW5nbGUgUE9TSVggc3R5bGUgbG9jYWxlIHN0cmluZy4K
KyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB2b2lkIHNldEZyb21QT1NJWElEKGNvbnN0
IGNoYXIgKnBvc2l4SUQpOworCitwcml2YXRlOgorICAgIC8qKgorICAgICAqIEluaXRpYWxpemUg
dGhlIGxvY2FsZSBvYmplY3Qgd2l0aCBhIG5ldyBuYW1lLgorICAgICAqIFdhcyBkZXByZWNhdGVk
IC0gdXNlZCBpbiBpbXBsZW1lbnRhdGlvbiAtIG1vdmVkIGludGVybmFsCisgICAgICoKKyAgICAg
KiBAcGFyYW0gY0xvY2FsZUlEIFRoZSBuZXcgbG9jYWxlIG5hbWUuCisgICAgICovCisgICAgTG9j
YWxlJiBpbml0KGNvbnN0IGNoYXIqIGNMb2NhbGVJRCwgVUJvb2wgY2Fub25pY2FsaXplKTsKKwor
ICAgIC8qCisgICAgICogSW50ZXJuYWwgY29uc3RydWN0b3IgdG8gYWxsb3cgY29uc3RydWN0aW9u
IG9mIGEgbG9jYWxlIG9iamVjdCB3aXRoCisgICAgICogICBOTyBzaWRlIGVmZmVjdHMuICAgKERl
ZmF1bHQgY29uc3RydWN0b3IgdHJpZXMgdG8gZ2V0CisgICAgICogICB0aGUgZGVmYXVsdCBsb2Nh
bGUuKQorICAgICAqLworICAgIGVudW0gRUxvY2FsZVR5cGUgeworICAgICAgICBlQk9HVVMKKyAg
ICB9OworICAgIExvY2FsZShFTG9jYWxlVHlwZSk7CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFs
aXplIHRoZSBsb2NhbGUgY2FjaGUgZm9yIGNvbW1vbmx5IHVzZWQgbG9jYWxlcworICAgICAqLwor
ICAgIHN0YXRpYyBMb2NhbGUgKmdldExvY2FsZUNhY2hlKHZvaWQpOworCisgICAgY2hhciBsYW5n
dWFnZVtVTE9DX0xBTkdfQ0FQQUNJVFldOworICAgIGNoYXIgc2NyaXB0W1VMT0NfU0NSSVBUX0NB
UEFDSVRZXTsKKyAgICBjaGFyIGNvdW50cnlbVUxPQ19DT1VOVFJZX0NBUEFDSVRZXTsKKyAgICBp
bnQzMl90IHZhcmlhbnRCZWdpbjsKKyAgICBjaGFyKiBmdWxsTmFtZTsKKyAgICBjaGFyIGZ1bGxO
YW1lQnVmZmVyW1VMT0NfRlVMTE5BTUVfQ0FQQUNJVFldOworICAgIC8vIG5hbWUgd2l0aG91dCBr
ZXl3b3JkcworICAgIGNoYXIqIGJhc2VOYW1lOworICAgIGNoYXIgYmFzZU5hbWVCdWZmZXJbVUxP
Q19GVUxMTkFNRV9DQVBBQ0lUWV07CisKKyAgICBVQm9vbCBmSXNCb2d1czsKKworICAgIHN0YXRp
YyBjb25zdCBMb2NhbGUgJmdldExvY2FsZShpbnQgbG9jaWQpOworCisgICAgLyoqCisgICAgICog
QSBmcmllbmQgdG8gYWxsb3cgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGJlIHNldCBieSBlaXRoZXIg
dGhlIEMgb3IgQysrIEFQSS4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBmcmllbmQg
dm9pZCBsb2NhbGVfc2V0X2RlZmF1bHRfaW50ZXJuYWwoY29uc3QgY2hhciAqKTsKK307CisKK2lu
bGluZSBVQm9vbAorTG9jYWxlOjpvcGVyYXRvciE9KGNvbnN0ICAgIExvY2FsZSYgICAgIG90aGVy
KSBjb25zdAoreworICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7Cit9CisKK2lubGluZSBj
b25zdCBjaGFyICoKK0xvY2FsZTo6Z2V0Q291bnRyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
dW50cnk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyICoKK0xvY2FsZTo6Z2V0TGFuZ3VhZ2UoKSBj
b25zdAoreworICAgIHJldHVybiBsYW5ndWFnZTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIgKgor
TG9jYWxlOjpnZXRTY3JpcHQoKSBjb25zdAoreworICAgIHJldHVybiBzY3JpcHQ7Cit9CisKK2lu
bGluZSBjb25zdCBjaGFyICoKK0xvY2FsZTo6Z2V0VmFyaWFudCgpIGNvbnN0Cit7CisgICAgZ2V0
QmFzZU5hbWUoKTsgLy8gbGF6eSBpbml0CisgICAgcmV0dXJuICZiYXNlTmFtZVt2YXJpYW50QmVn
aW5dOworfQorCitpbmxpbmUgY29uc3QgY2hhciAqCitMb2NhbGU6OmdldE5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBmdWxsTmFtZTsKK30KKworaW5saW5lIFVCb29sCitMb2NhbGU6OmlzQm9n
dXModm9pZCkgY29uc3QgeworICAgIHJldHVybiBmSXNCb2d1czsKK30KKworVV9OQU1FU1BBQ0Vf
RU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmlj
b2RlL251bWZtdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL251bWZtdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYzOTE0Y2E0ZjFhNDI0MDUxMzc4NjkxZWI3NDZjZTA2YjI2N2JkZDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvbnVtZm10
LmgKQEAgLTAsMCArMSwxMDUxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29w
eXJpZ2h0IChDKSAxOTk3LTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4KKyogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqCisqIEZpbGUgTlVNRk1ULkgKKyoKKyogTW9kaWZpY2F0aW9uIEhpc3Rv
cnk6CisqCisqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKyogICAwMi8x
OS85NyAgICBhbGl1ICAgICAgICBDb252ZXJ0ZWQgZnJvbSBqYXZhLgorKiAgIDAzLzE4Lzk3ICAg
IGNsaHVhbmcgICAgIFVwZGF0ZWQgcGVyIEMrKyBpbXBsZW1lbnRhdGlvbi4KKyogICAwNC8xNy85
NyAgICBhbGl1ICAgICAgICBDaGFuZ2VkIERpZ2l0Q291bnQgdG8gaW50IHBlciBjb2RlIHJldmll
dy4KKyogICAgMDcvMjAvOTggICAgc3RlcGhlbiAgICAgICAgSkRLIDEuMiBzeW5jIHVwLiBBZGRl
ZCBzY2llbnRpZmljIHN1cHBvcnQuCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5n
ZWQgbmFtaW5nIGNvbnZlbnRpb25zIHRvIG1hdGNoIEMrKyBndWlkZWxpbmVzCisqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERlcmVjYXRlZCBKYXZhIHN0eWxlIGNvbnN0YW50cyAoZWcsIElO
VEVHRVJfRklFTEQpCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworI2lmbmRlZiBOVU1G
TVRfSAorI2RlZmluZSBOVU1GTVRfSAorCisKKyNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgor
CisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQysrIEFQSTogQWJzdHJhY3QgYmFzZSBjbGFzcyBm
b3IgYWxsIG51bWJlciBmb3JtYXRzLgorICovCisKKyNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5H
CisKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUgInVuaWNvZGUvZm9ybWF0
LmgiCisjaW5jbHVkZSAidW5pY29kZS91bnVtLmgiIC8vIFVOdW1iZXJGb3JtYXRTdHlsZQorI2lu
Y2x1ZGUgInVuaWNvZGUvbG9jaWQuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmluZ3BpZWNlLmgi
CisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKyNpZiAhVUNPTkZJR19OT19TRVJWSUNFCitjbGFzcyBO
dW1iZXJGb3JtYXRGYWN0b3J5OworY2xhc3MgU3RyaW5nRW51bWVyYXRpb247CisjZW5kaWYKKwor
LyoqCisgKgorICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIG51bWJlciBmb3JtYXRzLiAg
UHJvdmlkZXMgaW50ZXJmYWNlIGZvcgorICogZm9ybWF0dGluZyBhbmQgcGFyc2luZyBhIG51bWJl
ci4gIEFsc28gcHJvdmlkZXMgbWV0aG9kcyBmb3IKKyAqIGRldGVybWluaW5nIHdoaWNoIGxvY2Fs
ZXMgaGF2ZSBudW1iZXIgZm9ybWF0cywgYW5kIHdoYXQgdGhlaXIgbmFtZXMKKyAqIGFyZS4KKyAq
IDxQPgorICogTnVtYmVyRm9ybWF0IGhlbHBzIHlvdSB0byBmb3JtYXQgYW5kIHBhcnNlIG51bWJl
cnMgZm9yIGFueSBsb2NhbGUuCisgKiBZb3VyIGNvZGUgY2FuIGJlIGNvbXBsZXRlbHkgaW5kZXBl
bmRlbnQgb2YgdGhlIGxvY2FsZSBjb252ZW50aW9ucworICogZm9yIGRlY2ltYWwgcG9pbnRzLCB0
aG91c2FuZHMtc2VwYXJhdG9ycywgb3IgZXZlbiB0aGUgcGFydGljdWxhcgorICogZGVjaW1hbCBk
aWdpdHMgdXNlZCwgb3Igd2hldGhlciB0aGUgbnVtYmVyIGZvcm1hdCBpcyBldmVuIGRlY2ltYWwu
CisgKiA8UD4KKyAqIFRvIGZvcm1hdCBhIG51bWJlciBmb3IgdGhlIGN1cnJlbnQgTG9jYWxlLCB1
c2Ugb25lIG9mIHRoZSBzdGF0aWMKKyAqIGZhY3RvcnkgbWV0aG9kczoKKyAqIDxwcmU+CisgKiBc
Y29kZQorICogICAgZG91YmxlIG15TnVtYmVyID0gNy4wOworICogICAgVW5pY29kZVN0cmluZyBt
eVN0cmluZzsKKyAqICAgIFVFcnJvckNvZGUgc3VjY2VzcyA9IFVfWkVST19FUlJPUjsKKyAqICAg
IE51bWJlckZvcm1hdCogbmYgPSBOdW1iZXJGb3JtYXQ6OmNyZWF0ZUluc3RhbmNlKHN1Y2Nlc3Mp
CisgKiAgICBuZi0+Zm9ybWF0KG15TnVtYmVyLCBteVN0cmluZyk7CisgKiAgICBjb3V0IDw8ICIg
RXhhbXBsZSAxOiAiIDw8IG15U3RyaW5nIDw8IGVuZGw7CisgKiBcZW5kY29kZQorICogPC9wcmU+
CisgKiBJZiB5b3UgYXJlIGZvcm1hdHRpbmcgbXVsdGlwbGUgbnVtYmVycywgaXQgaXMgbW9yZSBl
ZmZpY2llbnQgdG8gZ2V0CisgKiB0aGUgZm9ybWF0IGFuZCB1c2UgaXQgbXVsdGlwbGUgdGltZXMg
c28gdGhhdCB0aGUgc3lzdGVtIGRvZXNuJ3QKKyAqIGhhdmUgdG8gZmV0Y2ggdGhlIGluZm9ybWF0
aW9uIGFib3V0IHRoZSBsb2NhbCBsYW5ndWFnZSBhbmQgY291bnRyeQorICogY29udmVudGlvbnMg
bXVsdGlwbGUgdGltZXMuCisgKiA8cHJlPgorICogXGNvZGUKKyAqICAgICBVbmljb2RlU3RyaW5n
IG15U3RyaW5nOworICogICAgIFVFcnJvckNvZGUgc3VjY2VzcyA9IFVfWkVST19FUlJPUjsKKyAq
ICAgICBuZiA9IE51bWJlckZvcm1hdDo6Y3JlYXRlSW5zdGFuY2UoIHN1Y2Nlc3MgKTsKKyAqICAg
ICBpbnQzMl90IGFbXSA9IHsgMTIzLCAzMzMzLCAtMTIzNDU2NyB9OworICogICAgIGNvbnN0IGlu
dDMyX3QgYV9sZW4gPSBzaXplb2YoYSkgLyBzaXplb2YoYVswXSk7CisgKiAgICAgbXlTdHJpbmcu
cmVtb3ZlKCk7CisgKiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgYV9sZW47IGkrKykgewor
ICogICAgICAgICBuZi0+Zm9ybWF0KGFbaV0sIG15U3RyaW5nKTsKKyAqICAgICAgICAgbXlTdHJp
bmcgKz0gIiA7ICI7CisgKiAgICAgfQorICogICAgIGNvdXQgPDwgIiBFeGFtcGxlIDI6ICIgPDwg
bXlTdHJpbmcgPDwgZW5kbDsKKyAqIFxlbmRjb2RlCisgKiA8L3ByZT4KKyAqIFRvIGZvcm1hdCBh
IG51bWJlciBmb3IgYSBkaWZmZXJlbnQgTG9jYWxlLCBzcGVjaWZ5IGl0IGluIHRoZQorICogY2Fs
bCB0byBjcmVhdGVJbnN0YW5jZSgpLgorICogPHByZT4KKyAqIFxjb2RlCisgKiAgICAgbmYgPSBO
dW1iZXJGb3JtYXQ6OmNyZWF0ZUluc3RhbmNlKCBMb2NhbGU6OkZSRU5DSCwgc3VjY2VzcyApOwor
ICogXGVuZGNvZGUKKyAqIDwvcHJlPgorICogWW91IGNhbiB1c2UgYSBOdW1iZXJGb3JtYXQgdG8g
cGFyc2UgYWxzby4KKyAqIDxwcmU+CisgKiBcY29kZQorICogICAgVUVycm9yQ29kZSBzdWNjZXNz
OworICogICAgRm9ybWF0dGFibGUgcmVzdWx0KC05OTkpOyAgLy8gaW5pdGlhbGl6ZWQgd2l0aCBl
cnJvciBjb2RlCisgKiAgICBuZi0+cGFyc2UobXlTdHJpbmcsIHJlc3VsdCwgc3VjY2Vzcyk7Cisg
KiBcZW5kY29kZQorICogPC9wcmU+CisgKiBVc2UgY3JlYXRlSW5zdGFuY2UgdG8gZ2V0IHRoZSBu
b3JtYWwgbnVtYmVyIGZvcm1hdCBmb3IgdGhhdCBjb3VudHJ5LgorICogVGhlcmUgYXJlIG90aGVy
IHN0YXRpYyBmYWN0b3J5IG1ldGhvZHMgYXZhaWxhYmxlLiAgVXNlIGdldEN1cnJlbmN5CisgKiB0
byBnZXQgdGhlIGN1cnJlbmN5IG51bWJlciBmb3JtYXQgZm9yIHRoYXQgY291bnRyeS4gIFVzZSBn
ZXRQZXJjZW50CisgKiB0byBnZXQgYSBmb3JtYXQgZm9yIGRpc3BsYXlpbmcgcGVyY2VudGFnZXMu
IFdpdGggdGhpcyBmb3JtYXQsIGEKKyAqIGZyYWN0aW9uIGZyb20gMC41MyBpcyBkaXNwbGF5ZWQg
YXMgNTMlLgorICogPFA+CisgKiBTdGFydGluZyBmcm9tIElDVSA0LjIsIHlvdSBjYW4gdXNlIGNy
ZWF0ZUluc3RhbmNlKCkgYnkgcGFzc2luZyBpbiBhICdzdHlsZScKKyAqIGFzIHBhcmFtZXRlciB0
byBnZXQgdGhlIGNvcnJlY3QgaW5zdGFuY2UuCisgKiBGb3IgZXhhbXBsZSwKKyAqIHVzZSBjcmVh
dGVJbnN0YW5jZSguLi5rTnVtYmVyU3R5bGUuLi4pIHRvIGdldCB0aGUgbm9ybWFsIG51bWJlciBm
b3JtYXQsCisgKiBjcmVhdGVJbnN0YW5jZSguLi5rUGVyY2VudFN0eWxlLi4uKSB0byBnZXQgYSBm
b3JtYXQgZm9yIGRpc3BsYXlpbmcKKyAqIHBlcmNlbnRhZ2UsCisgKiBjcmVhdGVJbnN0YW5jZSgu
Li5rU2NpZW50aWZpY1N0eWxlLi4uKSB0byBnZXQgYSBmb3JtYXQgZm9yIGRpc3BsYXlpbmcKKyAq
IHNjaWVudGlmaWMgbnVtYmVyLAorICogY3JlYXRlSW5zdGFuY2UoLi4ua0N1cnJlbmN5U3R5bGUu
Li4pIHRvIGdldCB0aGUgY3VycmVuY3kgbnVtYmVyIGZvcm1hdCwKKyAqIGluIHdoaWNoIHRoZSBj
dXJyZW5jeSBpcyByZXByZXNlbnRlZCBieSBpdHMgc3ltYm9sLCBmb3IgZXhhbXBsZSwgIiQzLjAw
Ii4KKyAqIGNyZWF0ZUluc3RhbmNlKC4uLmtJc29DdXJyZW5jeVN0eWxlLi4uKSAgdG8gZ2V0IHRo
ZSBjdXJyZW5jeSBudW1iZXIgZm9ybWF0LAorICogaW4gd2hpY2ggdGhlIGN1cnJlbmN5IGlzIHJl
cHJlc2VudGVkIGJ5IGl0cyBJU08gY29kZSwgZm9yIGV4YW1wbGUgIlVTRDMuMDAiLgorICogY3Jl
YXRlSW5zdGFuY2UoLi4ua1BsdXJhbEN1cnJlbmN5U3R5bGUuLi4pIHRvIGdldCB0aGUgY3VycmVu
Y3kgbnVtYmVyIGZvcm1hdCwKKyAqIGluIHdoaWNoIHRoZSBjdXJyZW5jeSBpcyByZXByZXNlbnRl
ZCBieSBpdHMgZnVsbCBuYW1lIGluIHBsdXJhbCBmb3JtYXQsCisgKiBmb3IgZXhhbXBsZSwgIjMu
MDAgVVMgZG9sbGFycyIgb3IgIjEuMDAgVVMgZG9sbGFyIi4KKyAqIDxQPgorICogWW91IGNhbiBh
bHNvIGNvbnRyb2wgdGhlIGRpc3BsYXkgb2YgbnVtYmVycyB3aXRoIHN1Y2ggbWV0aG9kcyBhcwor
ICogZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzLiAgSWYgeW91IHdhbnQgZXZlbiBtb3JlIGNvbnRy
b2wgb3ZlciB0aGUKKyAqIGZvcm1hdCBvciBwYXJzaW5nLCBvciB3YW50IHRvIGdpdmUgeW91ciB1
c2VycyBtb3JlIGNvbnRyb2wsIHlvdSBjYW4KKyAqIHRyeSBjYXN0aW5nIHRoZSBOdW1iZXJGb3Jt
YXQgeW91IGdldCBmcm9tIHRoZSBmYWN0b3J5IG1ldGhvZHMgdG8gYQorICogRGVjaW1hbE51bWJl
ckZvcm1hdC4gVGhpcyB3aWxsIHdvcmsgZm9yIHRoZSB2YXN0IG1ham9yaXR5IG9mCisgKiBjb3Vu
dHJpZXM7IGp1c3QgcmVtZW1iZXIgdG8gcHV0IGl0IGluIGEgdHJ5IGJsb2NrIGluIGNhc2UgeW91
CisgKiBlbmNvdW50ZXIgYW4gdW51c3VhbCBvbmUuCisgKiA8UD4KKyAqIFlvdSBjYW4gYWxzbyB1
c2UgZm9ybXMgb2YgdGhlIHBhcnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCisgKiBQYXJzZVBv
c2l0aW9uIGFuZCBGaWVsZFBvc2l0aW9uIHRvIGFsbG93IHlvdSB0bzoKKyAqIDx1bCB0eXBlPXJv
dW5kPgorICogICA8bGk+KGEpIHByb2dyZXNzaXZlbHkgcGFyc2UgdGhyb3VnaCBwaWVjZXMgb2Yg
YSBzdHJpbmcuCisgKiAgIDxsaT4oYikgYWxpZ24gdGhlIGRlY2ltYWwgcG9pbnQgYW5kIG90aGVy
IGFyZWFzLgorICogPC91bD4KKyAqIEZvciBleGFtcGxlLCB5b3UgY2FuIGFsaWduIG51bWJlcnMg
aW4gdHdvIHdheXMuCisgKiA8UD4KKyAqIElmIHlvdSBhcmUgdXNpbmcgYSBtb25vc3BhY2VkIGZv
bnQgd2l0aCBzcGFjaW5nIGZvciBhbGlnbm1lbnQsIHlvdQorICogY2FuIHBhc3MgdGhlIEZpZWxk
UG9zaXRpb24gaW4geW91ciBmb3JtYXQgY2FsbCwgd2l0aCBmaWVsZCA9CisgKiBJTlRFR0VSX0ZJ
RUxELiBPbiBvdXRwdXQsIGdldEVuZEluZGV4IHdpbGwgYmUgc2V0IHRvIHRoZSBvZmZzZXQKKyAq
IGJldHdlZW4gdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBpbnRlZ2VyIGFuZCB0aGUgZGVjaW1h
bC4gQWRkCisgKiAoZGVzaXJlZFNwYWNlQ291bnQgLSBnZXRFbmRJbmRleCkgc3BhY2VzIGF0IHRo
ZSBmcm9udCBvZiB0aGUKKyAqIHN0cmluZy4KKyAqIDxQPgorICogSWYgeW91IGFyZSB1c2luZyBw
cm9wb3J0aW9uYWwgZm9udHMsIGluc3RlYWQgb2YgcGFkZGluZyB3aXRoCisgKiBzcGFjZXMsIG1l
YXN1cmUgdGhlIHdpZHRoIG9mIHRoZSBzdHJpbmcgaW4gcGl4ZWxzIGZyb20gdGhlIHN0YXJ0IHRv
CisgKiBnZXRFbmRJbmRleC4gIFRoZW4gbW92ZSB0aGUgcGVuIGJ5IChkZXNpcmVkUGl4ZWxXaWR0
aCAtCisgKiB3aWR0aFRvQWxpZ25tZW50UG9pbnQpIGJlZm9yZSBkcmF3aW5nIHRoZSB0ZXh0LiAg
SXQgYWxzbyB3b3JrcworICogd2hlcmUgdGhlcmUgaXMgbm8gZGVjaW1hbCwgYnV0IHBvc3NpYmx5
IGFkZGl0aW9uYWwgY2hhcmFjdGVycyBhdAorICogdGhlIGVuZCwgZS5nLiB3aXRoIHBhcmVudGhl
c2VzIGluIG5lZ2F0aXZlIG51bWJlcnM6ICIoMTIpIiBmb3IgLTEyLgorICogPHA+CisgKiA8ZW0+
VXNlciBzdWJjbGFzc2VzIGFyZSBub3Qgc3VwcG9ydGVkLjwvZW0+IFdoaWxlIGNsaWVudHMgbWF5
IHdyaXRlCisgKiBzdWJjbGFzc2VzLCBzdWNoIGNvZGUgd2lsbCBub3QgbmVjZXNzYXJpbHkgd29y
ayBhbmQgd2lsbCBub3QgYmUKKyAqIGd1YXJhbnRlZWQgdG8gd29yayBzdGFibHkgZnJvbSByZWxl
YXNlIHRvIHJlbGVhc2UuCisgKgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK2NsYXNzIFVfSTE4
Tl9BUEkgTnVtYmVyRm9ybWF0IDogcHVibGljIEZvcm1hdCB7CitwdWJsaWM6CisKKyAgICAvKioK
KyAgICAgKiBDb25zdGFudHMgZm9yIHZhcmlvdXMgbnVtYmVyIGZvcm1hdCBzdHlsZXMuCisgICAg
ICoga051bWJlclN0eWxlIHNwZWNpZmllcyBhIG5vcm1hbCBudW1iZXIgc3R5bGUgb2YgZm9ybWF0
LgorICAgICAqIGtDdXJyZW5jeVN0eWxlIHNwZWNpZmllcyBhIGN1cnJlbmN5IGZvcm1hdCB1c2lu
ZyBjdXJyZW5jeSBzeW1ib2wgbmFtZSwKKyAgICAgKiBzdWNoIGFzIGluICIkMS4wMCIuCisgICAg
ICoga1BlcmNlbnRTdHlsZSBzcGVjaWZpZXMgYSBzdHlsZSBvZiBmb3JtYXQgdG8gZGlzcGxheSBw
ZXJjZW50LgorICAgICAqIGtTY2llbnRpZmljU3R5bGUgc3BlY2lmaWVzIGEgc3R5bGUgb2YgZm9y
bWF0IHRvIGRpc3BsYXkgc2NpZW50aWZpYyBudW1iZXIuCisgICAgICoga0lTT0N1cnJlbmN5U3R5
bGUgc3BlY2lmaWVzIGEgY3VycmVuY3kgZm9ybWF0IHVzaW5nIElTTyBjdXJyZW5jeSBjb2RlLAor
ICAgICAqIHN1Y2ggYXMgaW4gIlVTRDEuMDAiLgorICAgICAqIGtQbHVyYWxDdXJyZW5jeVN0eWxl
IHNwZWNpZmllcyBhIGN1cnJlbmN5IGZvcm1hdCB1c2luZyBjdXJyZW5jeSBwbHVyYWwKKyAgICAg
KiBuYW1lcywgc3VjaCBhcyBpbiAiMS4wMCBVUyBkb2xsYXIiIGFuZCAiMy4wMCBVUyBkb2xsYXJz
Ii4KKyAgICAgKiBAZHJhZnQgSUNVIDQuMgorICAgICAqLworICAgIGVudW0gRVN0eWxlcyB7Cisg
ICAgICAgIGtOdW1iZXJTdHlsZSwKKyAgICAgICAga0N1cnJlbmN5U3R5bGUsCisgICAgICAgIGtQ
ZXJjZW50U3R5bGUsCisgICAgICAgIGtTY2llbnRpZmljU3R5bGUsCisgICAgICAgIGtJc29DdXJy
ZW5jeVN0eWxlLAorICAgICAgICBrUGx1cmFsQ3VycmVuY3lTdHlsZSwKKyAgICAgICAga1N0eWxl
Q291bnQgLy8gQUxXQVlTIExBU1QgRU5VTTogbnVtYmVyIG9mIHN0eWxlcworICAgIH07CisKKyAg
ICAvKioKKyAgICAgKiBBbGlnbm1lbnQgRmllbGQgY29uc3RhbnRzIHVzZWQgdG8gY29uc3RydWN0
IGEgRmllbGRQb3NpdGlvbiBvYmplY3QuCisgICAgICogU2lnbmlmaWVzIHRoYXQgdGhlIHBvc2l0
aW9uIG9mIHRoZSBpbnRlZ2VyIHBhcnQgb3IgZnJhY3Rpb24gcGFydCBvZgorICAgICAqIGEgZm9y
bWF0dGVkIG51bWJlciBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBOb3RlOiBh
cyBvZiBJQ1UgNC40LCB0aGUgdmFsdWVzIGluIHRoaXMgZW51bSBoYXZlIGJlZW4gZXh0ZW5kZWQg
dG8KKyAgICAgKiBzdXBwb3J0IGlkZW50aWZpY2F0aW9uIG9mIGFsbCBudW1iZXIgZm9ybWF0IGZp
ZWxkcywgbm90IGp1c3QgdGhvc2UKKyAgICAgKiBwZXJ0YWluaW5nIHRvIGFsaWdubWVudC4KKyAg
ICAgKgorICAgICAqIEBzZWUgRmllbGRQb3NpdGlvbgorICAgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgICAqLworICAgIGVudW0gRUFsaWdubWVudEZpZWxkcyB7CisgICAgICAgIGtJbnRlZ2VyRmll
bGQsCisgICAgICAgIGtGcmFjdGlvbkZpZWxkLAorICAgICAgICBrRGVjaW1hbFNlcGFyYXRvckZp
ZWxkLAorICAgICAgICBrRXhwb25lbnRTeW1ib2xGaWVsZCwKKyAgICAgICAga0V4cG9uZW50U2ln
bkZpZWxkLAorICAgICAgICBrRXhwb25lbnRGaWVsZCwKKyAgICAgICAga0dyb3VwaW5nU2VwYXJh
dG9yRmllbGQsCisgICAgICAgIGtDdXJyZW5jeUZpZWxkLAorICAgICAgICBrUGVyY2VudEZpZWxk
LAorICAgICAgICBrUGVybWlsbEZpZWxkLAorICAgICAgICBrU2lnbkZpZWxkLAorCisgICAgLyoq
CisgICAgICogVGhlc2UgY29uc3RhbnRzIGFyZSBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBh
dGliaWxpdHkgb25seS4KKyAgICAgKiBQbGVhc2UgdXNlIHRoZSBDKysgc3R5bGUgY29uc3RhbnRz
IGRlZmluZWQgYWJvdmUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgICAg
IElOVEVHRVJfRklFTEQgICAgICAgID0ga0ludGVnZXJGaWVsZCwKKyAgICAgICAgRlJBQ1RJT05f
RklFTEQgICAgICAgID0ga0ZyYWN0aW9uRmllbGQKKyAgICB9OworCisgICAgLyoqCisgICAgICog
RGVzdHJ1Y3Rvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB2aXJ0dWFs
IH5OdW1iZXJGb3JtYXQoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBn
aXZlbiBGb3JtYXQgb2JqZWN0cyBhcmUgc2VtYW50aWNhbGx5IGVxdWFsLgorICAgICAqIE9iamVj
dHMgb2YgZGlmZmVyZW50IHN1YmNsYXNzZXMgYXJlIGNvbnNpZGVyZWQgdW5lcXVhbC4KKyAgICAg
KiBAcmV0dXJuICAgIHRydWUgaWYgdGhlIGdpdmVuIEZvcm1hdCBvYmplY3RzIGFyZSBzZW1hbnRp
Y2FsbHkgZXF1YWwuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVh
bCBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvcm1hdCYgb3RoZXIpIGNvbnN0OworCisKKyAgICB1
c2luZyBGb3JtYXQ6OmZvcm1hdDsKKworICAgIC8qKgorICAgICAqIEZvcm1hdCBhbiBvYmplY3Qg
dG8gcHJvZHVjZSBhIHN0cmluZy4gIFRoaXMgbWV0aG9kIGhhbmRsZXMKKyAgICAgKiBGb3JtYXR0
YWJsZSBvYmplY3RzIHdpdGggbnVtZXJpYyB0eXBlcy4gSWYgdGhlIEZvcm1hdHRhYmxlCisgICAg
ICogb2JqZWN0IHR5cGUgaXMgbm90IGEgbnVtZXJpYyB0eXBlLCB0aGVuIGl0IHJldHVybnMgYSBm
YWlsaW5nCisgICAgICogVUVycm9yQ29kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvYmogICAg
ICAgVGhlIG9iamVjdCB0byBmb3JtYXQuCisgICAgICogQHBhcmFtIGFwcGVuZFRvICBPdXRwdXQg
cGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAgICAgICAgICAgICAgICAgUmVz
dWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBwYXJhbSBwb3Mg
ICAgICAgT24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KKyAgICAgKiAg
ICAgICAgICAgICAgICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFsaWdubWVudCBm
aWVsZC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBz
dWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgorICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNl
IHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAq
LworICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KGNvbnN0IEZvcm1hdHRhYmxlJiBv
YmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBw
ZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiYg
cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1
cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYW4gb2JqZWN0IHRvIHByb2R1Y2Ug
YSBzdHJpbmcuICBUaGlzIG1ldGhvZCBoYW5kbGVzCisgICAgICogRm9ybWF0dGFibGUgb2JqZWN0
cyB3aXRoIG51bWVyaWMgdHlwZXMuIElmIHRoZSBGb3JtYXR0YWJsZQorICAgICAqIG9iamVjdCB0
eXBlIGlzIG5vdCBhIG51bWVyaWMgdHlwZSwgdGhlbiBpdCByZXR1cm5zIGEgZmFpbGluZworICAg
ICAqIFVFcnJvckNvZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb2JqICAgICAgIFRoZSBvYmpl
Y3QgdG8gZm9ybWF0LgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0
byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBl
bmRlZCB0byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0gcG9zSXRlciAgIE9uIHJl
dHVybiwgY2FuIGJlIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHBvc2l0aW9ucworICAgICAqICAgICAg
ICAgICAgICAgICAgb2YgZmllbGRzIGdlbmVyYXRlZCBieSB0aGlzIGZvcm1hdCBjYWxsLiAgQ2Fu
IGJlCisgICAgICogICAgICAgICAgICAgICAgICBOVUxMLgorICAgICAqIEBwYXJhbSBzdGF0dXMg
ICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCisgICAg
ICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCisg
ICAgICogQHN0YWJsZSA0LjQKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZv
cm1hdChjb25zdCBGb3JtYXR0YWJsZSYgb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpZWxkUG9zaXRpb25JdGVyYXRvciogcG9zSXRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCisgICAgLyoq
CisgICAgICogUGFyc2UgYSBzdHJpbmcgdG8gcHJvZHVjZSBhbiBvYmplY3QuICBUaGlzIG1ldGhv
ZHMgaGFuZGxlcworICAgICAqIHBhcnNpbmcgb2YgbnVtZXJpYyBzdHJpbmdzIGludG8gRm9ybWF0
dGFibGUgb2JqZWN0cyB3aXRoIG51bWVyaWMKKyAgICAgKiB0eXBlcy4KKyAgICAgKiA8UD4KKyAg
ICAgKiBCZWZvcmUgY2FsbGluZywgc2V0IHBhcnNlX3Bvcy5pbmRleCB0byB0aGUgb2Zmc2V0IHlv
dSB3YW50IHRvCisgICAgICogc3RhcnQgcGFyc2luZyBhdCBpbiB0aGUgc291cmNlLiBBZnRlciBj
YWxsaW5nLCBwYXJzZV9wb3MuaW5kZXgKKyAgICAgKiBpbmRpY2F0ZXMgdGhlIHBvc2l0aW9uIGFm
dGVyIHRoZSBzdWNjZXNzZnVsbHkgcGFyc2VkIHRleHQuICBJZgorICAgICAqIGFuIGVycm9yIG9j
Y3VycywgcGFyc2VfcG9zLmluZGV4IGlzIHVuY2hhbmdlZC4KKyAgICAgKiA8UD4KKyAgICAgKiBX
aGVuIHBhcnNpbmcsIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyBkaXNjYXJkZWQgKHdpdGggc3VjY2Vz
c2Z1bAorICAgICAqIHBhcnNlKSwgd2hpbGUgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyBsZWZ0IGFz
IGlzLgorICAgICAqIDxQPgorICAgICAqIFNlZSBGb3JtYXQ6OnBhcnNlT2JqZWN0KCkgZm9yIG1v
cmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc291cmNlICAgIFRoZSBzdHJpbmcgdG8gYmUgcGFy
c2VkIGludG8gYW4gb2JqZWN0LgorICAgICAqIEBwYXJhbSByZXN1bHQgICAgRm9ybWF0dGFibGUg
dG8gYmUgc2V0IHRvIHRoZSBwYXJzZSByZXN1bHQuCisgICAgICogICAgICAgICAgICAgICAgICBJ
ZiBwYXJzZSBmYWlscywgcmV0dXJuIGNvbnRlbnRzIGFyZSB1bmRlZmluZWQuCisgICAgICogQHBh
cmFtIHBhcnNlX3BvcyBUaGUgcG9zaXRpb24gdG8gc3RhcnQgcGFyc2luZyBhdC4gVXBvbiByZXR1
cm4KKyAgICAgKiAgICAgICAgICAgICAgICAgIHRoaXMgcGFyYW0gaXMgc2V0IHRvIHRoZSBwb3Np
dGlvbiBhZnRlciB0aGUKKyAgICAgKiAgICAgICAgICAgICAgICAgIGxhc3QgY2hhcmFjdGVyIHN1
Y2Nlc3NmdWxseSBwYXJzZWQuIElmIHRoZQorICAgICAqICAgICAgICAgICAgICAgICAgc291cmNl
IGlzIG5vdCBwYXJzZWQgc3VjY2Vzc2Z1bGx5LCB0aGlzIHBhcmFtCisgICAgICogICAgICAgICAg
ICAgICAgICB3aWxsIHJlbWFpbiB1bmNoYW5nZWQuCisgICAgICogQHJldHVybiAgICAgICAgICBB
IG5ld2x5IGNyZWF0ZWQgRm9ybWF0dGFibGUqIG9iamVjdCwgb3IgTlVMTAorICAgICAqICAgICAg
ICAgICAgICAgICAgb24gZmFpbHVyZS4gIFRoZSBjYWxsZXIgb3ducyB0aGlzIGFuZCBzaG91bGQK
KyAgICAgKiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdCB3aGVuIGRvbmUuCisgICAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHBhcnNlT2JqZWN0KGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0dGFibGUmIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VQb3Np
dGlvbiYgcGFyc2VfcG9zKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEZvcm1hdCBhIGRvdWJs
ZSBudW1iZXIuIFRoZXNlIG1ldGhvZHMgY2FsbCB0aGUgTnVtYmVyRm9ybWF0CisgICAgICogcHVy
ZSB2aXJ0dWFsIGZvcm1hdCgpIG1ldGhvZHMgd2l0aCB0aGUgZGVmYXVsdCBGaWVsZFBvc2l0aW9u
LgorICAgICAqCisgICAgICogQHBhcmFtIG51bWJlciAgICBUaGUgdmFsdWUgdG8gYmUgZm9ybWF0
dGVkLgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZl
IHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBl
eGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAn
YXBwZW5kVG8nIHBhcmFtZXRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAg
ICBVbmljb2RlU3RyaW5nJiBmb3JtYXQoICBkb3VibGUgbnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvKSBjb25zdDsKKworICAgIC8qKgor
ICAgICAqIEZvcm1hdCBhIGxvbmcgbnVtYmVyLiBUaGVzZSBtZXRob2RzIGNhbGwgdGhlIE51bWJl
ckZvcm1hdAorICAgICAqIHB1cmUgdmlydHVhbCBmb3JtYXQoKSBtZXRob2RzIHdpdGggdGhlIGRl
ZmF1bHQgRmllbGRQb3NpdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBudW1iZXIgICAgVGhl
IHZhbHVlIHRvIGJlIGZvcm1hdHRlZC4KKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBw
YXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1bHQuCisgICAgICogICAgICAgICAgICAgICAgICBSZXN1
bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCisgICAgICogQHJldHVybiAgICAg
ICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCisgICAgICogQHN0YWJsZSBJ
Q1UgMi4wCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyYgZm9ybWF0KCAgaW50MzJfdCBudW1i
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8p
IGNvbnN0OworCisgICAgLyoqCisgICAgICogRm9ybWF0IGFuIGludDY0IG51bWJlci4gVGhlc2Ug
bWV0aG9kcyBjYWxsIHRoZSBOdW1iZXJGb3JtYXQKKyAgICAgKiBwdXJlIHZpcnR1YWwgZm9ybWF0
KCkgbWV0aG9kcyB3aXRoIHRoZSBkZWZhdWx0IEZpZWxkUG9zaXRpb24uCisgICAgICoKKyAgICAg
KiBAcGFyYW0gbnVtYmVyICAgIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuCisgICAgICogQHBh
cmFtIGFwcGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAq
ICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRz
LgorICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1l
dGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcm
IGZvcm1hdCggIGludDY0X3QgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWNvZGVTdHJpbmcmIGFwcGVuZFRvKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEZvcm1hdCBh
IGRvdWJsZSBudW1iZXIuIENvbmNyZXRlIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKKyAgICAg
KiB0aGVzZSBwdXJlIHZpcnR1YWwgbWV0aG9kcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBudW1i
ZXIgICAgVGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZC4KKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8g
IE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1bHQuCisgICAgICogICAgICAgICAgICAg
ICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCisgICAgICogQHBh
cmFtIHBvcyAgICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgor
ICAgICAqICAgICAgICAgICAgICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxp
Z25tZW50IGZpZWxkLgorICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBl
bmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZp
cnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KGRvdWJsZSBudW1iZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiYgcG9zKSBjb25zdCA9IDA7Cisg
ICAgLyoqCisgICAgICogRm9ybWF0IGEgZG91YmxlIG51bWJlci4gU3ViY2xhc3NlcyBtdXN0IGlt
cGxlbWVudAorICAgICAqIHRoaXMgbWV0aG9kLgorICAgICAqCisgICAgICogQHBhcmFtIG51bWJl
ciAgICBUaGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkLgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAg
T3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAg
ICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFy
YW0gcG9zSXRlciAgIE9uIHJldHVybiwgY2FuIGJlIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHBvc2l0
aW9ucworICAgICAqICAgICAgICAgICAgICAgICAgb2YgZmllbGRzIGdlbmVyYXRlZCBieSB0aGlz
IGZvcm1hdCBjYWxsLgorICAgICAqICAgICAgICAgICAgICAgICAgQ2FuIGJlIE5VTEwuCisgICAg
ICogQHBhcmFtIHN0YXR1cyAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWls
dXJlIHN0YXR1cy4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5k
VG8nIHBhcmFtZXRlci4KKyAgICAgKiBAc3RhYmxlIDQuNAorICAgICAqLworICAgIHZpcnR1YWwg
VW5pY29kZVN0cmluZyYgZm9ybWF0KGRvdWJsZSBudW1iZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBwb3NJdGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7Cisg
ICAgLyoqCisgICAgICogRm9ybWF0IGEgbG9uZyBudW1iZXIuIENvbmNyZXRlIHN1YmNsYXNzZXMg
bXVzdCBpbXBsZW1lbnQKKyAgICAgKiB0aGVzZSBwdXJlIHZpcnR1YWwgbWV0aG9kcy4KKyAgICAg
KgorICAgICAqIEBwYXJhbSBudW1iZXIgICAgVGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZC4KKyAg
ICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1bHQu
CisgICAgICogICAgICAgICAgICAgICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3Rpbmcg
Y29udGVudHMuCisgICAgICogQHBhcmFtIHBvcyAgICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50
IGZpZWxkLCBpZiBkZXNpcmVkLgorICAgICAqICAgICAgICAgICAgICAgICAgT24gb3V0cHV0OiB0
aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAgICAqIEByZXR1cm4gICAgICAg
ICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoaW50MzJfdCBu
dW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYg
YXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlv
biYgcG9zKSBjb25zdCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYW4gaW50MzIgbnVt
YmVyLiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50CisgICAgICogdGhpcyBtZXRob2QuCisgICAg
ICoKKyAgICAgKiBAcGFyYW0gbnVtYmVyICAgIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuCisg
ICAgICogQHBhcmFtIGFwcGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0
LgorICAgICAqICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5n
IGNvbnRlbnRzLgorICAgICAqIEBwYXJhbSBwb3NJdGVyICAgT24gcmV0dXJuLCBjYW4gYmUgdXNl
ZCB0byBpdGVyYXRlIG92ZXIgcG9zaXRpb25zCisgICAgICogICAgICAgICAgICAgICAgICBvZiBm
aWVsZHMgZ2VuZXJhdGVkIGJ5IHRoaXMgZm9ybWF0IGNhbGwuCisgICAgICogICAgICAgICAgICAg
ICAgICBDYW4gYmUgTlVMTC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBm
aWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgorICAgICAqIEByZXR1cm4gICAgICAg
ICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBzdGFibGUgNC40
CisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoaW50MzJfdCBudW1i
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBw
ZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbkl0
ZXJhdG9yKiBwb3NJdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUmIHN0YXR1cykgY29uc3Q7CisgICAgLyoqCisgICAgICogRm9ybWF0IGFuIGludDY0IG51
bWJlci4gKE5vdCBhYnN0cmFjdCB0byByZXRhaW4gY29tcGF0aWJpbGl0eQorICAgICAqIHdpdGgg
ZWFybGllciByZWxlYXNlcywgaG93ZXZlciBzdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlz
CisgICAgICogbWV0aG9kIGFzIGl0IGp1c3QgZGVsZWdhdGVzIHRvIGZvcm1hdChpbnQzMl90IG51
bWJlci4uLik7CisgICAgICoKKyAgICAgKiBAcGFyYW0gbnVtYmVyICAgIFRoZSB2YWx1ZSB0byBi
ZSBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFtIGFwcGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRv
IHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVu
ZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBwYXJhbSBwb3MgICAgICAgT24gaW5w
dXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KKyAgICAgKiAgICAgICAgICAgICAg
ICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFsaWdubWVudCBmaWVsZC4KKyAgICAg
KiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KKyAg
ICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAqLworICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYg
Zm9ybWF0KGludDY0X3QgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpZWxkUG9zaXRpb24mIHBvcykgY29uc3Q7CisgICAgLyoqCisgICAgICogRm9ybWF0IGFu
IGludDY0IG51bWJlci4gU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAorICAgICAqIHRoaXMgbWV0
aG9kLgorICAgICAqCisgICAgICogQHBhcmFtIG51bWJlciAgICBUaGUgdmFsdWUgdG8gYmUgZm9y
bWF0dGVkLgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNl
aXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0
byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0gcG9zSXRlciAgIE9uIHJldHVybiwg
Y2FuIGJlIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHBvc2l0aW9ucworICAgICAqICAgICAgICAgICAg
ICAgICAgb2YgZmllbGRzIGdlbmVyYXRlZCBieSB0aGlzIGZvcm1hdCBjYWxsLgorICAgICAqICAg
ICAgICAgICAgICAgICAgQ2FuIGJlIE5VTEwuCisgICAgICogQHBhcmFtIHN0YXR1cyAgICBPdXRw
dXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1cy4KKyAgICAgKiBAcmV0
dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KKyAgICAgKiBA
c3RhYmxlIDQuNAorICAgICAqLworICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KGlu
dDY0X3QgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVT
dHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxk
UG9zaXRpb25JdGVyYXRvciogcG9zSXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCisgICAgLyoqCisgICAgICogRm9ybWF0
IGEgZGVjaW1hbCBudW1iZXIuIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKKyAgICAgKiB0aGlz
IG1ldGhvZC4gIFRoZSBzeW50YXggb2YgdGhlIHVuZm9ybWF0dGVkIG51bWJlciBpcyBhICJudW1l
cmljIHN0cmluZyIKKyAgICAgKiBhcyBkZWZpbmVkIGluIHRoZSBEZWNpbWFsIEFyaXRobWV0aWMg
U3BlY2lmaWNhdGlvbiwgYXZhaWxhYmxlIGF0CisgICAgICogaHR0cDovL3NwZWxlb3Ryb3ZlLmNv
bS9kZWNpbWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gbnVtYmVyICAgIFRoZSB1bmZvcm1hdHRl
ZCBudW1iZXIsIGFzIGEgc3RyaW5nLCB0byBiZSBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFtIGFw
cGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAgICAg
ICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAg
ICAqIEBwYXJhbSBwb3NJdGVyICAgT24gcmV0dXJuLCBjYW4gYmUgdXNlZCB0byBpdGVyYXRlIG92
ZXIgcG9zaXRpb25zCisgICAgICogICAgICAgICAgICAgICAgICBvZiBmaWVsZHMgZ2VuZXJhdGVk
IGJ5IHRoaXMgZm9ybWF0IGNhbGwuCisgICAgICogICAgICAgICAgICAgICAgICBDYW4gYmUgTlVM
TC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNj
ZXNzL2ZhaWx1cmUgc3RhdHVzLgorICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRv
ICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBzdGFibGUgNC40CisgICAgICovCisgICAg
dmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgU3RyaW5nUGllY2UgJm51bWJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRU
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uSXRlcmF0
b3IqIHBvc0l0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSYgc3RhdHVzKSBjb25zdDsKK3B1YmxpYzoKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYSBkZWNp
bWFsIG51bWJlci4gCisgICAgICogVGhlIG51bWJlciBpcyBhIERpZ2l0TGlzdCB3cmFwcGVyIG9u
dG8gYSBmbG9hdGluZyBwb2ludCBkZWNpbWFsIG51bWJlci4KKyAgICAgKiBUaGUgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbiBpbiBOdW1iZXJGb3JtYXQgY29udmVydHMgdGhlIGRlY2ltYWwgbnVtYmVy
CisgICAgICogdG8gYSBkb3VibGUgYW5kIGZvcm1hdHMgdGhhdC4gIFN1YmNsYXNzZXMgb2YgTnVt
YmVyRm9ybWF0IHRoYXQgd2FudAorICAgICAqIHRvIHNwZWNpZmljYWxseSBoYW5kbGUgYmlnIGRl
Y2ltYWwgbnVtYmVycyBtdXN0IG92ZXJyaWRlIHRoaXMgbWV0aG9kLgorICAgICAqIGNsYXNzIERl
Y2ltYWxGb3JtYXQgZG9lcyBzby4KKyAgICAgKgorICAgICAqIEBwYXJhbSBudW1iZXIgICAgVGhl
IG51bWJlciwgYSBEaWdpdExpc3QgZm9ybWF0IERlY2ltYWwgRmxvYXRpbmcgUG9pbnQuCisgICAg
ICogQHBhcmFtIGFwcGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0Lgor
ICAgICAqICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNv
bnRlbnRzLgorICAgICAqIEBwYXJhbSBwb3NJdGVyICAgT24gcmV0dXJuLCBjYW4gYmUgdXNlZCB0
byBpdGVyYXRlIG92ZXIgcG9zaXRpb25zCisgICAgICogICAgICAgICAgICAgICAgICBvZiBmaWVs
ZHMgZ2VuZXJhdGVkIGJ5IHRoaXMgZm9ybWF0IGNhbGwuCisgICAgICogQHBhcmFtIHN0YXR1cyAg
ICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1cy4KKyAgICAg
KiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KKyAg
ICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1h
dChjb25zdCBEaWdpdExpc3QgJm51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIHBvc0l0ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgor
ICAgICAqIEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVyLiAKKyAgICAgKiBUaGUgbnVtYmVyIGlzIGEg
RGlnaXRMaXN0IHdyYXBwZXIgb250byBhIGZsb2F0aW5nIHBvaW50IGRlY2ltYWwgbnVtYmVyLgor
ICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGluIE51bWJlckZvcm1hdCBjb252ZXJ0
cyB0aGUgZGVjaW1hbCBudW1iZXIKKyAgICAgKiB0byBhIGRvdWJsZSBhbmQgZm9ybWF0cyB0aGF0
LiAgU3ViY2xhc3NlcyBvZiBOdW1iZXJGb3JtYXQgdGhhdCB3YW50CisgICAgICogdG8gc3BlY2lm
aWNhbGx5IGhhbmRsZSBiaWcgZGVjaW1hbCBudW1iZXJzIG11c3Qgb3ZlcnJpZGUgdGhpcyBtZXRo
b2QuCisgICAgICogY2xhc3MgRGVjaW1hbEZvcm1hdCBkb2VzIHNvLgorICAgICAqCisgICAgICog
QHBhcmFtIG51bWJlciAgICBUaGUgbnVtYmVyLCBhIERpZ2l0TGlzdCBmb3JtYXQgRGVjaW1hbCBG
bG9hdGluZyBQb2ludC4KKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0ZXIg
dG8gcmVjZWl2ZSByZXN1bHQuCisgICAgICogICAgICAgICAgICAgICAgICBSZXN1bHQgaXMgYXBw
ZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCisgICAgICogQHBhcmFtIHBvcyAgICAgICBPbiBp
bnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgorICAgICAqICAgICAgICAgICAg
ICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAg
ICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFp
bHVyZSBzdGF0dXMuCisgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVu
ZFRvJyBwYXJhbWV0ZXIuCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgdmlydHVhbCBV
bmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgRGlnaXRMaXN0ICZudW1iZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiYgcG9zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CisKK3B1
YmxpYzoKKworICAgIC8qKgorICAgICAqIFJlZGVjbGFyZWQgRm9ybWF0IG1ldGhvZC4KKyAgICAg
KiBAcGFyYW0gb2JqICAgICAgIFRoZSBvYmplY3QgdG8gYmUgZm9ybWF0dGVkLgorICAgICAqIEBw
YXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4KKyAgICAg
KiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGluZyBjb250ZW50
cy4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbWV0ZXIgc2V0IHRvIGEgZmFp
bHVyZSBlcnJvciBjb2RlCisgICAgICogICAgICAgICAgICAgICAgICB3aGVuIGEgZmFpbHVyZSBv
Y2N1cnMuCisgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBw
YXJhbWV0ZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgVW5pY29kZVN0
cmluZyYgZm9ybWF0KGNvbnN0IEZvcm1hdHRhYmxlJiBvYmosCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCisgICAvKioKKyAgICAqIFJldHVybiBhIGxv
bmcgaWYgcG9zc2libGUgKGUuZy4gd2l0aGluIHJhbmdlIExPTkdfTUFYLAorICAgICogTE9OR19N
QVhdLCBhbmQgd2l0aCBubyBkZWNpbWFscyksIG90aGVyd2lzZSBhIGRvdWJsZS4gIElmCisgICAg
KiBJbnRlZ2VyT25seSBpcyBzZXQsIHdpbGwgc3RvcCBhdCBhIGRlY2ltYWwgcG9pbnQgKG9yIGVx
dWl2YWxlbnQ7CisgICAgKiBlLmcuIGZvciByYXRpb25hbCBudW1iZXJzICIxIDIvMyIsIHdpbGwg
c3RvcCBhZnRlciB0aGUgMSkuCisgICAgKiA8UD4KKyAgICAqIElmIG5vIG9iamVjdCBjYW4gYmUg
cGFyc2VkLCBpbmRleCBpcyB1bmNoYW5nZWQsIGFuZCBOVUxMIGlzCisgICAgKiByZXR1cm5lZC4K
KyAgICAqIDxQPgorICAgICogVGhpcyBpcyBhIHB1cmUgdmlydHVhbCB3aGljaCBjb25jcmV0ZSBz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50LgorICAgICoKKyAgICAqIEBwYXJhbSB0ZXh0ICAgICAg
ICAgICBUaGUgdGV4dCB0byBiZSBwYXJzZWQuCisgICAgKiBAcGFyYW0gcmVzdWx0ICAgICAgICAg
Rm9ybWF0dGFibGUgdG8gYmUgc2V0IHRvIHRoZSBwYXJzZSByZXN1bHQuCisgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgSWYgcGFyc2UgZmFpbHMsIHJldHVybiBjb250ZW50cyBhcmUgdW5kZWZp
bmVkLgorICAgICogQHBhcmFtIHBhcnNlUG9zaXRpb24gIFRoZSBwb3NpdGlvbiB0byBzdGFydCBw
YXJzaW5nIGF0IG9uIGlucHV0LgorICAgICogICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1
dCwgbW92ZWQgdG8gYWZ0ZXIgdGhlIGxhc3Qgc3VjY2Vzc2Z1bGx5CisgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2UgY2hhcmFjdGVyLiBPbiBwYXJzZSBmYWlsdXJlLCBkb2VzIG5vdCBj
aGFuZ2UuCisgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgQSBGb3JtYXR0YWJsZSBvYmplY3Qg
b2YgbnVtZXJpYyB0eXBlLiAgVGhlIGNhbGxlcgorICAgICogICAgICAgICAgICAgICAgICAgICAg
IG93bnMgdGhpcyBhbiBtdXN0IGRlbGV0ZSBpdC4gIE5VTEwgb24gZmFpbHVyZS4KKyAgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgICovCisgICAgdmlydHVhbCB2b2lkIHBhcnNlKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRhYmxlJiByZXN1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlUG9zaXRpb24mIHBhcnNlUG9zaXRpb24p
IGNvbnN0ID0gMDsKKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgc3RyaW5nIGFzIGEgbnVtZXJp
YyB2YWx1ZSwgYW5kIHJldHVybiBhIEZvcm1hdHRhYmxlCisgICAgICogbnVtZXJpYyBvYmplY3Qu
IFRoaXMgbWV0aG9kIHBhcnNlcyBpbnRlZ2VycyBvbmx5IGlmIEludGVnZXJPbmx5CisgICAgICog
aXMgc2V0LgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgICAgICAgICAgVGhlIHRleHQgdG8g
YmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSByZXN1bHQgICAgICAgIEZvcm1hdHRhYmxlIHRvIGJl
IHNldCB0byB0aGUgcGFyc2UgcmVzdWx0LgorICAgICAqICAgICAgICAgICAgICAgICAgICAgIElm
IHBhcnNlIGZhaWxzLCByZXR1cm4gY29udGVudHMgYXJlIHVuZGVmaW5lZC4KKyAgICAgKiBAcGFy
YW0gc3RhdHVzICAgICAgICBPdXRwdXQgcGFyYW1ldGVyIHNldCB0byBhIGZhaWx1cmUgZXJyb3Ig
Y29kZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYSBmYWlsdXJlIG9jY3Vycy4K
KyAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICBBIEZvcm1hdHRhYmxlIG9iamVjdCBvZiBudW1l
cmljIHR5cGUuICBUaGUgY2FsbGVyCisgICAgICogICAgICAgICAgICAgICAgICAgICAgb3ducyB0
aGlzIGFuIG11c3QgZGVsZXRlIGl0LiAgTlVMTCBvbiBmYWlsdXJlLgorICAgICAqIEBzZWUgICAg
ICAgICAgICAgICAgIE51bWJlckZvcm1hdDo6aXNQYXJzZUludGVnZXJPbmx5CisgICAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHBhcnNlKCBjb25zdCBVbmlj
b2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGFibGUmIHJl
c3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7
CisKKyAgICAvKioKKyAgICAgKiBQYXJzZXMgdGV4dCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYXMg
YSBjdXJyZW5jeSBhbW91bnQuICBVbmxpa2UKKyAgICAgKiB0aGUgcGFyc2UoKSBtZXRob2QsIHRo
aXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBwYXJzZSBhIGdlbmVyaWMKKyAgICAgKiBjdXJyZW5j
eSBuYW1lLCBzZWFyY2hpbmcgZm9yIGEgbWF0Y2ggb2YgdGhpcyBvYmplY3QncyBsb2NhbGUncwor
ICAgICAqIGN1cnJlbmN5IGRpc3BsYXkgbmFtZXMsIG9yIGZvciBhIDMtbGV0dGVyIElTTyBjdXJy
ZW5jeSBjb2RlLgorICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgZmFpbCBpZiB0aGlzIGZvcm1hdCBp
cyBub3QgYSBjdXJyZW5jeSBmb3JtYXQsCisgICAgICogdGhhdCBpcywgaWYgaXQgZG9lcyBub3Qg
Y29udGFpbiB0aGUgY3VycmVuY3kgcGF0dGVybiBzeW1ib2wKKyAgICAgKiAoVSswMEE0KSBpbiBp
dHMgcHJlZml4IG9yIHN1ZmZpeC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBzdHJp
bmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcmVzdWx0IG91dHB1dCBwYXJhbWV0ZXIgdG8gcmVj
ZWl2ZSByZXN1bHQuIFRoaXMgd2lsbCBoYXZlCisgICAgICogaXRzIGN1cnJlbmN5IHNldCB0byB0
aGUgcGFyc2VkIElTTyBjdXJyZW5jeSBjb2RlLgorICAgICAqIEBwYXJhbSBwb3MgaW5wdXQtb3V0
cHV0IHBvc2l0aW9uOyBvbiBpbnB1dCwgdGhlIHBvc2l0aW9uIHdpdGhpbgorICAgICAqIHRleHQg
dG8gbWF0Y2g7IG11c3QgaGF2ZSAwIDw9IHBvcy5nZXRJbmRleCgpIDwgdGV4dC5sZW5ndGgoKTsK
KyAgICAgKiBvbiBvdXRwdXQsIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCBtYXRjaGVkIGNo
YXJhY3Rlci4gSWYKKyAgICAgKiB0aGUgcGFyc2UgZmFpbHMsIHRoZSBwb3NpdGlvbiBpbiB1bmNo
YW5nZWQgdXBvbiBvdXRwdXQuCisgICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byByZXN1bHQK
KyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB2aXJ0dWFsIEZvcm1hdHRhYmxlJiBwYXJz
ZUN1cnJlbmN5KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb3JtYXR0YWJsZSYgcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiYgcG9zKSBjb25zdDsKKworICAg
IC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgZm9ybWF0IHdpbGwgcGFyc2UgbnVtYmVy
cyBhcyBpbnRlZ2VycworICAgICAqIG9ubHkuICBGb3IgZXhhbXBsZSBpbiB0aGUgRW5nbGlzaCBs
b2NhbGUsIHdpdGggUGFyc2VJbnRlZ2VyT25seQorICAgICAqIHRydWUsIHRoZSBzdHJpbmcgIjEy
MzQuIiB3b3VsZCBiZSBwYXJzZWQgYXMgdGhlIGludGVnZXIgdmFsdWUKKyAgICAgKiAxMjM0IGFu
ZCBwYXJzaW5nIHdvdWxkIHN0b3AgYXQgdGhlICIuIiBjaGFyYWN0ZXIuICBPZiBjb3Vyc2UsCisg
ICAgICogdGhlIGV4YWN0IGZvcm1hdCBhY2NlcHRlZCBieSB0aGUgcGFyc2Ugb3BlcmF0aW9uIGlz
IGxvY2FsZQorICAgICAqIGRlcGVuZGFudCBhbmQgZGV0ZXJtaW5lZCBieSBzdWItY2xhc3NlcyBv
ZiBOdW1iZXJGb3JtYXQuCisgICAgICogQHJldHVybiAgICB0cnVlIGlmIHRoaXMgZm9ybWF0IHdp
bGwgcGFyc2UgbnVtYmVycyBhcyBpbnRlZ2VycworICAgICAqICAgICAgICAgICAgb25seS4KKyAg
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBVQm9vbCBpc1BhcnNlSW50ZWdlck9u
bHkodm9pZCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90IG51
bWJlcnMgc2hvdWxkIGJlIHBhcnNlZCBhcyBpbnRlZ2VycyBvbmx5LgorICAgICAqIEBwYXJhbSB2
YWx1ZSAgICBzZXQgVHJ1ZSwgdGhpcyBmb3JtYXQgd2lsbCBwYXJzZSBudW1iZXJzIGFzIGludGVn
ZXJzCisgICAgICogICAgICAgICAgICAgICAgIG9ubHkuCisgICAgICogQHNlZSBpc1BhcnNlSW50
ZWdlck9ubHkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UGFyc2VJbnRlZ2VyT25seShVQm9vbCB2YWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBS
ZXR1cm5zIHRoZSBkZWZhdWx0IG51bWJlciBmb3JtYXQgZm9yIHRoZSBjdXJyZW50IGRlZmF1bHQK
KyAgICAgKiBsb2NhbGUuICBUaGUgZGVmYXVsdCBmb3JtYXQgaXMgb25lIG9mIHRoZSBzdHlsZXMg
cHJvdmlkZWQgYnkKKyAgICAgKiB0aGUgb3RoZXIgZmFjdG9yeSBtZXRob2RzOiBnZXROdW1iZXJJ
bnN0YW5jZSwKKyAgICAgKiBnZXRDdXJyZW5jeUluc3RhbmNlIG9yIGdldFBlcmNlbnRJbnN0YW5j
ZS4gIEV4YWN0bHkgd2hpY2ggb25lCisgICAgICogaXMgbG9jYWxlIGRlcGVuZGFudC4KKyAgICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBzdGF0aWMgTnVtYmVyRm9ybWF0KiBVX0VY
UE9SVDIgY3JlYXRlSW5zdGFuY2UoVUVycm9yQ29kZSYpOworCisgICAgLyoqCisgICAgICogUmV0
dXJucyB0aGUgZGVmYXVsdCBudW1iZXIgZm9ybWF0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4K
KyAgICAgKiBUaGUgZGVmYXVsdCBmb3JtYXQgaXMgb25lIG9mIHRoZSBzdHlsZXMgcHJvdmlkZWQg
YnkgdGhlIG90aGVyCisgICAgICogZmFjdG9yeSBtZXRob2RzOiBnZXROdW1iZXJJbnN0YW5jZSwg
Z2V0Q3VycmVuY3lJbnN0YW5jZSBvcgorICAgICAqIGdldFBlcmNlbnRJbnN0YW5jZS4gIEV4YWN0
bHkgd2hpY2ggb25lIGlzIGxvY2FsZSBkZXBlbmRhbnQuCisgICAgICogQHBhcmFtIGluTG9jYWxl
ICAgIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisg
ICAgc3RhdGljIE51bWJlckZvcm1hdCogVV9FWFBPUlQyIGNyZWF0ZUluc3RhbmNlKGNvbnN0IExv
Y2FsZSYgaW5Mb2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VUVycm9yQ29kZSYpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyB0aGUgc3BlY2lmaWVkIGRl
Y2ltYWwgZm9ybWF0IHN0eWxlIG9mIHRoZSBkZXNpcmVkIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0g
ZGVzaXJlZExvY2FsZSAgICB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEBwYXJhbSBjaG9pY2Ug
ICAgICAgICAgIHRoZSBnaXZlbiBzdHlsZS4KKyAgICAgKiBAcGFyYW0gc3VjY2VzcyAgICAgICAg
ICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1cy4KKyAgICAg
KiBAcmV0dXJuICAgICAgICAgICAgICAgICBBIG5ldyBOdW1iZXJGb3JtYXQgaW5zdGFuY2UuCisg
ICAgICogQGRyYWZ0IElDVSA0LjIKKyAgICAgKi8KKyAgICBzdGF0aWMgTnVtYmVyRm9ybWF0KiBV
X0VYUE9SVDIgY3JlYXRlSW5zdGFuY2UoY29uc3QgTG9jYWxlJiBkZXNpcmVkTG9jYWxlLCBFU3R5
bGVzIGNob2ljZSwgVUVycm9yQ29kZSYgc3VjY2Vzcyk7CisKKworICAgIC8qKgorICAgICAqIFJl
dHVybnMgYSBjdXJyZW5jeSBmb3JtYXQgZm9yIHRoZSBjdXJyZW50IGRlZmF1bHQgbG9jYWxlLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBOdW1iZXJGb3JtYXQq
IFVfRVhQT1JUMiBjcmVhdGVDdXJyZW5jeUluc3RhbmNlKFVFcnJvckNvZGUmKTsKKworICAgIC8q
KgorICAgICAqIFJldHVybnMgYSBjdXJyZW5jeSBmb3JtYXQgZm9yIHRoZSBzcGVjaWZpZWQgbG9j
YWxlLgorICAgICAqIEBwYXJhbSBpbkxvY2FsZSAgICB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBOdW1iZXJGb3JtYXQqIFVfRVhQ
T1JUMiBjcmVhdGVDdXJyZW5jeUluc3RhbmNlKGNvbnN0IExvY2FsZSYgaW5Mb2NhbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJik7
CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgcGVyY2VudGFnZSBmb3JtYXQgZm9yIHRoZSBj
dXJyZW50IGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLwor
ICAgIHN0YXRpYyBOdW1iZXJGb3JtYXQqIFVfRVhQT1JUMiBjcmVhdGVQZXJjZW50SW5zdGFuY2Uo
VUVycm9yQ29kZSYpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHBlcmNlbnRhZ2UgZm9y
bWF0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gaW5Mb2NhbGUgICAg
dGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBz
dGF0aWMgTnVtYmVyRm9ybWF0KiBVX0VYUE9SVDIgY3JlYXRlUGVyY2VudEluc3RhbmNlKGNvbnN0
IExvY2FsZSYgaW5Mb2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUmKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBzY2ll
bnRpZmljIGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgc3RhdGljIE51bWJlckZvcm1hdCogVV9FWFBPUlQy
IGNyZWF0ZVNjaWVudGlmaWNJbnN0YW5jZShVRXJyb3JDb2RlJik7CisKKyAgICAvKioKKyAgICAg
KiBSZXR1cm5zIGEgc2NpZW50aWZpYyBmb3JtYXQgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgor
ICAgICAqIEBwYXJhbSBpbkxvY2FsZSAgICB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEBzdGFi
bGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBOdW1iZXJGb3JtYXQqIFVfRVhQT1JUMiBj
cmVhdGVTY2llbnRpZmljSW5zdGFuY2UoY29uc3QgTG9jYWxlJiBpbkxvY2FsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmKTsKKwor
ICAgIC8qKgorICAgICAqIEdldCB0aGUgc2V0IG9mIExvY2FsZXMgZm9yIHdoaWNoIE51bWJlckZv
cm1hdHMgYXJlIGluc3RhbGxlZC4KKyAgICAgKiBAcGFyYW0gY291bnQgICAgT3V0cHV0IHBhcmFt
IHRvIHJlY2VpdmUgdGhlIHNpemUgb2YgdGhlIGxvY2FsZXMKKyAgICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlKiBVX0VYUE9SVDIgZ2V0QXZhaWxh
YmxlTG9jYWxlcyhpbnQzMl90JiBjb3VudCk7CisKKyNpZiAhVUNPTkZJR19OT19TRVJWSUNFCisg
ICAgLyoqCisgICAgICogUmVnaXN0ZXIgYSBuZXcgTnVtYmVyRm9ybWF0RmFjdG9yeS4gIFRoZSBm
YWN0b3J5IHdpbGwgYmUgYWRvcHRlZC4KKyAgICAgKiBAcGFyYW0gdG9BZG9wdCB0aGUgTnVtYmVy
Rm9ybWF0RmFjdG9yeSBpbnN0YW5jZSB0byBiZSBhZG9wdGVkCisgICAgICogQHBhcmFtIHN0YXR1
cyB0aGUgaW4vb3V0IHN0YXR1cyBjb2RlLCBubyBzcGVjaWFsIG1lYW5pbmdzIGFyZSBhc3NpZ25l
ZAorICAgICAqIEByZXR1cm4gYSByZWdpc3RyeSBrZXkgdGhhdCBjYW4gYmUgdXNlZCB0byB1bnJl
Z2lzdGVyIHRoaXMgZmFjdG9yeQorICAgICAqIEBzdGFibGUgSUNVIDIuNgorICAgICAqLworICAg
IHN0YXRpYyBVUmVnaXN0cnlLZXkgVV9FWFBPUlQyIHJlZ2lzdGVyRmFjdG9yeShOdW1iZXJGb3Jt
YXRGYWN0b3J5KiB0b0Fkb3B0LCBVRXJyb3JDb2RlJiBzdGF0dXMpOworCisgICAgLyoqCisgICAg
ICogVW5yZWdpc3RlciBhIHByZXZpb3VzbHktcmVnaXN0ZXJlZCBOdW1iZXJGb3JtYXRGYWN0b3J5
IHVzaW5nIHRoZSBrZXkgcmV0dXJuZWQgZnJvbSB0aGUKKyAgICAgKiByZWdpc3RlciBjYWxsLiAg
S2V5IGJlY29tZXMgaW52YWxpZCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBhbmQgc2hvdWxkIG5v
dCBiZSB1c2VkIGFnYWluLgorICAgICAqIFRoZSBOdW1iZXJGb3JtYXRGYWN0b3J5IGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIGtleSB3aWxsIGJlIGRlbGV0ZWQuCisgICAgICogQHBhcmFtIGtleSB0aGUg
cmVnaXN0cnkga2V5IHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byByZWdpc3RlckZhY3Rv
cnkKKyAgICAgKiBAcGFyYW0gc3RhdHVzIHRoZSBpbi9vdXQgc3RhdHVzIGNvZGUsIG5vIHNwZWNp
YWwgbWVhbmluZ3MgYXJlIGFzc2lnbmVkCisgICAgICogQHJldHVybiBUUlVFIGlmIHRoZSBmYWN0
b3J5IGZvciB0aGUga2V5IHdhcyBzdWNjZXNzZnVsbHkgdW5yZWdpc3RlcmVkCisgICAgICogQHN0
YWJsZSBJQ1UgMi42CisgICAgICovCisgICAgc3RhdGljIFVCb29sIFVfRVhQT1JUMiB1bnJlZ2lz
dGVyKFVSZWdpc3RyeUtleSBrZXksIFVFcnJvckNvZGUmIHN0YXR1cyk7CisKKyAgICAvKioKKyAg
ICAgKiBSZXR1cm4gYSBTdHJpbmdFbnVtZXJhdGlvbiBvdmVyIHRoZSBsb2NhbGVzIGF2YWlsYWJs
ZSBhdCB0aGUgdGltZSBvZiB0aGUgY2FsbCwKKyAgICAgKiBpbmNsdWRpbmcgcmVnaXN0ZXJlZCBs
b2NhbGVzLgorICAgICAqIEByZXR1cm4gYSBTdHJpbmdFbnVtZXJhdGlvbiBvdmVyIHRoZSBsb2Nh
bGVzIGF2YWlsYWJsZSBhdCB0aGUgdGltZSBvZiB0aGUgY2FsbAorICAgICAqIEBzdGFibGUgSUNV
IDIuNgorICAgICAqLworICAgIHN0YXRpYyBTdHJpbmdFbnVtZXJhdGlvbiogVV9FWFBPUlQyIGdl
dEF2YWlsYWJsZUxvY2FsZXModm9pZCk7CisjZW5kaWYgLyogVUNPTkZJR19OT19TRVJWSUNFICov
CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgZ3JvdXBpbmcgaXMgdXNlZCBpbiB0
aGlzIGZvcm1hdC4gRm9yIGV4YW1wbGUsCisgICAgICogaW4gdGhlIEVuZ2xpc2ggbG9jYWxlLCB3
aXRoIGdyb3VwaW5nIG9uLCB0aGUgbnVtYmVyIDEyMzQ1NjcKKyAgICAgKiBtaWdodCBiZSBmb3Jt
YXR0ZWQgYXMgIjEsMjM0LDU2NyIuIFRoZSBncm91cGluZyBzZXBhcmF0b3IgYXMKKyAgICAgKiB3
ZWxsIGFzIHRoZSBzaXplIG9mIGVhY2ggZ3JvdXAgaXMgbG9jYWxlIGRlcGVuZGFudCBhbmQgaXMK
KyAgICAgKiBkZXRlcm1pbmVkIGJ5IHN1Yi1jbGFzc2VzIG9mIE51bWJlckZvcm1hdC4KKyAgICAg
KiBAc2VlIHNldEdyb3VwaW5nVXNlZAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLwor
ICAgIFVCb29sIGlzR3JvdXBpbmdVc2VkKHZvaWQpIGNvbnN0OworCisgICAgLyoqCisgICAgICog
U2V0IHdoZXRoZXIgb3Igbm90IGdyb3VwaW5nIHdpbGwgYmUgdXNlZCBpbiB0aGlzIGZvcm1hdC4K
KyAgICAgKiBAcGFyYW0gbmV3VmFsdWUgICAgVHJ1ZSwgZ3JvdXBpbmcgd2lsbCBiZSB1c2VkIGlu
IHRoaXMgZm9ybWF0LgorICAgICAqIEBzZWUgZ2V0R3JvdXBpbmdVc2VkCisgICAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHNldEdyb3VwaW5nVXNlZChVQm9v
bCBuZXdWYWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJl
ciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIGEKKyAgICAgKiBu
dW1iZXIuCisgICAgICogQHJldHVybiAgICAgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBh
bGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqICAgICAgICAgICAgIG51
bWJlci4KKyAgICAgKiBAc2VlIHNldE1heGltdW1JbnRlZ2VyRGlnaXRzCisgICAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAgICovCisgICAgaW50MzJfdCBnZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyh2
b2lkKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9m
IGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJl
ci4gbWF4aW11bUludGVnZXJEaWdpdHMgbXVzdCBiZSA+PSBtaW5pbXVtSW50ZWdlckRpZ2l0cy4g
IElmIHRoZQorICAgICAqIG5ldyB2YWx1ZSBmb3IgbWF4aW11bUludGVnZXJEaWdpdHMgaXMgbGVz
cyB0aGFuIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICogb2YgbWluaW11bUludGVnZXJEaWdpdHMs
IHRoZW4gbWluaW11bUludGVnZXJEaWdpdHMgd2lsbCBhbHNvIGJlIHNldCB0bworICAgICAqIHRo
ZSBuZXcgdmFsdWUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmV3VmFsdWUgICAgdGhlIG5ldyB2
YWx1ZSBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cworICAgICAqICAgICAgICAgICAg
ICAgICAgICBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYSBudW1iZXIuCisgICAg
ICogQHNlZSBnZXRNYXhpbXVtSW50ZWdlckRpZ2l0cworICAgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgICAqLworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyhpbnQzMl90
IG5ld1ZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG1pbmltdW0gbnVtYmVy
IG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51
bWJlci4KKyAgICAgKiBAcmV0dXJuICAgIHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWxs
b3dlZCBpbiB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIGEKKyAgICAgKiAgICAgICAgICAgIG51bWJl
ci4KKyAgICAgKiBAc2VlIHNldE1pbmltdW1JbnRlZ2VyRGlnaXRzCisgICAgICogQHN0YWJsZSBJ
Q1UgMi4wCisgICAgICovCisgICAgaW50MzJfdCBnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cyh2b2lk
KSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRp
Z2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4g
bWluaW11bUludGVnZXJEaWdpdHMgbXVzdCBiZSAmbHQ7PSBtYXhpbXVtSW50ZWdlckRpZ2l0cy4g
IElmIHRoZQorICAgICAqIG5ldyB2YWx1ZSBmb3IgbWluaW11bUludGVnZXJEaWdpdHMgZXhjZWVk
cyB0aGUgY3VycmVudCB2YWx1ZQorICAgICAqIG9mIG1heGltdW1JbnRlZ2VyRGlnaXRzLCB0aGVu
IG1heGltdW1JbnRlZ2VyRGlnaXRzIHdpbGwgYWxzbyBiZSBzZXQgdG8KKyAgICAgKiB0aGUgbmV3
IHZhbHVlLgorICAgICAqIEBwYXJhbSBuZXdWYWx1ZSAgICB0aGUgbmV3IHZhbHVlIHRvIGJlIHNl
dC4KKyAgICAgKiBAc2VlIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzCisgICAgICogQHN0YWJsZSBJ
Q1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1JbnRlZ2VyRGlnaXRz
KGludDMyX3QgbmV3VmFsdWUpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWF4aW11
bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uIHBvcnRpb24gb2YgYQor
ICAgICAqIG51bWJlci4KKyAgICAgKiBAcmV0dXJuICAgIHRoZSBtYXhpbXVtIG51bWJlciBvZiBk
aWdpdHMgYWxsb3dlZCBpbiB0aGUgZnJhY3Rpb24gcG9ydGlvbiBvZiBhCisgICAgICogICAgICAg
ICAgICBudW1iZXIuCisgICAgICogQHNlZSBzZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBpbnQzMl90IGdldE1heGltdW1GcmFjdGlv
bkRpZ2l0cyh2b2lkKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1heGltdW0g
bnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBmcmFjdGlvbiBwb3J0aW9uIG9mIGEKKyAg
ICAgKiBudW1iZXIuIG1heGltdW1GcmFjdGlvbkRpZ2l0cyBtdXN0IGJlID49IG1pbmltdW1GcmFj
dGlvbkRpZ2l0cy4gIElmIHRoZQorICAgICAqIG5ldyB2YWx1ZSBmb3IgbWF4aW11bUZyYWN0aW9u
RGlnaXRzIGlzIGxlc3MgdGhhbiB0aGUgY3VycmVudCB2YWx1ZQorICAgICAqIG9mIG1pbmltdW1G
cmFjdGlvbkRpZ2l0cywgdGhlbiBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgd2lsbCBhbHNvIGJlIHNl
dCB0bworICAgICAqIHRoZSBuZXcgdmFsdWUuCisgICAgICogQHBhcmFtIG5ld1ZhbHVlICAgIHRo
ZSBuZXcgdmFsdWUgdG8gYmUgc2V0LgorICAgICAqIEBzZWUgZ2V0TWF4aW11bUZyYWN0aW9uRGln
aXRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHNl
dE1heGltdW1GcmFjdGlvbkRpZ2l0cyhpbnQzMl90IG5ld1ZhbHVlKTsKKworICAgIC8qKgorICAg
ICAqIFJldHVybnMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBm
cmFjdGlvbiBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuCisgICAgICogQHJldHVybiAgICB0
aGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uIHBvcnRp
b24gb2YgYQorICAgICAqICAgICAgICAgICAgbnVtYmVyLgorICAgICAqIEBzZWUgc2V0TWluaW11
bUZyYWN0aW9uRGlnaXRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgaW50
MzJfdCBnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHModm9pZCkgY29uc3Q7CisKKyAgICAvKioKKyAg
ICAgKiBTZXRzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgZnJh
Y3Rpb24gcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiBtaW5pbXVtRnJhY3Rpb25EaWdpdHMg
bXVzdCBiZSAmbHQ7PSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMuICAgSWYgdGhlCisgICAgICogbmV3
IHZhbHVlIGZvciBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgZXhjZWVkcyB0aGUgY3VycmVudCB2YWx1
ZQorICAgICAqIG9mIG1heGltdW1GcmFjdGlvbkRpZ2l0cywgdGhlbiBtYXhpbXVtSW50ZWdlckRp
Z2l0cyB3aWxsIGFsc28gYmUgc2V0IHRvCisgICAgICogdGhlIG5ldyB2YWx1ZQorICAgICAqIEBw
YXJhbSBuZXdWYWx1ZSAgICB0aGUgbmV3IHZhbHVlIHRvIGJlIHNldC4KKyAgICAgKiBAc2VlIGdl
dE1pbmltdW1GcmFjdGlvbkRpZ2l0cworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoaW50MzJfdCBuZXdWYWx1
ZSk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjdXJyZW5jeSB1c2VkIHRvIGRpc3BsYXkg
Y3VycmVuY3kKKyAgICAgKiBhbW91bnRzLiAgVGhpcyB0YWtlcyBlZmZlY3QgaW1tZWRpYXRlbHks
IGlmIHRoaXMgZm9ybWF0IGlzIGEKKyAgICAgKiBjdXJyZW5jeSBmb3JtYXQuICBJZiB0aGlzIGZv
cm1hdCBpcyBub3QgYSBjdXJyZW5jeSBmb3JtYXQsIHRoZW4KKyAgICAgKiB0aGUgY3VycmVuY3kg
aXMgdXNlZCBpZiBhbmQgd2hlbiB0aGlzIG9iamVjdCBiZWNvbWVzIGEKKyAgICAgKiBjdXJyZW5j
eSBmb3JtYXQuCisgICAgICogQHBhcmFtIHRoZUN1cnJlbmN5IGEgMy1sZXR0ZXIgSVNPIGNvZGUg
aW5kaWNhdGluZyBuZXcgY3VycmVuY3kKKyAgICAgKiB0byB1c2UuICBJdCBuZWVkIG5vdCBiZSBu
dWxsLXRlcm1pbmF0ZWQuICBNYXkgYmUgdGhlIGVtcHR5CisgICAgICogc3RyaW5nIG9yIE5VTEwg
dG8gaW5kaWNhdGUgbm8gY3VycmVuY3kuCisgICAgICogQHBhcmFtIGVjIGlucHV0LW91dHB1dCBl
cnJvciBjb2RlCisgICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAgICovCisgICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbmN5KGNvbnN0IFVDaGFyKiB0aGVDdXJyZW5jeSwgVUVycm9yQ29kZSYgZWMp
OworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY3VycmVuY3kgdXNlZCB0byBkaXNwbGF5IGN1
cnJlbmN5CisgICAgICogYW1vdW50cy4gIFRoaXMgbWF5IGJlIGFuIGVtcHR5IHN0cmluZyBmb3Ig
c29tZSBzdWJjbGFzc2VzLgorICAgICAqIEByZXR1cm4gYSAzLWxldHRlciBudWxsLXRlcm1pbmF0
ZWQgSVNPIGNvZGUgaW5kaWNhdGluZworICAgICAqIHRoZSBjdXJyZW5jeSBpbiB1c2UsIG9yIGEg
cG9pbnRlciB0byB0aGUgZW1wdHkgc3RyaW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuNgorICAg
ICAqLworICAgIGNvbnN0IFVDaGFyKiBnZXRDdXJyZW5jeSgpIGNvbnN0OworCitwdWJsaWM6CisK
KyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNsYXNzIElEIGZvciB0aGlzIGNsYXNzLiAgVGhp
cyBpcyB1c2VmdWwgZm9yCisgICAgICogY29tcGFyaW5nIHRvIGEgcmV0dXJuIHZhbHVlIGZyb20g
Z2V0RHluYW1pY0NsYXNzSUQoKS4gTm90ZSB0aGF0LAorICAgICAqIGJlY2F1c2UgTnVtYmVyRm9y
bWF0IGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MsIG5vIGZ1bGx5IGNvbnN0cnVjdGVkIG9iamVj
dAorICAgICAqIHdpbGwgaGF2ZSB0aGUgY2xhc3MgSUQgcmV0dXJuZWQgYnkgTnVtYmVyRm9ybWF0
OjpnZXRTdGF0aWNDbGFzc0lEKCkuCisgICAgICogQHJldHVybiBUaGUgY2xhc3MgSUQgZm9yIGFs
bCBvYmplY3RzIG9mIHRoaXMgY2xhc3MuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICov
CisgICAgc3RhdGljIFVDbGFzc0lEIFVfRVhQT1JUMiBnZXRTdGF0aWNDbGFzc0lEKHZvaWQpOwor
CisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHVuaXF1ZSBjbGFzcyBJRCBQT0xZTU9SUEhJQ0FM
TFkuICBQdXJlIHZpcnR1YWwgb3ZlcnJpZGUuCisgICAgICogVGhpcyBtZXRob2QgaXMgdG8gaW1w
bGVtZW50IGEgc2ltcGxlIHZlcnNpb24gb2YgUlRUSSwgc2luY2Ugbm90IGFsbAorICAgICAqIEMr
KyBjb21waWxlcnMgc3VwcG9ydCBnZW51aW5lIFJUVEkuICBQb2x5bW9ycGhpYyBvcGVyYXRvcj09
KCkgYW5kCisgICAgICogY2xvbmUoKSBtZXRob2RzIGNhbGwgdGhpcyBtZXRob2QuCisgICAgICog
PFA+CisgICAgICogQHJldHVybiBUaGUgY2xhc3MgSUQgZm9yIHRoaXMgb2JqZWN0LiBBbGwgb2Jq
ZWN0cyBvZiBhCisgICAgICogZ2l2ZW4gY2xhc3MgaGF2ZSB0aGUgc2FtZSBjbGFzcyBJRC4gIE9i
amVjdHMgb2YKKyAgICAgKiBvdGhlciBjbGFzc2VzIGhhdmUgZGlmZmVyZW50IGNsYXNzIElEcy4K
KyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVDbGFzc0lEIGdl
dER5bmFtaWNDbGFzc0lEKHZvaWQpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorCisgICAgLyoq
CisgICAgICogRGVmYXVsdCBjb25zdHJ1Y3RvciBmb3Igc3ViY2xhc3MgdXNlIG9ubHkuCisgICAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgTnVtYmVyRm9ybWF0KCk7CisKKyAgICAv
KioKKyAgICAgKiBDb3B5IGNvbnN0cnVjdG9yLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
ICAqLworICAgIE51bWJlckZvcm1hdChjb25zdCBOdW1iZXJGb3JtYXQmKTsKKworICAgIC8qKgor
ICAgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAg
ICovCisgICAgTnVtYmVyRm9ybWF0JiBvcGVyYXRvcj0oY29uc3QgTnVtYmVyRm9ybWF0Jik7CisK
KyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW5jeSBpbiBlZmZlY3QgZm9yIHRoaXMg
Zm9ybWF0dGVyLiAgU3ViY2xhc3NlcworICAgICAqIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhv
ZCBhcyBuZWVkZWQuICBVbmxpa2UgZ2V0Q3VycmVuY3koKSwKKyAgICAgKiB0aGlzIG1ldGhvZCBz
aG91bGQgbmV2ZXIgcmV0dXJuICIiLgorICAgICAqIEByZXN1bHQgb3V0cHV0IHBhcmFtZXRlciBm
b3IgbnVsbC10ZXJtaW5hdGVkIHJlc3VsdCwgd2hpY2ggbXVzdAorICAgICAqIGhhdmUgYSBjYXBh
Y2l0eSBvZiBhdCBsZWFzdCA0CisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgdmlydHVh
bCB2b2lkIGdldEVmZmVjdGl2ZUN1cnJlbmN5KFVDaGFyKiByZXN1bHQsIFVFcnJvckNvZGUmIGVj
KSBjb25zdDsKKworcHJpdmF0ZToKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgdGhlIHNwZWNp
ZmllZCBkZWNpbWFsIGZvcm1hdCBzdHlsZSBvZiB0aGUgZGVzaXJlZCBsb2NhbGUuCisgICAgICog
QHBhcmFtIGRlc2lyZWRMb2NhbGUgICAgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0g
Y2hvaWNlICAgICAgICAgICB0aGUgZ2l2ZW4gc3R5bGUuCisgICAgICogQHBhcmFtIHN1Y2Nlc3Mg
ICAgICAgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMu
CisgICAgICogQHJldHVybiAgICAgICAgICAgICAgICAgQSBuZXcgTnVtYmVyRm9ybWF0IGluc3Rh
bmNlLgorICAgICAqLworICAgIHN0YXRpYyBOdW1iZXJGb3JtYXQqIG1ha2VJbnN0YW5jZShjb25z
dCBMb2NhbGUmIGRlc2lyZWRMb2NhbGUsIEVTdHlsZXMgY2hvaWNlLCBVRXJyb3JDb2RlJiBzdWNj
ZXNzKTsKKworICAgIFVCb29sICAgICAgZkdyb3VwaW5nVXNlZDsKKyAgICBpbnQzMl90ICAgICBm
TWF4SW50ZWdlckRpZ2l0czsKKyAgICBpbnQzMl90ICAgICBmTWluSW50ZWdlckRpZ2l0czsKKyAg
ICBpbnQzMl90ICAgICBmTWF4RnJhY3Rpb25EaWdpdHM7CisgICAgaW50MzJfdCAgICAgZk1pbkZy
YWN0aW9uRGlnaXRzOworICAgIFVCb29sICAgICAgZlBhcnNlSW50ZWdlck9ubHk7CisKKyAgICAv
LyBJU08gY3VycmVuY3kgY29kZQorICAgIFVDaGFyICAgICAgZkN1cnJlbmN5WzRdOworCisgICAg
ZnJpZW5kIGNsYXNzIElDVU51bWJlckZvcm1hdEZhY3Rvcnk7IC8vIGFjY2VzcyB0byBtYWtlSW5z
dGFuY2UsIEVTdHlsZXMKKyAgICBmcmllbmQgY2xhc3MgSUNVTnVtYmVyRm9ybWF0U2VydmljZTsK
K307CisKKyNpZiAhVUNPTkZJR19OT19TRVJWSUNFCisvKioKKyAqIEEgTnVtYmVyRm9ybWF0RmFj
dG9yeSBpcyB1c2VkIHRvIHJlZ2lzdGVyIG5ldyBudW1iZXIgZm9ybWF0cy4gIFRoZSBmYWN0b3J5
CisgKiBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgYW55IG9mIHRoZSBwcmVkZWZpbmVkIGZvcm1h
dHMgZm9yIGVhY2ggbG9jYWxlIGl0CisgKiBzdXBwb3J0cy4gIFdoZW4gcmVnaXN0ZXJlZCwgdGhl
IGxvY2FsZXMgaXQgc3VwcG9ydHMgZXh0ZW5kIG9yIG92ZXJyaWRlIHRoZQorICogbG9jYWxlIGFs
cmVhZHkgc3VwcG9ydGVkIGJ5IElDVS4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworY2xh
c3MgVV9JMThOX0FQSSBOdW1iZXJGb3JtYXRGYWN0b3J5IDogcHVibGljIFVPYmplY3QgeworcHVi
bGljOgorCisgICAgLyoqCisgICAgICogRGVzdHJ1Y3RvcgorICAgICAqIEBzdGFibGUgSUNVIDMu
MAorICAgICAqLworICAgIHZpcnR1YWwgfk51bWJlckZvcm1hdEZhY3RvcnkoKTsKKworICAgIC8q
KgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgZmFjdG9yeSB3aWxsIGJlIHZpc2libGUuICBE
ZWZhdWx0IGlzIHRydWUuCisgICAgICogSWYgbm90IHZpc2libGUsIHRoZSBsb2NhbGVzIHN1cHBv
cnRlZCBieSB0aGlzIGZhY3Rvcnkgd2lsbCBub3QKKyAgICAgKiBiZSBsaXN0ZWQgYnkgZ2V0QXZh
aWxhYmxlTG9jYWxlcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICB2aXJ0
dWFsIFVCb29sIHZpc2libGUodm9pZCkgY29uc3QgPSAwOworCisgICAgLyoqCisgICAgICogUmV0
dXJuIHRoZSBsb2NhbGUgbmFtZXMgZGlyZWN0bHkgc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4g
IFRoZSBudW1iZXIgb2YgbmFtZXMKKyAgICAgKiBpcyByZXR1cm5lZCBpbiBjb3VudDsKKyAgICAg
KiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICB2aXJ0dWFsIGNvbnN0IFVuaWNvZGVTdHJp
bmcgKiBnZXRTdXBwb3J0ZWRJRHMoaW50MzJfdCAmY291bnQsIFVFcnJvckNvZGUmIHN0YXR1cykg
Y29uc3QgPSAwOworCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbnVtYmVyIGZvcm1hdCBvZiB0
aGUgYXBwcm9wcmlhdGUgdHlwZS4gIElmIHRoZSBsb2NhbGUKKyAgICAgKiBpcyBub3Qgc3VwcG9y
dGVkLCByZXR1cm4gbnVsbC4gIElmIHRoZSBsb2NhbGUgaXMgc3VwcG9ydGVkLCBidXQKKyAgICAg
KiB0aGUgdHlwZSBpcyBub3QgcHJvdmlkZWQgYnkgdGhpcyBzZXJ2aWNlLCByZXR1cm4gbnVsbC4g
IE90aGVyd2lzZQorICAgICAqIHJldHVybiBhbiBhcHByb3ByaWF0ZSBpbnN0YW5jZSBvZiBOdW1i
ZXJGb3JtYXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi42CisgICAgICovCisgICAgdmlydHVhbCBO
dW1iZXJGb3JtYXQqIGNyZWF0ZUZvcm1hdChjb25zdCBMb2NhbGUmIGxvYywgVU51bWJlckZvcm1h
dFN0eWxlIGZvcm1hdFR5cGUpID0gMDsKK307CisKKy8qKgorICogQSBOdW1iZXJGb3JtYXRGYWN0
b3J5IHRoYXQgc3VwcG9ydHMgYSBzaW5nbGUgbG9jYWxlLiAgSXQgY2FuIGJlIHZpc2libGUgb3Ig
aW52aXNpYmxlLgorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK2NsYXNzIFVfSTE4Tl9BUEkgU2lt
cGxlTnVtYmVyRm9ybWF0RmFjdG9yeSA6IHB1YmxpYyBOdW1iZXJGb3JtYXRGYWN0b3J5IHsKK3By
b3RlY3RlZDoKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIHRoZSBsb2NhbGUgc3VwcG9ydGVkIGJ5
IHRoaXMgZmFjdG9yeSBpcyB2aXNpYmxlLgorICAgICAqIEBzdGFibGUgSUNVIDIuNgorICAgICAq
LworICAgIGNvbnN0IFVCb29sIF92aXNpYmxlOworCisgICAgLyoqCisgICAgICogVGhlIGxvY2Fs
ZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5LCBhcyBhIFVuaWNvZGVTdHJpbmcuCisgICAgICog
QHN0YWJsZSBJQ1UgMi42CisgICAgICovCisgICAgVW5pY29kZVN0cmluZyBfaWQ7CisKK3B1Ymxp
YzoKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICBTaW1wbGVO
dW1iZXJGb3JtYXRGYWN0b3J5KGNvbnN0IExvY2FsZSYgbG9jYWxlLCBVQm9vbCB2aXNpYmxlID0g
VFJVRSk7CisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAzLjAKKyAgICAgKi8KKyAgICB2
aXJ0dWFsIH5TaW1wbGVOdW1iZXJGb3JtYXRGYWN0b3J5KCk7CisKKyAgICAvKioKKyAgICAgKiBA
c3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVCb29sIHZpc2libGUodm9pZCkg
Y29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICB2
aXJ0dWFsIGNvbnN0IFVuaWNvZGVTdHJpbmcgKiBnZXRTdXBwb3J0ZWRJRHMoaW50MzJfdCAmY291
bnQsIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7Cit9OworI2VuZGlmIC8qICNpZiAhVUNPTkZJ
R19OT19TRVJWSUNFICovCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworaW5saW5lIFVCb29sCitOdW1iZXJGb3JtYXQ6OmlzUGFyc2VJbnRlZ2VyT25seSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZQYXJzZUludGVnZXJPbmx5OworfQorCitpbmxpbmUgVW5pY29k
ZVN0cmluZyYKK051bWJlckZvcm1hdDo6Zm9ybWF0KGNvbnN0IEZvcm1hdHRhYmxlJiBvYmosCisg
ICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3QgeworICAgIHJldHVybiBGb3JtYXQ6
OmZvcm1hdChvYmosIGFwcGVuZFRvLCBzdGF0dXMpOworfQorCitVX05BTUVTUEFDRV9FTkQKKwor
I2VuZGlmIC8qICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICovCisKKyNlbmRpZiAvLyBfTlVN
Rk1UCisvL2VvZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2Rl
L3BhcnNlcG9zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvcGFyc2Vwb3Mu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZGY0OWUwNGVjMjdjMjY2NmU3ZDQxM2QwYWRlYmVlNGQ1M2RjN2NkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3BhcnNl
cG9zLmgKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMTk5Ny0yMDA1LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIEZpbGUgUEFS
U0VQT1MuSAorKgorKiBNb2RpZmljYXRpb24gSGlzdG9yeToKKyoKKyogICBEYXRlICAgICAgICBO
YW1lICAgICAgICBEZXNjcmlwdGlvbgorKiAgIDA3LzA5Lzk3ICAgIGhlbGVuYSAgICAgIENvbnZl
cnRlZCBmcm9tIGphdmEuCisqICAgMDcvMTcvOTggICAgc3RlcGhlbiAgICAgQWRkZWQgZXJyb3JJ
bmRleCBzdXBwb3J0LgorKiAgIDA1LzExLzk5ICAgIHN0ZXBoZW4gICAgIENsZWFuZWQgdXAuCisq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmIFBBUlNFUE9TX0gKKyNkZWZpbmUg
UEFSU0VQT1NfSAorCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmlj
b2RlL3VvYmplY3QuaCIKKworIAorVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcZmlsZQor
ICogXGJyaWVmIEMrKyBBUEk6IENhbm9uaWNhbCBJdGVyYXRvcgorICovCisvKiogCisgKiA8Y29k
ZT5QYXJzZVBvc2l0aW9uPC9jb2RlPiBpcyBhIHNpbXBsZSBjbGFzcyB1c2VkIGJ5IDxjb2RlPkZv
cm1hdDwvY29kZT4KKyAqIGFuZCBpdHMgc3ViY2xhc3NlcyB0byBrZWVwIHRyYWNrIG9mIHRoZSBj
dXJyZW50IHBvc2l0aW9uIGR1cmluZyBwYXJzaW5nLgorICogVGhlIDxjb2RlPnBhcnNlT2JqZWN0
PC9jb2RlPiBtZXRob2QgaW4gdGhlIHZhcmlvdXMgPGNvZGU+Rm9ybWF0PC9jb2RlPgorICogY2xh
c3NlcyByZXF1aXJlcyBhIDxjb2RlPlBhcnNlUG9zaXRpb248L2NvZGU+IG9iamVjdCBhcyBhbiBh
cmd1bWVudC4KKyAqCisgKiA8cD4KKyAqIEJ5IGRlc2lnbiwgYXMgeW91IHBhcnNlIHRocm91Z2gg
YSBzdHJpbmcgd2l0aCBkaWZmZXJlbnQgZm9ybWF0cywKKyAqIHlvdSBjYW4gdXNlIHRoZSBzYW1l
IDxjb2RlPlBhcnNlUG9zaXRpb248L2NvZGU+LCBzaW5jZSB0aGUgaW5kZXggcGFyYW1ldGVyCisg
KiByZWNvcmRzIHRoZSBjdXJyZW50IHBvc2l0aW9uLgorICoKKyAqIFRoZSBQYXJzZVBvc2l0aW9u
IGNsYXNzIGlzIG5vdCBzdWl0YWJsZSBmb3Igc3ViY2xhc3NpbmcuCisgKgorICogQHZlcnNpb24g
ICAgIDEuMyAxMC8zMC85NworICogQGF1dGhvciAgICAgIE1hcmsgRGF2aXMsIEhlbGVuYSBTaGlo
CisgKiBAc2VlICAgICAgICAgamF2YS50ZXh0LkZvcm1hdAorICovCisKK2NsYXNzIFVfQ09NTU9O
X0FQSSBQYXJzZVBvc2l0aW9uIDogcHVibGljIFVPYmplY3QgeworcHVibGljOgorICAgIC8qKgor
ICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IsIHRoZSBpbmRleCBzdGFydHMgd2l0aCAwIGFzIGRl
ZmF1bHQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgUGFyc2VQb3NpdGlv
bigpCisgICAgICAgIDogVU9iamVjdCgpLAorICAgICAgICBpbmRleCgwKSwKKyAgICAgICAgZXJy
b3JJbmRleCgtMSkKKyAgICAgIHt9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgUGFy
c2VQb3NpdGlvbiB3aXRoIHRoZSBnaXZlbiBpbml0aWFsIGluZGV4LgorICAgICAqIEBwYXJhbSBu
ZXdJbmRleCB0aGUgbmV3IHRleHQgb2Zmc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
ICAqLworICAgIFBhcnNlUG9zaXRpb24oaW50MzJfdCBuZXdJbmRleCkKKyAgICAgICAgOiBVT2Jq
ZWN0KCksCisgICAgICAgIGluZGV4KG5ld0luZGV4KSwKKyAgICAgICAgZXJyb3JJbmRleCgtMSkK
KyAgICAgIHt9CisKKyAgICAvKioKKyAgICAgKiBDb3B5IGNvbnN0cnVjdG9yCisgICAgICogQHBh
cmFtIGNvcHkgdGhlIG9iamVjdCB0byBiZSBjb3BpZWQgZnJvbS4KKyAgICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICAgKi8KKyAgICBQYXJzZVBvc2l0aW9uKGNvbnN0IFBhcnNlUG9zaXRpb24mIGNv
cHkpCisgICAgICAgIDogVU9iamVjdChjb3B5KSwKKyAgICAgICAgaW5kZXgoY29weS5pbmRleCks
CisgICAgICAgIGVycm9ySW5kZXgoY29weS5lcnJvckluZGV4KQorICAgICAge30KKworICAgIC8q
KgorICAgICAqIERlc3RydWN0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAg
ICB2aXJ0dWFsIH5QYXJzZVBvc2l0aW9uKCk7CisKKyAgICAvKioKKyAgICAgKiBBc3NpZ25tZW50
IG9wZXJhdG9yCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgUGFyc2VQb3Np
dGlvbiYgICAgICBvcGVyYXRvcj0oY29uc3QgUGFyc2VQb3NpdGlvbiYgY29weSk7CisKKyAgICAv
KioKKyAgICAgKiBFcXVhbGl0eSBvcGVyYXRvci4KKyAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhl
IHR3byBwYXJzZSBwb3NpdGlvbnMgYXJlIGVxdWFsLCBGQUxTRSBvdGhlcndpc2UuCisgICAgICog
QHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgVUJvb2wgICAgICAgICAgICAgIG9wZXJhdG9y
PT0oY29uc3QgUGFyc2VQb3NpdGlvbiYgdGhhdCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBF
cXVhbGl0eSBvcGVyYXRvci4KKyAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIHR3byBwYXJzZSBw
b3NpdGlvbnMgYXJlIG5vdCBlcXVhbCwgRkFMU0Ugb3RoZXJ3aXNlLgorICAgICAqIEBzdGFibGUg
SUNVIDIuMAorICAgICAqLworICAgIFVCb29sICAgICAgICAgICAgICBvcGVyYXRvciE9KGNvbnN0
IFBhcnNlUG9zaXRpb24mIHRoYXQpIGNvbnN0OworCisgICAgLyoqCisgICAgICogQ2xvbmUgdGhp
cyBvYmplY3QuCisgICAgICogQ2xvbmVzIGNhbiBiZSB1c2VkIGNvbmN1cnJlbnRseSBpbiBtdWx0
aXBsZSB0aHJlYWRzLgorICAgICAqIElmIGFuIGVycm9yIG9jY3VycywgdGhlbiBOVUxMIGlzIHJl
dHVybmVkLgorICAgICAqIFRoZSBjYWxsZXIgbXVzdCBkZWxldGUgdGhlIGNsb25lLgorICAgICAq
CisgICAgICogQHJldHVybiBhIGNsb25lIG9mIHRoaXMgb2JqZWN0CisgICAgICoKKyAgICAgKiBA
c2VlIGdldER5bmFtaWNDbGFzc0lECisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICovCisg
ICAgUGFyc2VQb3NpdGlvbiAqY2xvbmUoKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFJldHJp
ZXZlIHRoZSBjdXJyZW50IHBhcnNlIHBvc2l0aW9uLiAgT24gaW5wdXQgdG8gYSBwYXJzZSBtZXRo
b2QsIHRoaXMKKyAgICAgKiBpcyB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBhdCB3aGljaCBw
YXJzaW5nIHdpbGwgYmVnaW47IG9uIG91dHB1dCwgaXQKKyAgICAgKiBpcyB0aGUgaW5kZXggb2Yg
dGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIHBhcnNlZC4KKyAgICAg
KiBAcmV0dXJuIHRoZSBjdXJyZW50IGluZGV4LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
ICAqLworICAgIGludDMyX3QgZ2V0SW5kZXgodm9pZCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAg
KiBTZXQgdGhlIGN1cnJlbnQgcGFyc2UgcG9zaXRpb24uCisgICAgICogQHBhcmFtIGluZGV4IHRo
ZSBuZXcgaW5kZXguCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdm9pZCBz
ZXRJbmRleChpbnQzMl90IGluZGV4KTsKKworICAgIC8qKgorICAgICAqIFNldCB0aGUgaW5kZXgg
YXQgd2hpY2ggYSBwYXJzZSBlcnJvciBvY2N1cnJlZC4gIEZvcm1hdHRlcnMKKyAgICAgKiBzaG91
bGQgc2V0IHRoaXMgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvciBjb2RlIGZyb20gdGhlaXIKKyAg
ICAgKiBwYXJzZU9iamVjdCBtZXRob2QuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAtMSBpZiB0aGlz
IGlzIG5vdAorICAgICAqIHNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAg
ICB2b2lkIHNldEVycm9ySW5kZXgoaW50MzJfdCBlaSk7CisKKyAgICAvKioKKyAgICAgKiBSZXRy
aWV2ZSB0aGUgaW5kZXggYXQgd2hpY2ggYW4gZXJyb3Igb2NjdXJyZWQsIG9yIC0xIGlmIHRoZQor
ICAgICAqIGVycm9yIGluZGV4IGhhcyBub3QgYmVlbiBzZXQuCisgICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAgICovCisgICAgaW50MzJfdCBnZXRFcnJvckluZGV4KHZvaWQpIGNvbnN0OworCisg
ICAgLyoqCisgICAgICogSUNVICJwb29yIG1hbidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQg
Zm9yIHRoaXMgY2xhc3MuCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICAgKi8K
KyAgICBzdGF0aWMgVUNsYXNzSUQgVV9FWFBPUlQyIGdldFN0YXRpY0NsYXNzSUQoKTsKKworICAg
IC8qKgorICAgICAqIElDVSAicG9vciBtYW4ncyBSVFRJIiwgcmV0dXJucyBhIFVDbGFzc0lEIGZv
ciB0aGUgYWN0dWFsIGNsYXNzLgorICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAg
ICovCisgICAgdmlydHVhbCBVQ2xhc3NJRCBnZXREeW5hbWljQ2xhc3NJRCgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIC8qKgorICAgICAqIElucHV0OiB0aGUgcGxhY2UgeW91IHN0YXJ0IHBhcnNp
bmcuCisgICAgICogPGJyPk91dHB1dDogcG9zaXRpb24gd2hlcmUgdGhlIHBhcnNlIHN0b3BwZWQu
CisgICAgICogVGhpcyBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIHNlcmlhbGx5LAorICAgICAqIHdp
dGggZWFjaCBjYWxsIHNldHRpbmcgaW5kZXggdXAgZm9yIHRoZSBuZXh0IG9uZS4KKyAgICAgKi8K
KyAgICBpbnQzMl90IGluZGV4OworCisgICAgLyoqCisgICAgICogVGhlIGluZGV4IGF0IHdoaWNo
IGEgcGFyc2UgZXJyb3Igb2NjdXJyZWQuCisgICAgICovCisgICAgaW50MzJfdCBlcnJvckluZGV4
OworCit9OworCitpbmxpbmUgUGFyc2VQb3NpdGlvbiYKK1BhcnNlUG9zaXRpb246Om9wZXJhdG9y
PShjb25zdCBQYXJzZVBvc2l0aW9uJiBjb3B5KQoreworICBpbmRleCA9IGNvcHkuaW5kZXg7Cisg
IGVycm9ySW5kZXggPSBjb3B5LmVycm9ySW5kZXg7CisgIHJldHVybiAqdGhpczsKK30KKworaW5s
aW5lIFVCb29sCitQYXJzZVBvc2l0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFBhcnNlUG9zaXRpb24m
IGNvcHkpIGNvbnN0Cit7CisgIGlmKGluZGV4ICE9IGNvcHkuaW5kZXggfHwgZXJyb3JJbmRleCAh
PSBjb3B5LmVycm9ySW5kZXgpCisgIHJldHVybiBGQUxTRTsKKyAgZWxzZQorICByZXR1cm4gVFJV
RTsKK30KKworaW5saW5lIFVCb29sCitQYXJzZVBvc2l0aW9uOjpvcGVyYXRvciE9KGNvbnN0IFBh
cnNlUG9zaXRpb24mIGNvcHkpIGNvbnN0Cit7CisgIHJldHVybiAhb3BlcmF0b3I9PShjb3B5KTsK
K30KKworaW5saW5lIGludDMyX3QKK1BhcnNlUG9zaXRpb246OmdldEluZGV4KCkgY29uc3QKK3sK
KyAgcmV0dXJuIGluZGV4OworfQorCitpbmxpbmUgdm9pZAorUGFyc2VQb3NpdGlvbjo6c2V0SW5k
ZXgoaW50MzJfdCBvZmZzZXQpCit7CisgIHRoaXMtPmluZGV4ID0gb2Zmc2V0OworfQorCitpbmxp
bmUgaW50MzJfdAorUGFyc2VQb3NpdGlvbjo6Z2V0RXJyb3JJbmRleCgpIGNvbnN0Cit7CisgIHJl
dHVybiBlcnJvckluZGV4OworfQorCitpbmxpbmUgdm9pZAorUGFyc2VQb3NpdGlvbjo6c2V0RXJy
b3JJbmRleChpbnQzMl90IGVpKQoreworICB0aGlzLT5lcnJvckluZGV4ID0gZWk7Cit9CitVX05B
TUVTUEFDRV9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aWN1L3VuaWNvZGUvcmVwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvcmVw
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2ZhYjZmYTEyNzJlMGY2MGE0MTczOWM4MzFiM2YwNmY5N2M2YTBlMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9yZXAu
aApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAo
QykgMTk5OS0yMDA1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9u
IGFuZAorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
KiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMTEvMTcvOTkgICAg
YWxpdSAgICAgICAgQ3JlYXRpb24uICBQb3J0ZWQgZnJvbSBqYXZhLiAgTW9kaWZpZWQgdG8KKyog
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjdXJyZW50IFVuaWNvZGVTdHJpbmcgQVBJ
LiAgRm9yY2VkCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIG5hbWUgImhhbmRs
ZVJlcGxhY2VCZXR3ZWVuIiBiZWNhdXNlCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Yg
ZXhpc3RpbmcgbWV0aG9kcyBpbiBVbmljb2RlU3RyaW5nLgorKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyov
CisKKyNpZm5kZWYgUkVQX0gKKyNkZWZpbmUgUkVQX0gKKworI2luY2x1ZGUgInVuaWNvZGUvdW9i
amVjdC5oIgorCisvKioKKyAqIFxmaWxlIAorICogXGJyaWVmIEMrKyBBUEk6IFJlcGxhY2VhYmxl
IFN0cmluZworICovCisgCitVX05BTUVTUEFDRV9CRUdJTgorCitjbGFzcyBVbmljb2RlU3RyaW5n
OworCisvKioKKyAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBpcyBhbiBhYnN0cmFjdCBiYXNl
IGNsYXNzIHJlcHJlc2VudGluZyBhCisgKiBzdHJpbmcgb2YgY2hhcmFjdGVycyB0aGF0IHN1cHBv
cnRzIHRoZSByZXBsYWNlbWVudCBvZiBhIHJhbmdlIG9mCisgKiBpdHNlbGYgd2l0aCBhIG5ldyBz
dHJpbmcgb2YgY2hhcmFjdGVycy4gIEl0IGlzIHVzZWQgYnkgQVBJcyB0aGF0CisgKiBjaGFuZ2Ug
YSBwaWVjZSBvZiB0ZXh0IHdoaWxlIHJldGFpbmluZyBtZXRhZGF0YS4gIE1ldGFkYXRhIGlzIGRh
dGEKKyAqIG90aGVyIHRoYW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVycyByZXR1cm5lZCBieSBjaGFy
MzJBdCgpLiAgT25lCisgKiBleGFtcGxlIG9mIG1ldGFkYXRhIGlzIHN0eWxlIGF0dHJpYnV0ZXM7
IGFub3RoZXIgaXMgYW4gZWRpdAorICogaGlzdG9yeSwgbWFya2luZyBlYWNoIGNoYXJhY3RlciB3
aXRoIGFuIGF1dGhvciBhbmQgcmV2aXNpb24gbnVtYmVyLgorICoKKyAqIDxwPkFuIGltcGxpY2l0
IGFzcGVjdCBvZiB0aGUgPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+IEFQSSBpcyB0aGF0CisgKiBk
dXJpbmcgYSByZXBsYWNlIG9wZXJhdGlvbiwgbmV3IGNoYXJhY3RlcnMgdGFrZSBvbiB0aGUgbWV0
YWRhdGEgb2YKKyAqIHRoZSBvbGQgY2hhcmFjdGVycy4gIEZvciBleGFtcGxlLCBpZiB0aGUgc3Ry
aW5nICJ0aGUgPGI+Ym9sZDwvYj4KKyAqIGZvbnQiIGhhcyByYW5nZSAoNCwgOCkgcmVwbGFjZWQg
d2l0aCAic3Ryb25nIiwgdGhlbiBpdCBiZWNvbWVzICJ0aGUKKyAqIDxiPnN0cm9uZzwvYj4gZm9u
dCIuCisgKgorICogPHA+PGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+IHNwZWNpZmllcyByYW5nZXMg
dXNpbmcgYSBzdGFydAorICogb2Zmc2V0IGFuZCBhIGxpbWl0IG9mZnNldC4gIFRoZSByYW5nZSBv
ZiBjaGFyYWN0ZXJzIHRodXMgc3BlY2lmaWVkCisgKiBpbmNsdWRlcyB0aGUgY2hhcmFjdGVycyBh
dCBvZmZzZXQgc3RhcnQuLmxpbWl0LTEuICBUaGF0IGlzLCB0aGUKKyAqIHN0YXJ0IG9mZnNldCBp
cyBpbmNsdXNpdmUsIGFuZCB0aGUgbGltaXQgb2Zmc2V0IGlzIGV4Y2x1c2l2ZS4KKyAqCisgKiA8
cD48Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gYWxzbyBpbmNsdWRlcyBBUEkgdG8gYWNjZXNzIGNo
YXJhY3RlcnMKKyAqIGluIHRoZSBzdHJpbmc6IDxjb2RlPmxlbmd0aCgpPC9jb2RlPiwgPGNvZGU+
Y2hhckF0KCk8L2NvZGU+LAorICogPGNvZGU+Y2hhcjMyQXQoKTwvY29kZT4sIGFuZCA8Y29kZT5l
eHRyYWN0QmV0d2VlbigpPC9jb2RlPi4KKyAqCisgKiA8cD5Gb3IgYSBzdWJjbGFzcyB0byBzdXBw
b3J0IG1ldGFkYXRhLCB0eXBpY2FsIGJlaGF2aW9yIG9mCisgKiA8Y29kZT5yZXBsYWNlKCk8L2Nv
ZGU+IGlzIHRoZSBmb2xsb3dpbmc6CisgKiA8dWw+CisgKiAgIDxsaT5TZXQgdGhlIG1ldGFkYXRh
IG9mIHRoZSBuZXcgdGV4dCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlIGZpcnN0CisgKiAgIGNoYXJh
Y3RlciByZXBsYWNlZDwvbGk+CisgKiAgIDxsaT5JZiBubyBjaGFyYWN0ZXJzIGFyZSByZXBsYWNl
ZCwgdXNlIHRoZSBtZXRhZGF0YSBvZiB0aGUKKyAqICAgcHJldmlvdXMgY2hhcmFjdGVyPC9saT4K
KyAqICAgPGxpPklmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGNoYXJhY3RlciAoaS5lLiBzdGFydCA9
PSAwKSwgdXNlIHRoZQorICogICBmb2xsb3dpbmcgY2hhcmFjdGVyPC9saT4KKyAqICAgPGxpPklm
IHRoZXJlIGlzIG5vIGZvbGxvd2luZyBjaGFyYWN0ZXIgKGkuZS4gdGhlIHJlcGxhY2VhYmxlIHdh
cworICogICBlbXB0eSksIHVzZSBkZWZhdWx0IG1ldGFkYXRhLjxicj4KKyAqICAgPGxpPklmIHRo
ZSBjb2RlIHBvaW50IFUrRkZGRiBpcyBzZWVuLCBpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMK
KyAqICAgYSBzcGVjaWFsIG1hcmtlciBoYXZpbmcgbm8gbWV0YWRhdGE8bGk+CisgKiAgIDwvbGk+
CisgKiA8L3VsPgorICogSWYgdGhpcyBpcyBub3QgdGhlIGJlaGF2aW9yLCB0aGUgc3ViY2xhc3Mg
c2hvdWxkIGRvY3VtZW50IGFueSBkaWZmZXJlbmNlcy4KKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCitjbGFzcyBVX0NPTU1PTl9BUEkgUmVwbGFjZWFibGUgOiBw
dWJsaWMgVU9iamVjdCB7CisKK3B1YmxpYzoKKyAgICAvKioKKyAgICAgKiBEZXN0cnVjdG9yLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZpcnR1YWwgflJlcGxhY2VhYmxl
KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgMTYtYml0IGNvZGUg
dW5pdHMgaW4gdGhlIHRleHQuCisgICAgICogQHJldHVybiBudW1iZXIgb2YgMTYtYml0IGNvZGUg
dW5pdHMgaW4gdGV4dAorICAgICAqIEBzdGFibGUgSUNVIDEuOAorICAgICAqLyAKKyAgICBpbmxp
bmUgaW50MzJfdCBsZW5ndGgoKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhl
IDE2LWJpdCBjb2RlIHVuaXQgYXQgdGhlIGdpdmVuIG9mZnNldCBpbnRvIHRoZSB0ZXh0LgorICAg
ICAqIEBwYXJhbSBvZmZzZXQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDxjb2RlPmxlbmd0aCgp
PC9jb2RlPi0xCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJldHVybiAxNi1iaXQgY29kZSB1
bml0IG9mIHRleHQgYXQgZ2l2ZW4gb2Zmc2V0CisgICAgICogQHN0YWJsZSBJQ1UgMS44CisgICAg
ICovCisgICAgaW5saW5lIFVDaGFyIGNoYXJBdChpbnQzMl90IG9mZnNldCkgY29uc3Q7CisKKyAg
ICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSAzMi1iaXQgY29kZSBwb2ludCBhdCB0aGUgZ2l2ZW4g
MTYtYml0IG9mZnNldCBpbnRvCisgICAgICogdGhlIHRleHQuICBUaGlzIGFzc3VtZXMgdGhlIHRl
eHQgaXMgc3RvcmVkIGFzIDE2LWJpdCBjb2RlIHVuaXRzCisgICAgICogd2l0aCBzdXJyb2dhdGUg
cGFpcnMgaW50ZXJtaXhlZC4gIElmIHRoZSBvZmZzZXQgb2YgYSBsZWFkaW5nIG9yCisgICAgICog
dHJhaWxpbmcgY29kZSB1bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIgaXMgZ2l2ZW4sIHJldHVybiB0
aGUKKyAgICAgKiBjb2RlIHBvaW50IG9mIHRoZSBzdXJyb2dhdGUgcGFpci4KKyAgICAgKgorICAg
ICAqIEBwYXJhbSBvZmZzZXQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDxjb2RlPmxlbmd0aCgp
PC9jb2RlPi0xCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJldHVybiAzMi1iaXQgY29kZSBw
b2ludCBvZiB0ZXh0IGF0IGdpdmVuIG9mZnNldAorICAgICAqIEBzdGFibGUgSUNVIDEuOAorICAg
ICAqLworICAgIGlubGluZSBVQ2hhcjMyIGNoYXIzMkF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsK
KworICAgIC8qKgorICAgICAqIENvcGllcyBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbPHR0PnN0
YXJ0PC90dD4sIDx0dD5saW1pdDwvdHQ+KSAKKyAgICAgKiBpbnRvIHRoZSBVbmljb2RlU3RyaW5n
IDx0dD50YXJnZXQ8L3R0Pi4KKyAgICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNo
YXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgICAqIEBwYXJhbSBsaW1pdCBvZmZzZXQg
aW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciB0bworICAgICAqIGJlIGNv
cGllZAorICAgICAqIEBwYXJhbSB0YXJnZXQgVW5pY29kZVN0cmluZyBpbnRvIHdoaWNoIHRvIGNv
cHkgY2hhcmFjdGVycy4KKyAgICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIDxUVD50YXJnZXQ8
L1RUPgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHZpcnR1YWwgdm9pZCBl
eHRyYWN0QmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlj
b2RlU3RyaW5nJiB0YXJnZXQpIGNvbnN0ID0gMDsKKworICAgIC8qKgorICAgICAqIFJlcGxhY2Vz
IGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHRleHQuICBJZiB0aGUK
KyAgICAgKiBjaGFyYWN0ZXJzIGJlaW5nIHJlcGxhY2VkIGhhdmUgbWV0YWRhdGEsIHRoZSBuZXcg
Y2hhcmFjdGVycworICAgICAqIHRoYXQgcmVwbGFjZSB0aGVtIHNob3VsZCBiZSBnaXZlbiB0aGUg
c2FtZSBtZXRhZGF0YS4KKyAgICAgKgorICAgICAqIDxwPlN1YmNsYXNzZXMgbXVzdCBlbnN1cmUg
dGhhdCBpZiB0aGUgdGV4dCBiZXR3ZWVuIHN0YXJ0IGFuZAorICAgICAqIGxpbWl0IGlzIGVxdWFs
IHRvIHRoZSByZXBsYWNlbWVudCB0ZXh0LCB0aGF0IHJlcGxhY2UgaGFzIG5vCisgICAgICogZWZm
ZWN0LiBUaGF0IGlzLCBhbnkgbWV0YWRhdGEKKyAgICAgKiBzaG91bGQgYmUgdW5hZmZlY3RlZC4g
SW4gYWRkaXRpb24sIHN1YmNsYXNzZXMgYXJlIGVuY291cmFnZWQgdG8KKyAgICAgKiBjaGVjayBm
b3IgaW5pdGlhbCBhbmQgdHJhaWxpbmcgaWRlbnRpY2FsIGNoYXJhY3RlcnMsIGFuZCBtYWtlIGEK
KyAgICAgKiBzbWFsbGVyIHJlcGxhY2VtZW50IGlmIHBvc3NpYmxlLiBUaGlzIHdpbGwgcHJlc2Vy
dmUgYXMgbXVjaAorICAgICAqIG1ldGFkYXRhIGFzIHBvc3NpYmxlLgorICAgICAqIEBwYXJhbSBz
dGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAg
ICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5k
ZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAgICAgKiA8PSBsZW5ndGgoKTwv
Y29kZT4uCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gcmVwbGFjZSBjaGFyYWN0ZXJz
IDxjb2RlPnN0YXJ0PC9jb2RlPgorICAgICAqIHRvIDxjb2RlPmxpbWl0IC0gMTwvY29kZT4gCisg
ICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVJl
cGxhY2VCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpID0gMDsKKyAgICAvLyBOb3RlOiBBbGwg
b3RoZXIgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIHRha2UgdGhlIG5hbWVzIG9mCisgICAgLy8gZXhp
c3RpbmcgVW5pY29kZVN0cmluZyBtZXRob2RzLiAgVGhpcyBtZXRob2QgaXMgdGhlIGV4Y2VwdGlv
bi4KKyAgICAvLyBJdCBpcyBuYW1lZCBkaWZmZXJlbnRseSBiZWNhdXNlIGFsbCByZXBsYWNlIG1l
dGhvZHMgb2YKKyAgICAvLyBVbmljb2RlU3RyaW5nIHJldHVybiBhIFVuaWNvZGVTdHJpbmcmLiAg
VGhlICdiZXR3ZWVuJyBpcworICAgIC8vIHJlcXVpcmVkIGluIG9yZGVyIHRvIGNvbmZvcm0gdG8g
dGhlIFVuaWNvZGVTdHJpbmcgbmFtaW5nCisgICAgLy8gY29udmVudGlvbjsgQVBJIHRha2luZyBz
dGFydC9sZW5ndGggYXJlIG5hbWVkIDxvcGVyYXRpb24+LCBhbmQKKyAgICAvLyB0aG9zZSB0YWtp
bmcgc3RhcnQvbGltaXQgYXJlIG5hbWVkIDxvcGVyYXRpb25CZXR3ZWVuPi4gIFRoZQorICAgIC8v
ICdoYW5kbGUnIGlzIGFkZGVkIGJlY2F1c2UgJ3JlcGxhY2VCZXR3ZWVuJyBhbmQKKyAgICAvLyAn
ZG9SZXBsYWNlQmV0d2VlbicgYXJlIGFscmVhZHkgdGFrZW4uCisKKyAgICAvKioKKyAgICAgKiBD
b3BpZXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBvYmplY3QsIHJldGFpbmluZyBtZXRhZGF0YS4KKyAg
ICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmlu
Z3MuCisgICAgICogVGhlIGRlc3RpbmF0aW9uIGluZGV4IG11c3Qgbm90IG92ZXJsYXAgdGhlIHNv
dXJjZSByYW5nZS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBp
bmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9CisgICAgICogbGltaXQ8L2NvZGU+
LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2Rl
PnN0YXJ0IDw9IGxpbWl0IDw9CisgICAgICogbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJh
bSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBpbmRleC4gIFRoZSBjaGFyYWN0ZXJzIGZyb20KKyAgICAg
KiA8Y29kZT5zdGFydC4ubGltaXQtMTwvY29kZT4gd2lsbCBiZSBjb3BpZWQgdG8gPGNvZGU+ZGVz
dDwvY29kZT4uCisgICAgICogSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIG1heSBhc3N1
bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8CisgICAgICogZGVzdCA+PSBsaW1pdDwvY29k
ZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIGNv
cHkoaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCwgaW50MzJfdCBkZXN0KSA9IDA7CisKKyAg
ICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBvYmplY3QgY29udGFpbnMgbWV0YWRh
dGEuICBJZiBhCisgICAgICogUmVwbGFjZWFibGUgb2JqZWN0IGhhcyBtZXRhZGF0YSwgY2FsbHMg
dG8gdGhlIFJlcGxhY2VhYmxlIEFQSQorICAgICAqIG11c3QgYmUgbWFkZSBzbyBhcyB0byBwcmVz
ZXJ2ZSBtZXRhZGF0YS4gIElmIGl0IGRvZXMgbm90LCBjYWxscworICAgICAqIHRvIHRoZSBSZXBs
YWNlYWJsZSBBUEkgbWF5IGJlIG9wdGltaXplZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorICAg
ICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgdHJ1ZS4KKyAgICAgKiBAcmV0
dXJuIHRydWUgaWYgdGhpcyBvYmplY3QgY29udGFpbnMgbWV0YWRhdGEKKyAgICAgKiBAc3RhYmxl
IElDVSAyLjIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVCb29sIGhhc01ldGFEYXRhKCkgY29uc3Q7
CisKKyAgICAvKioKKyAgICAgKiBDbG9uZSB0aGlzIG9iamVjdCwgYW4gaW5zdGFuY2Ugb2YgYSBz
dWJjbGFzcyBvZiBSZXBsYWNlYWJsZS4KKyAgICAgKiBDbG9uZXMgY2FuIGJlIHVzZWQgY29uY3Vy
cmVudGx5IGluIG11bHRpcGxlIHRocmVhZHMuCisgICAgICogSWYgYSBzdWJjbGFzcyBkb2VzIG5v
dCBpbXBsZW1lbnQgY2xvbmUoKSwgb3IgaWYgYW4gZXJyb3Igb2NjdXJzLAorICAgICAqIHRoZW4g
TlVMTCBpcyByZXR1cm5lZC4KKyAgICAgKiBUaGUgY2xvbmUgZnVuY3Rpb25zIGluIGFsbCBzdWJj
bGFzc2VzIHJldHVybiBhIHBvaW50ZXIgdG8gYSBSZXBsYWNlYWJsZQorICAgICAqIGJlY2F1c2Ug
c29tZSBjb21waWxlcnMgZG8gbm90IHN1cHBvcnQgY292YXJpYW50IChzYW1lLWFzLXRoaXMpCisg
ICAgICogcmV0dXJuIHR5cGVzOyBjYXN0IHRvIHRoZSBhcHByb3ByaWF0ZSBzdWJjbGFzcyBpZiBu
ZWNlc3NhcnkuCisgICAgICogVGhlIGNhbGxlciBtdXN0IGRlbGV0ZSB0aGUgY2xvbmUuCisgICAg
ICoKKyAgICAgKiBAcmV0dXJuIGEgY2xvbmUgb2YgdGhpcyBvYmplY3QKKyAgICAgKgorICAgICAq
IEBzZWUgZ2V0RHluYW1pY0NsYXNzSUQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8K
KyAgICB2aXJ0dWFsIFJlcGxhY2VhYmxlICpjbG9uZSgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisK
KyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgICAqIEBzdGFibGUgSUNV
IDIuNAorICAgICAqLworICAgIFJlcGxhY2VhYmxlKCk7CisKKyAgICAvKgorICAgICAqIEFzc2ln
bm1lbnQgb3BlcmF0b3Igbm90IGRlY2xhcmVkLiBUaGUgY29tcGlsZXIgd2lsbCBwcm92aWRlIG9u
ZQorICAgICAqIHdoaWNoIGRvZXMgbm90aGluZyBzaW5jZSB0aGlzIGNsYXNzIGRvZXMgbm90IGNv
bnRhaW4gYW55IGRhdGEgbWVtYmVycy4KKyAgICAgKiBBUEkvY29kZSBjb3ZlcmFnZSBtYXkgc2hv
dyB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBhcyBwcmVzZW50IGFuZAorICAgICAqIHVudGVzdGVk
IC0gaWdub3JlLgorICAgICAqIFN1YmNsYXNzZXMgbmVlZCB0aGlzIGFzc2lnbm1lbnQgb3BlcmF0
b3IgaWYgdGhleSB1c2UgY29tcGlsZXItcHJvdmlkZWQKKyAgICAgKiBhc3NpZ25tZW50IG9wZXJh
dG9ycyBvZiB0aGVpciBvd24uIEFuIGFsdGVybmF0aXZlIHRvIG5vdCBkZWNsYXJpbmcgb25lCisg
ICAgICogaGVyZSB3b3VsZCBiZSB0byBkZWNsYXJlIGFuZCBlbXB0eS1pbXBsZW1lbnQgYSBwcm90
ZWN0ZWQgb3IgcHVibGljIG9uZS4KKyAgICBSZXBsYWNlYWJsZSAmUmVwbGFjZWFibGU6Om9wZXJh
dG9yPShjb25zdCBSZXBsYWNlYWJsZSAmKTsKKyAgICAgKi8KKworICAgIC8qKgorICAgICAqIFZp
cnR1YWwgdmVyc2lvbiBvZiBsZW5ndGgoKS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAg
Ki8gCisgICAgdmlydHVhbCBpbnQzMl90IGdldExlbmd0aCgpIGNvbnN0ID0gMDsKKworICAgIC8q
KgorICAgICAqIFZpcnR1YWwgdmVyc2lvbiBvZiBjaGFyQXQoKS4KKyAgICAgKiBAc3RhYmxlIElD
VSAyLjQKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVDaGFyIGdldENoYXJBdChpbnQzMl90IG9mZnNl
dCkgY29uc3QgPSAwOworCisgICAgLyoqCisgICAgICogVmlydHVhbCB2ZXJzaW9uIG9mIGNoYXIz
MkF0KCkuCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgdmlydHVhbCBVQ2hh
cjMyIGdldENoYXIzMkF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCA9IDA7Cit9OworCitpbmxpbmUg
aW50MzJfdAorUmVwbGFjZWFibGU6Omxlbmd0aCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0TGVu
Z3RoKCk7Cit9CisKK2lubGluZSBVQ2hhcgorUmVwbGFjZWFibGU6OmNoYXJBdChpbnQzMl90IG9m
ZnNldCkgY29uc3QgeworICAgIHJldHVybiBnZXRDaGFyQXQob2Zmc2V0KTsKK30KKworaW5saW5l
IFVDaGFyMzIKK1JlcGxhY2VhYmxlOjpjaGFyMzJBdChpbnQzMl90IG9mZnNldCkgY29uc3Qgewor
ICAgIHJldHVybiBnZXRDaGFyMzJBdChvZmZzZXQpOworfQorCisvLyBUaGVyZSBpcyBubyByZXAu
Y3BwLCBzZWUgdW5pc3RyLmNwcCBmb3IgUmVwbGFjZWFibGUgZnVuY3Rpb24gaW1wbGVtZW50YXRp
b25zLgorCitVX05BTUVTUEFDRV9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RkX3N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ljdS91bmljb2RlL3N0ZF9zdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDQzYjc0NWEwMGM1MzQ1
YWU5ODExMjZmYjI5MjM2OGVlNzJiZTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ljdS91bmljb2RlL3N0ZF9zdHJpbmcuaApAQCAtMCwwICsxLDc4IEBACisvKgor
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwLCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVy
cy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAg
ZmlsZSBuYW1lOiAgc3RkX3N0cmluZy5oCisqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICB0
YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0CisqCisqICAgY3JlYXRl
ZCBvbjogMjAwOWZlYjE5CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNjaGVyZXIKKyovCisK
KyNpZm5kZWYgX19TVERfU1RSSU5HX0hfXworI2RlZmluZSBfX1NURF9TVFJJTkdfSF9fCisKKy8q
KgorICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogQ2VudHJhbCBJQ1UgaGVhZGVyIGZvciBp
bmNsdWRpbmcgdGhlIEMrKyBzdGFuZGFyZCAmbHQ7c3RyaW5nJmd0OworICogICAgICAgICAgICAg
ICAgIGhlYWRlciBhbmQgZm9yIHJlbGF0ZWQgZGVmaW5pdGlvbnMuCisgKi8KKworI2luY2x1ZGUg
InVuaWNvZGUvdXR5cGVzLmgiCisKKy8qKgorICogXGRlZiBVX0hBVkVfU1REX1NUUklORworICog
RGVmaW5lIHdoZXRoZXIgdGhlIHN0YW5kYXJkIEMrKyAoU1RMKSAmbHQ7c3RyaW5nJmd0OyBoZWFk
ZXIgaXMgYXZhaWxhYmxlLgorICogQGludGVybmFsCisgKi8KKyNpZm5kZWYgVV9IQVZFX1NURF9T
VFJJTkcKKyNkZWZpbmUgVV9IQVZFX1NURF9TVFJJTkcgMQorI2VuZGlmCisKKyNpZiBVX0hBVkVf
U1REX1NUUklORworCisjaW5jbHVkZSA8c3RyaW5nPgorCisvKioKKyAqIFxkZWYgVV9TVERfTlMK
KyAqIERlZmluZSB0aGUgbmFtZXNwYWNlIHRvIHVzZSBmb3Igc3RhbmRhcmQgQysrIChTVEwpIGNs
YXNzZXMuCisgKiBFaXRoZXIgc3RkIG9yIGVtcHR5LgorICogQGRyYWZ0IElDVSA0LjIKKyAqLwor
CisvKioKKyAqIFxkZWYgVV9TVERfTlNRCisgKiBEZWZpbmUgdGhlIG5hbWVzcGFjZSBxdWFsaWZp
ZXIgdG8gdXNlIGZvciBzdGFuZGFyZCBDKysgKFNUTCkgY2xhc3Nlcy4KKyAqIEVpdGhlciBzdGQ6
OiBvciBlbXB0eS4KKyAqIEZvciBleGFtcGxlLAorICogICBVX1NURF9OU1Egc3RyaW5nIFN0cmlu
Z0Zyb21Vbmljb2RlU3RyaW5nKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnVuaXN0cik7CisgKiBAZHJh
ZnQgSUNVIDQuMgorICovCisKKy8qKgorICogXGRlZiBVX1NURF9OU19VU0UKKyAqIFRoaXMgaXMg
dXNlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgdXNlcyB0aGUKKyAqIHN0
YW5kYXJkIChTVEwpIG5hbWVzcGFjZS4KKyAqIEVpdGhlciAidXNpbmcgbmFtZXNwYWNlIHN0ZDsi
IG9yIGVtcHR5LgorICogQGRyYWZ0IElDVSA0LjIKKyAqLworI2lmbmRlZiBVX1NURF9OU1EKKyMg
ICBpZiBVX0hBVkVfTkFNRVNQQUNFCisjICAgICAgIGRlZmluZSBVX1NURF9OUyBzdGQKKyMgICAg
ICAgZGVmaW5lIFVfU1REX05TUSBVX1NURF9OUzo6CisjICAgICAgIGRlZmluZSBVX1NURF9OU19V
U0UgdXNpbmcgbmFtZXNwYWNlIFVfU1REX05TOworIyAgIGVsc2UKKyMgICAgICAgZGVmaW5lIFVf
U1REX05TCisjICAgICAgIGRlZmluZSBVX1NURF9OU1EKKyMgICAgICAgZGVmaW5lIFVfU1REX05T
X1VTRQorIyAgIGVuZGlmCisjZW5kaWYKKworI2VuZGlmICAvLyBVX0hBVkVfU1REX1NUUklORwor
CisjZW5kaWYgIC8vIF9fU1REX1NUUklOR19IX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pY3UvdW5pY29kZS9zdHJlbnVtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1
L3VuaWNvZGUvc3RyZW51bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNDIxOTVhNGYyY2IyMmMyZDM0NGNiOWY3
YmRmODY3YTU3MDQzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aWN1L3VuaWNvZGUvc3RyZW51bS5oCkBAIC0wLDAgKzEsMjcxIEBACisvKgorKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMjAwMi0yMDA3LCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmIFNU
UkVOVU1fSAorI2RlZmluZSBTVFJFTlVNX0gKKworI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5o
IgorI2luY2x1ZGUgInVuaWNvZGUvdW5pc3RyLmgiCisKKy8qKgorICogXGZpbGUgCisgKiBcYnJp
ZWYgQysrIEFQSTogU3RyaW5nIEVudW1lcmF0aW9uCisgKi8KKyAKK1VfTkFNRVNQQUNFX0JFR0lO
CisKKy8qKgorICogQmFzZSBjbGFzcyBmb3IgJ3B1cmUnIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Yg
dWVudW0gYXBpLiAgQWRkcyBhCisgKiBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBuZXh0IFVuaWNv
ZGVTdHJpbmcgc2luY2UgaW4gQysrIHRoaXMgY2FuCisgKiBiZSBhIGNvbW1vbiBzdG9yYWdlIGZv
cm1hdCBmb3Igc3RyaW5ncy4KKyAqCisgKiA8cD5UaGUgbW9kZWwgaXMgdGhhdCB0aGUgZW51bWVy
YXRpb24gaXMgb3ZlciBzdHJpbmdzIG1haW50YWluZWQgYnkKKyAqIGEgJ3NlcnZpY2UuJyAgQXQg
YW55IHBvaW50LCB0aGUgc2VydmljZSBtaWdodCBjaGFuZ2UsIGludmFsaWRhdGluZworICogdGhl
IGVudW1lcmF0b3IgKHRob3VnaCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHJhcmUpLiAgVGhlIGl0
ZXJhdG9yCisgKiByZXR1cm5zIGFuIGVycm9yIGlmIHRoaXMgaGFzIG9jY3VycmVkLiAgTGFjayBv
ZiB0aGUgZXJyb3IgaXMgbm8KKyAqIGd1YXJhbnRlZSB0aGF0IHRoZSBzZXJ2aWNlIGRpZG4ndCBj
aGFuZ2UgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlCisgKiBjYWxsLCBzbyB0aGUgcmV0dXJuZWQgc3Ry
aW5nIHN0aWxsIG1pZ2h0IG5vdCBiZSAndmFsaWQnIG9uCisgKiBzdWJzZXF1ZW50IHVzZS48L3A+
CisgKgorICogPHA+U3RyaW5ncyBtYXkgdGFrZSB0aGUgZm9ybSBvZiBjb25zdCBjaGFyKiwgY29u
c3QgVUNoYXIqLCBvciBjb25zdAorICogVW5pY29kZVN0cmluZyouICBUaGUgdHlwZSB5b3UgZ2V0
IGlzIGRldGVybWluZSBieSB0aGUgdmFyaWFudCBvZgorICogJ25leHQnIHRoYXQgeW91IGNhbGwu
ICBJbiBnZW5lcmFsIHRoZSBTdHJpbmdFbnVtZXJhdGlvbiBpcworICogb3B0aW1pemVkIGZvciBv
bmUgb2YgdGhlc2UgdHlwZXMsIGJ1dCBhbGwgU3RyaW5nRW51bWVyYXRpb25zIGNhbgorICogcmV0
dXJuIGFsbCB0eXBlcy4gIFJldHVybmVkIHN0cmluZ3MgYXJlIGVhY2ggdGVybWluYXRlZCB3aXRo
IGEgTlVMLgorICogRGVwZW5kaW5nIG9uIHRoZSBzZXJ2aWNlIGRhdGEsIHRoZXkgbWlnaHQgYWxz
byBpbmNsdWRlIGVtYmVkZGVkIE5VTAorICogY2hhcmFjdGVycywgc28gQVBJIGlzIHByb3ZpZGVk
IHRvIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSB0cnVlCisgKiBsZW5ndGgsIGNvdW50aW5nIHRoZSBl
bWJlZGRlZCBOVUxzIGJ1dCBub3QgY291bnRpbmcgdGhlIHRlcm1pbmF0aW5nCisgKiBOVUwuPC9w
PgorICoKKyAqIDxwPlRoZSBwb2ludGVycyByZXR1cm5lZCBieSBuZXh0LCB1bmV4dCwgYW5kIHNu
ZXh0IGJlY29tZSBpbnZhbGlkCisgKiB1cG9uIGFueSBzdWJzZXF1ZW50IGNhbGwgdG8gdGhlIGVu
dW1lcmF0aW9uJ3MgZGVzdHJ1Y3RvciwgbmV4dCwKKyAqIHVuZXh0LCBzbmV4dCwgb3IgcmVzZXQu
PC9wPgorICoKKyAqIElDVSAyLjggYWRkcyBzb21lIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGFu
ZCBoZWxwZXIgZnVuY3Rpb25zCisgKiBmb3Igc3ViY2xhc3Nlcy4KKyAqCisgKiBAc3RhYmxlIElD
VSAyLjQgCisgKi8KK2NsYXNzIFVfQ09NTU9OX0FQSSBTdHJpbmdFbnVtZXJhdGlvbiA6IHB1Ymxp
YyBVT2JqZWN0IHsgCitwdWJsaWM6CisgICAgLyoqCisgICAgICogRGVzdHJ1Y3Rvci4KKyAgICAg
KiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICB2aXJ0dWFsIH5TdHJpbmdFbnVtZXJhdGlv
bigpOworCisgICAgLyoqCisgICAgICogQ2xvbmUgdGhpcyBvYmplY3QsIGFuIGluc3RhbmNlIG9m
IGEgc3ViY2xhc3Mgb2YgU3RyaW5nRW51bWVyYXRpb24uCisgICAgICogQ2xvbmVzIGNhbiBiZSB1
c2VkIGNvbmN1cnJlbnRseSBpbiBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAqIElmIGEgc3ViY2xh
c3MgZG9lcyBub3QgaW1wbGVtZW50IGNsb25lKCksIG9yIGlmIGFuIGVycm9yIG9jY3VycywKKyAg
ICAgKiB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuCisgICAgICogVGhlIGNsb25lIGZ1bmN0aW9ucyBp
biBhbGwgc3ViY2xhc3NlcyByZXR1cm4gYSBiYXNlIGNsYXNzIHBvaW50ZXIKKyAgICAgKiBiZWNh
dXNlIHNvbWUgY29tcGlsZXJzIGRvIG5vdCBzdXBwb3J0IGNvdmFyaWFudCAoc2FtZS1hcy10aGlz
KQorICAgICAqIHJldHVybiB0eXBlczsgY2FzdCB0byB0aGUgYXBwcm9wcmlhdGUgc3ViY2xhc3Mg
aWYgbmVjZXNzYXJ5LgorICAgICAqIFRoZSBjYWxsZXIgbXVzdCBkZWxldGUgdGhlIGNsb25lLgor
ICAgICAqCisgICAgICogQHJldHVybiBhIGNsb25lIG9mIHRoaXMgb2JqZWN0CisgICAgICoKKyAg
ICAgKiBAc2VlIGdldER5bmFtaWNDbGFzc0lECisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAg
ICovCisgICAgdmlydHVhbCBTdHJpbmdFbnVtZXJhdGlvbiAqY2xvbmUoKSBjb25zdDsKKworICAg
IC8qKgorICAgICAqIDxwPlJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgdGhlIGl0
ZXJhdG9yIHRyYXZlcnNlcy4gIElmCisgICAgICogdGhlIGl0ZXJhdG9yIGlzIG91dCBvZiBzeW5j
IHdpdGggaXRzIHNlcnZpY2UsIHN0YXR1cyBpcyBzZXQgdG8KKyAgICAgKiBVX0VOVU1fT1VUX09G
X1NZTkNfRVJST1IsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHplcm8uPC9wPgorICAgICAqCisg
ICAgICogPHA+VGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBjaGFuZ2UgZXhjZXB0IHBvc3NpYmx5
IGFzIGEgcmVzdWx0IG9mCisgICAgICogYSBzdWJzZXF1ZW50IGNhbGwgdG8gcmVzZXQsIG9yIGlm
IHRoZSBpdGVyYXRvciBiZWNvbWVzIG91dCBvZiBzeW5jLjwvcD4KKyAgICAgKgorICAgICAqIDxw
PlRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbi4gSXQgY2FuIGVuZCB1cCBiZWluZyB2ZXJ5
CisgICAgICogZXhwZW5zaXZlIGFzIGFsbCB0aGUgaXRlbXMgbWlnaHQgaGF2ZSB0byBiZSBwcmUt
ZmV0Y2hlZAorICAgICAqIChkZXBlbmRpbmcgb24gdGhlIHN0b3JhZ2UgZm9ybWF0IG9mIHRoZSBk
YXRhIGJlaW5nCisgICAgICogdHJhdmVyc2VkKS48L3A+CisgICAgICoKKyAgICAgKiBAcGFyYW0g
c3RhdHVzIHRoZSBlcnJvciBjb2RlLgorICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGVsZW1lbnRz
IGluIHRoZSBpdGVyYXRvci4KKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDIuNCAqLworICAg
IHZpcnR1YWwgaW50MzJfdCBjb3VudChVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0ID0gMDsKKwor
ICAgIC8qKgorICAgICAqIDxwPlJldHVybnMgdGhlIG5leHQgZWxlbWVudCBhcyBhIE5VTC10ZXJt
aW5hdGVkIGNoYXIqLiAgSWYgdGhlcmUKKyAgICAgKiBhcmUgbm8gbW9yZSBlbGVtZW50cywgcmV0
dXJucyBOVUxMLiAgSWYgdGhlIHJlc3VsdExlbmd0aCBwb2ludGVyCisgICAgICogaXMgbm90IE5V
TEwsIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAobm90IGNvdW50aW5nIHRoZQorICAgICAqIHRl
cm1pbmF0aW5nIE5VTCkgaXMgcmV0dXJuZWQgYXQgdGhhdCBhZGRyZXNzLiAgSWYgYW4gZXJyb3IK
KyAgICAgKiBzdGF0dXMgaXMgcmV0dXJuZWQsIHRoZSB2YWx1ZSBhdCByZXN1bHRMZW5ndGggaXMg
dW5kZWZpbmVkLjwvcD4KKyAgICAgKgorICAgICAqIDxwPlRoZSByZXR1cm5lZCBwb2ludGVyIGlz
IG93bmVkIGJ5IHRoaXMgaXRlcmF0b3IgYW5kIG11c3Qgbm90IGJlCisgICAgICogZGVsZXRlZCBi
eSB0aGUgY2FsbGVyLiAgVGhlIHBvaW50ZXIgaXMgdmFsaWQgdW50aWwgdGhlIG5leHQgY2FsbAor
ICAgICAqIHRvIG5leHQsIHVuZXh0LCBzbmV4dCwgcmVzZXQsIG9yIHRoZSBlbnVtZXJhdG9yJ3Mg
ZGVzdHJ1Y3Rvci48L3A+CisgICAgICoKKyAgICAgKiA8cD5JZiB0aGUgaXRlcmF0b3IgaXMgb3V0
IG9mIHN5bmMgd2l0aCBpdHMgc2VydmljZSwgc3RhdHVzIGlzIHNldAorICAgICAqIHRvIFVfRU5V
TV9PVVRfT0ZfU1lOQ19FUlJPUiBhbmQgTlVMTCBpcyByZXR1cm5lZC48L3A+CisgICAgICoKKyAg
ICAgKiA8cD5JZiB0aGUgbmF0aXZlIHNlcnZpY2Ugc3RyaW5nIGlzIGEgVUNoYXIqIHN0cmluZywg
aXQgaXMKKyAgICAgKiBjb252ZXJ0ZWQgdG8gY2hhciogd2l0aCB0aGUgaW52YXJpYW50IGNvbnZl
cnRlci4gIElmIHRoZQorICAgICAqIGNvbnZlcnNpb24gZmFpbHMgKGJlY2F1c2UgYSBjaGFyYWN0
ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCkgdGhlbgorICAgICAqIHN0YXR1cyBpcyBzZXQgdG8gVV9J
TlZBUklBTlRfQ09OVkVSU0lPTl9FUlJPUiBhbmQgdGhlIHJldHVybgorICAgICAqIHZhbHVlIGlz
IHVuZGVmaW5lZCAodGhvdWdoIG5vdCBOVUxMKS48L3A+CisgICAgICoKKyAgICAgKiBTdGFydGlu
ZyB3aXRoIElDVSAyLjgsIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHNuZXh0KCkK
KyAgICAgKiBhbmQgaGFuZGxlcyB0aGUgY29udmVyc2lvbi4KKyAgICAgKgorICAgICAqIEBwYXJh
bSBzdGF0dXMgdGhlIGVycm9yIGNvZGUuCisgICAgICogQHBhcmFtIHJlc3VsdExlbmd0aCBhIHBv
aW50ZXIgdG8gcmVjZWl2ZSB0aGUgbGVuZ3RoLCBjYW4gYmUgTlVMTC4KKyAgICAgKiBAcmV0dXJu
IGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLCBvciBOVUxMLgorICAgICAqCisgICAgICogQHN0YWJs
ZSBJQ1UgMi40IAorICAgICAqLworICAgIHZpcnR1YWwgY29uc3QgY2hhciogbmV4dChpbnQzMl90
ICpyZXN1bHRMZW5ndGgsIFVFcnJvckNvZGUmIHN0YXR1cyk7CisKKyAgICAvKioKKyAgICAgKiA8
cD5SZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgYXMgYSBOVUwtdGVybWluYXRlZCBVQ2hhciouICBJ
ZiB0aGVyZQorICAgICAqIGFyZSBubyBtb3JlIGVsZW1lbnRzLCByZXR1cm5zIE5VTEwuICBJZiB0
aGUgcmVzdWx0TGVuZ3RoIHBvaW50ZXIKKyAgICAgKiBpcyBub3QgTlVMTCwgdGhlIGxlbmd0aCBv
ZiB0aGUgc3RyaW5nIChub3QgY291bnRpbmcgdGhlCisgICAgICogdGVybWluYXRpbmcgTlVMKSBp
cyByZXR1cm5lZCBhdCB0aGF0IGFkZHJlc3MuICBJZiBhbiBlcnJvcgorICAgICAqIHN0YXR1cyBp
cyByZXR1cm5lZCwgdGhlIHZhbHVlIGF0IHJlc3VsdExlbmd0aCBpcyB1bmRlZmluZWQuPC9wPgor
ICAgICAqCisgICAgICogPHA+VGhlIHJldHVybmVkIHBvaW50ZXIgaXMgb3duZWQgYnkgdGhpcyBp
dGVyYXRvciBhbmQgbXVzdCBub3QgYmUKKyAgICAgKiBkZWxldGVkIGJ5IHRoZSBjYWxsZXIuICBU
aGUgcG9pbnRlciBpcyB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxsCisgICAgICogdG8gbmV4dCwg
dW5leHQsIHNuZXh0LCByZXNldCwgb3IgdGhlIGVudW1lcmF0b3IncyBkZXN0cnVjdG9yLjwvcD4K
KyAgICAgKgorICAgICAqIDxwPklmIHRoZSBpdGVyYXRvciBpcyBvdXQgb2Ygc3luYyB3aXRoIGl0
cyBzZXJ2aWNlLCBzdGF0dXMgaXMgc2V0CisgICAgICogdG8gVV9FTlVNX09VVF9PRl9TWU5DX0VS
Uk9SIGFuZCBOVUxMIGlzIHJldHVybmVkLjwvcD4KKyAgICAgKgorICAgICAqIFN0YXJ0aW5nIHdp
dGggSUNVIDIuOCwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgc25leHQoKQorICAg
ICAqIGFuZCBoYW5kbGVzIHRoZSBjb252ZXJzaW9uLgorICAgICAqCisgICAgICogQHBhcmFtIHN0
YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKiBAcGFyYW0gcmVzdWx0TGVuZ3RoIGEgcG9udGVy
IHRvIHJlY2VpdmUgdGhlIGxlbmd0aCwgY2FuIGJlIE5VTEwuCisgICAgICogQHJldHVybiBhIHBv
aW50ZXIgdG8gdGhlIHN0cmluZywgb3IgTlVMTC4KKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNV
IDIuNCAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIGNvbnN0IFVDaGFyKiB1bmV4dChpbnQzMl90ICpy
ZXN1bHRMZW5ndGgsIFVFcnJvckNvZGUmIHN0YXR1cyk7CisKKyAgICAvKioKKyAgICAgKiA8cD5S
ZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgYSBVbmljb2RlU3RyaW5nKi4gIElmIHRoZXJlIGFyZSBu
bworICAgICAqIG1vcmUgZWxlbWVudHMsIHJldHVybnMgTlVMTC48L3A+CisgICAgICoKKyAgICAg
KiA8cD5UaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBvd25lZCBieSB0aGlzIGl0ZXJhdG9yIGFuZCBt
dXN0IG5vdCBiZQorICAgICAqIGRlbGV0ZWQgYnkgdGhlIGNhbGxlci4gIFRoZSBwb2ludGVyIGlz
IHZhbGlkIHVudGlsIHRoZSBuZXh0IGNhbGwKKyAgICAgKiB0byBuZXh0LCB1bmV4dCwgc25leHQs
IHJlc2V0LCBvciB0aGUgZW51bWVyYXRvcidzIGRlc3RydWN0b3IuPC9wPgorICAgICAqCisgICAg
ICogPHA+SWYgdGhlIGl0ZXJhdG9yIGlzIG91dCBvZiBzeW5jIHdpdGggaXRzIHNlcnZpY2UsIHN0
YXR1cyBpcyBzZXQKKyAgICAgKiB0byBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IgYW5kIE5VTEwg
aXMgcmV0dXJuZWQuPC9wPgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXR1cyB0aGUgZXJyb3Ig
Y29kZS4KKyAgICAgKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLCBvciBOVUxMLgor
ICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi40IAorICAgICAqLworICAgIHZpcnR1YWwgY29u
c3QgVW5pY29kZVN0cmluZyogc25leHQoVUVycm9yQ29kZSYgc3RhdHVzKSA9IDA7CisKKyAgICAv
KioKKyAgICAgKiA8cD5SZXNldHMgdGhlIGl0ZXJhdG9yLiAgVGhpcyByZS1lc3RhYmxpc2hlcyBz
eW5jIHdpdGggdGhlCisgICAgICogc2VydmljZSBhbmQgcmV3aW5kcyB0aGUgaXRlcmF0b3IgdG8g
c3RhcnQgYXQgdGhlIGZpcnN0CisgICAgICogZWxlbWVudC48L3A+CisgICAgICoKKyAgICAgKiA8
cD5QcmV2aW91cyBwb2ludGVycyByZXR1cm5lZCBieSBuZXh0LCB1bmV4dCwgb3Igc25leHQgYmVj
b21lCisgICAgICogaW52YWxpZCwgYW5kIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBjb3VudCBtaWdo
dCBjaGFuZ2UuPC9wPgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXR1cyB0aGUgZXJyb3IgY29k
ZS4KKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDIuNCAKKyAgICAgKi8KKyAgICB2aXJ0dWFs
IHZvaWQgcmVzZXQoVUVycm9yQ29kZSYgc3RhdHVzKSA9IDA7CisKKyAgICAvKioKKyAgICAgKiBD
b21wYXJlcyB0aGlzIGVudW1lcmF0aW9uIHRvIG90aGVyIHRvIGNoZWNrIGlmIGJvdGggYXJlIGVx
dWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3RoZXIgc3RyaW5nIGVudW1lcmF0
aW9uIHRvIGNvbXBhcmUgdGhpcyBvYmplY3QgdG8KKyAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhl
IGVudW1lcmF0aW9ucyBhcmUgZXF1YWwuIEZBTFNFIGlmIG5vdC4KKyAgICAgKiBAc3RhYmxlIElD
VSAzLjYgCisgICAgICovCisgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmlu
Z0VudW1lcmF0aW9uJiB0aGF0KWNvbnN0OworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoaXMg
ZW51bWVyYXRpb24gdG8gb3RoZXIgdG8gY2hlY2sgaWYgYm90aCBhcmUgbm90IGVxdWFsCisgICAg
ICoKKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3RoZXIgc3RyaW5nIGVudW1lcmF0aW9uIHRvIGNv
bXBhcmUgdGhpcyBvYmplY3QgdG8KKyAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGVudW1lcmF0
aW9ucyBhcmUgZXF1YWwuIEZBTFNFIGlmIG5vdC4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjYgCisg
ICAgICovCisgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZ0VudW1lcmF0
aW9uJiB0aGF0KWNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgLyoqCisgICAgICogVW5pY29kZVN0
cmluZyBmaWVsZCBmb3IgdXNlIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgYW5kIHN1YmNs
YXNzZXMuCisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICovCisgICAgVW5pY29kZVN0cmlu
ZyB1bmlzdHI7CisgICAgLyoqCisgICAgICogY2hhciAqIGRlZmF1bHQgYnVmZmVyIGZvciB1c2Ug
d2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgKiBAc3Rh
YmxlIElDVSAyLjgKKyAgICAgKi8KKyAgICBjaGFyIGNoYXJzQnVmZmVyWzMyXTsKKyAgICAvKioK
KyAgICAgKiBjaGFyICogYnVmZmVyIGZvciB1c2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9u
cyBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgKiBBbGxvY2F0ZWQgaW4gY29uc3RydWN0b3IgYW5kIGlu
IGVuc3VyZUNoYXJzQ2FwYWNpdHkoKS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8K
KyAgICBjaGFyICpjaGFyczsKKyAgICAvKioKKyAgICAgKiBDYXBhY2l0eSBvZiBjaGFycywgZm9y
IHVzZSB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGFuZCBzdWJjbGFzc2VzLgorICAgICAq
IEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIGludDMyX3QgY2hhcnNDYXBhY2l0eTsKKwor
ICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IgZm9yIHVzZSB3aXRoIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zIGFuZCBzdWJjbGFzc2VzLgorICAgICAqIEBzdGFibGUgSUNVIDIuOAor
ICAgICAqLworICAgIFN0cmluZ0VudW1lcmF0aW9uKCk7CisKKyAgICAvKioKKyAgICAgKiBFbnN1
cmVzIHRoYXQgY2hhcnMgaXMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgdGhlIHJlcXVlc3RlZCBjYXBh
Y2l0eS4KKyAgICAgKiBGb3IgdXNlIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgYW5kIHN1
YmNsYXNzZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2FwYWNpdHkgUmVxdWVzdGVkIGNhcGFj
aXR5LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGluL291dCBlcnJvciBjb2RlLgorICAgICAq
IEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIHZvaWQgZW5zdXJlQ2hhcnNDYXBhY2l0eShp
bnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICZzdGF0dXMpOworCisgICAgLyoqCisgICAgICog
Q29udmVydHMgcyB0byBVbmljb2RlIGFuZCBzZXRzIHVuaXN0ciB0byB0aGUgcmVzdWx0LgorICAg
ICAqIEZvciB1c2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBhbmQgc3ViY2xhc3NlcywK
KyAgICAgKiBlc3BlY2lhbGx5IGZvciBpbXBsZW1lbnRhdGlvbnMgb2Ygc25leHQoKSBpbiB0ZXJt
cyBvZiBuZXh0KCkuCisgICAgICogVGhpcyBpcyBwcm92aWRlZCB3aXRoIGEgaGVscGVyIGZ1bmN0
aW9uIGluc3RlYWQgb2YgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisgICAgICogb2Ygc25leHQo
KSB0byBhdm9pZCBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcHMgYmV0d2VlbiBuZXh0KCkgYW5kIHNu
ZXh0KCkuCisgICAgICoKKyAgICAgKiBGb3IgZXhhbXBsZToKKyAgICAgKiBcY29kZQorICAgICAq
IGNvbnN0IFVuaWNvZGVTdHJpbmcqIHNuZXh0KFVFcnJvckNvZGUmIHN0YXR1cykgeworICAgICAq
ICAgaW50MzJfdCByZXN1bHRMZW5ndGg9MDsKKyAgICAgKiAgIGNvbnN0IGNoYXIgKnM9bmV4dCgm
cmVzdWx0TGVuZ3RoLCBzdGF0dXMpOworICAgICAqICAgcmV0dXJuIHNldENoYXJzKHMsIHJlc3Vs
dExlbmd0aCwgc3RhdHVzKTsKKyAgICAgKiB9CisgICAgICogXGVuZGNvZGUKKyAgICAgKgorICAg
ICAqIEBwYXJhbSBzIFN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8gVW5pY29kZS4KKyAgICAgKiBA
cGFyYW0gbGVuZ3RoIExlbmd0aCBvZiB0aGUgc3RyaW5nLgorICAgICAqIEBwYXJhbSBzdGF0dXMg
SUNVIGluL291dCBlcnJvciBjb2RlLgorICAgICAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHVuaXN0
ci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8KKyAgICBVbmljb2RlU3RyaW5nICpz
ZXRDaGFycyhjb25zdCBjaGFyICpzLCBpbnQzMl90IGxlbmd0aCwgVUVycm9yQ29kZSAmc3RhdHVz
KTsKK307CisKK1VfTkFNRVNQQUNFX0VORAorCisvKiBTVFJFTlVNX0ggKi8KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3N0cmluZ3BpZWNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RyaW5ncGllY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43OWQ1YTA1MGVjNzQ3NWU5YmRkZmNjNWEwYTk1MmM5NmYyM2UyOGJjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3N0cmluZ3BpZWNlLmgK
QEAgLTAsMCArMSwyMjQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMCwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcworLy8gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKy8vCisvLyBDb3B5cmlnaHQgMjAwMSBhbmQgb253YXJkcyBHb29nbGUgSW5jLgor
Ly8gQXV0aG9yOiBTYW5qYXkgR2hlbWF3YXQKKworLy8gVGhpcyBjb2RlIGlzIGEgY29udHJpYnV0
aW9uIG9mIEdvb2dsZSBjb2RlLCBhbmQgdGhlIHN0eWxlIHVzZWQgaGVyZSBpcworLy8gYSBjb21w
cm9taXNlIGJldHdlZW4gdGhlIG9yaWdpbmFsIEdvb2dsZSBjb2RlIGFuZCB0aGUgSUNVIGNvZGlu
ZyBndWlkZWxpbmVzLgorLy8gRm9yIGV4YW1wbGUsIGRhdGEgdHlwZXMgYXJlIElDVS1pZmllZCAo
c2l6ZV90LGludC0+aW50MzJfdCksCisvLyBhbmQgQVBJIGNvbW1lbnRzIGRveHlnZW4taWZpZWQs
IGJ1dCBmdW5jdGlvbiBuYW1lcyBhbmQgYmVoYXZpb3IgYXJlCisvLyBhcyBpbiB0aGUgb3JpZ2lu
YWwsIGlmIHBvc3NpYmxlLgorLy8gQXNzZXJ0aW9uLXN0eWxlIGVycm9yIGhhbmRsaW5nLCBub3Qg
YXZhaWxhYmxlIGluIElDVSwgd2FzIGNoYW5nZWQgdG8KKy8vIHBhcmFtZXRlciAicGlubmluZyIg
c2ltaWxhciB0byBVbmljb2RlU3RyaW5nLgorLy8KKy8vIEluIGFkZGl0aW9uLCB0aGlzIGlzIG9u
bHkgYSBwYXJ0aWFsIHBvcnQgb2YgdGhlIG9yaWdpbmFsIEdvb2dsZSBjb2RlLAorLy8gbGltaXRl
ZCB0byB3aGF0IHdhcyBuZWVkZWQgc28gZmFyLiBUaGUgKG5lYXJseSkgY29tcGxldGUgb3JpZ2lu
YWwgY29kZQorLy8gaXMgaW4gdGhlIElDVSBzdm4gcmVwb3NpdG9yeSBhdCBpY3VodG1sL3RydW5r
L2Rlc2lnbi9zdHJpbmdzL2NvbnRyaWIKKy8vIChzZWUgSUNVIHRpY2tldCA2NzY1LCByMjU1MTcp
LgorCisjaWZuZGVmIF9fU1RSSU5HUElFQ0VfSF9fCisjZGVmaW5lIF9fU1RSSU5HUElFQ0VfSF9f
CisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogU3RyaW5nUGllY2U6IFJlYWQt
b25seSBieXRlIHN0cmluZyB3cmFwcGVyIGNsYXNzLgorICovCisKKyNpbmNsdWRlICJ1bmljb2Rl
L3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5oIgorI2luY2x1ZGUgInVuaWNv
ZGUvc3RkX3N0cmluZy5oIgorCisvLyBBcmdoaCEgIEkgd2lzaCBDKysgbGl0ZXJhbHMgd2VyZSAi
c3RyaW5nIi4KKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBBIHN0cmluZy1saWtlIG9i
amVjdCB0aGF0IHBvaW50cyB0byBhIHNpemVkIHBpZWNlIG9mIG1lbW9yeS4KKyAqCisgKiBXZSBw
cm92aWRlIG5vbi1leHBsaWNpdCBzaW5nbGV0b24gY29uc3RydWN0b3JzIHNvIHVzZXJzIGNhbiBw
YXNzCisgKiBpbiBhICJjb25zdCBjaGFyKiIgb3IgYSAic3RyaW5nIiB3aGVyZXZlciBhICJTdHJp
bmdQaWVjZSIgaXMKKyAqIGV4cGVjdGVkLgorICoKKyAqIEZ1bmN0aW9ucyBvciBtZXRob2RzIG1h
eSB1c2UgY29uc3QgU3RyaW5nUGllY2UmIHBhcmFtZXRlcnMgdG8gYWNjZXB0IGVpdGhlcgorICog
YSAiY29uc3QgY2hhcioiIG9yIGEgInN0cmluZyIgdmFsdWUgdGhhdCB3aWxsIGJlIGltcGxpY2l0
bHkgY29udmVydGVkIHRvCisgKiBhIFN0cmluZ1BpZWNlLgorICoKKyAqIFN5c3RlbWF0aWMgdXNh
Z2Ugb2YgU3RyaW5nUGllY2UgaXMgZW5jb3VyYWdlZCBhcyBpdCB3aWxsIHJlZHVjZSB1bm5lY2Vz
c2FyeQorICogY29udmVyc2lvbnMgZnJvbSAiY29uc3QgY2hhcioiIHRvICJzdHJpbmciIGFuZCBi
YWNrIGFnYWluLgorICoKKyAqIEBzdGFibGUgSUNVIDQuMgorICovCitjbGFzcyBVX0NPTU1PTl9B
UEkgU3RyaW5nUGllY2UgOiBwdWJsaWMgVU1lbW9yeSB7CisgcHJpdmF0ZToKKyAgY29uc3QgY2hh
ciogICBwdHJfOworICBpbnQzMl90ICAgICAgIGxlbmd0aF87CisKKyBwdWJsaWM6CisgIC8qKgor
ICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLCBjcmVhdGVzIGFuIGVtcHR5IFN0cmluZ1BpZWNlLgor
ICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlKCkgOiBwdHJfKE5VTEwp
LCBsZW5ndGhfKDApIHsgfQorICAvKioKKyAgICogQ29uc3RydWN0cyBmcm9tIGEgTlVMLXRlcm1p
bmF0ZWQgY29uc3QgY2hhciAqIHBvaW50ZXIuCisgICAqIEBwYXJhbSBzdHIgYSBOVUwtdGVybWlu
YXRlZCBjb25zdCBjaGFyICogcG9pbnRlcgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisg
IFN0cmluZ1BpZWNlKGNvbnN0IGNoYXIqIHN0cik7CisjaWYgVV9IQVZFX1NURF9TVFJJTkcKKyAg
LyoqCisgICAqIENvbnN0cnVjdHMgZnJvbSBhIHN0ZDo6c3RyaW5nLgorICAgKiBAc3RhYmxlIElD
VSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IFVfU1REX05TUSBzdHJpbmcmIHN0cikK
KyAgICA6IHB0cl8oc3RyLmRhdGEoKSksIGxlbmd0aF8oc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3Ry
LnNpemUoKSkpIHsgfQorI2VuZGlmCisgIC8qKgorICAgKiBDb25zdHJ1Y3RzIGZyb20gYSBjb25z
dCBjaGFyICogcG9pbnRlciBhbmQgYSBzcGVjaWZpZWQgbGVuZ3RoLgorICAgKiBAcGFyYW0gb2Zm
c2V0IGEgY29uc3QgY2hhciAqIHBvaW50ZXIgKG5lZWQgbm90IGJlIHRlcm1pbmF0ZWQpCisgICAq
IEBwYXJhbSBsZW4gdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nOyBtdXN0IGJlIG5vbi1uZWdhdGl2
ZQorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IGNoYXIq
IG9mZnNldCwgaW50MzJfdCBsZW4pIDogcHRyXyhvZmZzZXQpLCBsZW5ndGhfKGxlbikgeyB9Cisg
IC8qKgorICAgKiBTdWJzdHJpbmcgb2YgYW5vdGhlciBTdHJpbmdQaWVjZS4KKyAgICogQHBhcmFt
IHggdGhlIG90aGVyIFN0cmluZ1BpZWNlCisgICAqIEBwYXJhbSBwb3Mgc3RhcnQgcG9zaXRpb24g
aW4geDsgbXVzdCBiZSBub24tbmVnYXRpdmUgYW5kIDw9IHgubGVuZ3RoKCkuCisgICAqIEBzdGFi
bGUgSUNVIDQuMgorICAgKi8KKyAgU3RyaW5nUGllY2UoY29uc3QgU3RyaW5nUGllY2UmIHgsIGlu
dDMyX3QgcG9zKTsKKyAgLyoqCisgICAqIFN1YnN0cmluZyBvZiBhbm90aGVyIFN0cmluZ1BpZWNl
LgorICAgKiBAcGFyYW0geCB0aGUgb3RoZXIgU3RyaW5nUGllY2UKKyAgICogQHBhcmFtIHBvcyBz
dGFydCBwb3NpdGlvbiBpbiB4OyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgPD0geC5sZW5ndGgo
KS4KKyAgICogQHBhcmFtIGxlbiBsZW5ndGggb2YgdGhlIHN1YnN0cmluZzsKKyAgICogICAgICAg
ICAgICBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgd2lsbCBiZSBwaW5uZWQgdG8gYXQgbW9zdCB4
Lmxlbmd0aCgpIC0gcG9zLgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1Bp
ZWNlKGNvbnN0IFN0cmluZ1BpZWNlJiB4LCBpbnQzMl90IHBvcywgaW50MzJfdCBsZW4pOworCisg
IC8qKgorICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcG9pbnRlci4gTWF5IGJlIE5VTEwgaWYgaXQg
aXMgZW1wdHkuCisgICAqCisgICAqIGRhdGEoKSBtYXkgcmV0dXJuIGEgcG9pbnRlciB0byBhIGJ1
ZmZlciB3aXRoIGVtYmVkZGVkIE5VTHMsIGFuZCB0aGUKKyAgICogcmV0dXJuZWQgYnVmZmVyIG1h
eSBvciBtYXkgbm90IGJlIG51bGwgdGVybWluYXRlZC4gIFRoZXJlZm9yZSBpdCBpcworICAgKiB0
eXBpY2FsbHkgYSBtaXN0YWtlIHRvIHBhc3MgZGF0YSgpIHRvIGEgcm91dGluZSB0aGF0IGV4cGVj
dHMgYSBOVUwKKyAgICogdGVybWluYXRlZCBzdHJpbmcuCisgICAqIEByZXR1cm4gdGhlIHN0cmlu
ZyBwb2ludGVyCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgY29uc3QgY2hhciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIHB0cl87IH0KKyAgLyoqCisgICAqIFJldHVybnMgdGhlIHN0cmlu
ZyBsZW5ndGguIFNhbWUgYXMgbGVuZ3RoKCkuCisgICAqIEByZXR1cm4gdGhlIHN0cmluZyBsZW5n
dGgKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBpbnQzMl90IHNpemUoKSBjb25zdCB7
IHJldHVybiBsZW5ndGhfOyB9CisgIC8qKgorICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgbGVuZ3Ro
LiBTYW1lIGFzIHNpemUoKS4KKyAgICogQHJldHVybiB0aGUgc3RyaW5nIGxlbmd0aAorICAgKiBA
c3RhYmxlIElDVSA0LjIKKyAgICovCisgIGludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bGVuZ3RoXzsgfQorICAvKioKKyAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgZW1w
dHkuCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5CisgICAqIEBzdGFi
bGUgSUNVIDQuMgorICAgKi8KKyAgVUJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBsZW5ndGhf
ID09IDA7IH0KKworICAvKioKKyAgICogU2V0cyB0byBhbiBlbXB0eSBzdHJpbmcuCisgICAqIEBz
dGFibGUgSUNVIDQuMgorICAgKi8KKyAgdm9pZCBjbGVhcigpIHsgcHRyXyA9IE5VTEw7IGxlbmd0
aF8gPSAwOyB9CisKKyAgLyoqCisgICAqIFJlc2V0IHRoZSBzdHJpbmdwaWVjZSB0byByZWZlciB0
byBuZXcgZGF0YS4KKyAgICogQHBhcmFtIGRhdGEgcG9pbnRlciB0aGUgbmV3IHN0cmluZyBkYXRh
LiAgTmVlZCBub3QgYmUgbnVsIHRlcm1pbmF0ZWQuCisgICAqIEBwYXJhbSBsZW4gdGhlIGxlbmd0
aCBvZiB0aGUgbmV3IGRhdGEKKyAgICogQGludGVybmFsCisgICAqLworICB2b2lkIHNldChjb25z
dCBjaGFyKiBkYXRhLCBpbnQzMl90IGxlbikgeyBwdHJfID0gZGF0YTsgbGVuZ3RoXyA9IGxlbjsg
fQorCisgIC8qKgorICAgKiBSZXNldCB0aGUgc3RyaW5ncGllY2UgdG8gcmVmZXIgdG8gbmV3IGRh
dGEuCisgICAqIEBwYXJhbSBzdHIgYSBwb2ludGVyIHRvIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
LiAKKyAgICogQGludGVybmFsCisgICAqLworICB2b2lkIHNldChjb25zdCBjaGFyKiBzdHIpOwor
CisgIC8qKgorICAgKiBSZW1vdmVzIHRoZSBmaXJzdCBuIHN0cmluZyB1bml0cy4KKyAgICogQHBh
cmFtIG4gcHJlZml4IGxlbmd0aCwgbXVzdCBiZSBub24tbmVnYXRpdmUgYW5kIDw9bGVuZ3RoKCkK
KyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2b2lkIHJlbW92ZV9wcmVmaXgoaW50MzJf
dCBuKSB7CisgICAgaWYgKG4gPj0gMCkgeworICAgICAgaWYgKG4gPiBsZW5ndGhfKSB7CisgICAg
ICAgIG4gPSBsZW5ndGhfOworICAgICAgfQorICAgICAgcHRyXyArPSBuOworICAgICAgbGVuZ3Ro
XyAtPSBuOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBSZW1vdmVzIHRoZSBsYXN0IG4gc3Ry
aW5nIHVuaXRzLgorICAgKiBAcGFyYW0gbiBzdWZmaXggbGVuZ3RoLCBtdXN0IGJlIG5vbi1uZWdh
dGl2ZSBhbmQgPD1sZW5ndGgoKQorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIHZvaWQg
cmVtb3ZlX3N1ZmZpeChpbnQzMl90IG4pIHsKKyAgICBpZiAobiA+PSAwKSB7CisgICAgICBpZiAo
biA8PSBsZW5ndGhfKSB7CisgICAgICAgIGxlbmd0aF8gLT0gbjsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGxlbmd0aF8gPSAwOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBN
YXhpbXVtIGludGVnZXIsIHVzZWQgYXMgYSBkZWZhdWx0IHZhbHVlIGZvciBzdWJzdHJpbmcgbWV0
aG9kcy4KKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBzdGF0aWMgY29uc3QgaW50MzJf
dCBucG9zID0gMHg3ZmZmZmZmZjsKKworICAvKioKKyAgICogUmV0dXJucyBhIHN1YnN0cmluZyBv
ZiB0aGlzIFN0cmluZ1BpZWNlLgorICAgKiBAcGFyYW0gcG9zIHN0YXJ0IHBvc2l0aW9uOyBtdXN0
IGJlIG5vbi1uZWdhdGl2ZSBhbmQgPD0gbGVuZ3RoKCkuCisgICAqIEBwYXJhbSBsZW4gbGVuZ3Ro
IG9mIHRoZSBzdWJzdHJpbmc7CisgICAqICAgICAgICAgICAgbXVzdCBiZSBub24tbmVnYXRpdmUg
YW5kIHdpbGwgYmUgcGlubmVkIHRvIGF0IG1vc3QgbGVuZ3RoKCkgLSBwb3MuCisgICAqIEByZXR1
cm4gdGhlIHN1YnN0cmluZyBTdHJpbmdQaWVjZQorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICov
CisgIFN0cmluZ1BpZWNlIHN1YnN0cihpbnQzMl90IHBvcywgaW50MzJfdCBsZW4gPSBucG9zKSBj
b25zdCB7CisgICAgcmV0dXJuIFN0cmluZ1BpZWNlKCp0aGlzLCBwb3MsIGxlbik7CisgIH0KK307
CisKKy8qKgorICogR2xvYmFsIG9wZXJhdG9yID09IGZvciBTdHJpbmdQaWVjZQorICogQHBhcmFt
IHggVGhlIGZpcnN0IFN0cmluZ1BpZWNlIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0geSBUaGUgc2Vj
b25kIFN0cmluZ1BpZWNlIHRvIGNvbXBhcmUuCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIHN0cmlu
ZyBkYXRhIGlzIGVxdWFsCisgKiBAaW50ZXJuYWwKKyAqLworVV9FWFBPUlQgVUJvb2wgVV9FWFBP
UlQyIAorb3BlcmF0b3I9PShjb25zdCBTdHJpbmdQaWVjZSYgeCwgY29uc3QgU3RyaW5nUGllY2Um
IHkpOworCisvKioKKyAqIEdsb2JhbCBvcGVyYXRvciAhPSBmb3IgU3RyaW5nUGllY2UKKyAqIEBw
YXJhbSB4IFRoZSBmaXJzdCBTdHJpbmdQaWVjZSB0byBjb21wYXJlLgorICogQHBhcmFtIHkgVGhl
IHNlY29uZCBTdHJpbmdQaWVjZSB0byBjb21wYXJlLgorICogQHJldHVybiBUUlVFIGlmIHRoZSBz
dHJpbmcgZGF0YSBpcyBub3QgZXF1YWwKKyAqIEBpbnRlcm5hbAorICovCitpbmxpbmUgVUJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHJpbmdQaWVjZSYgeCwgY29uc3QgU3RyaW5nUGllY2UmIHkpIHsK
KyAgcmV0dXJuICEoeCA9PSB5KTsKK30KKworVV9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAgLy8g
X19TVFJJTkdQSUVDRV9IX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3Uv
dW5pY29kZS91bWlzYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3VtaXNj
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDg1NDUxZmM3NjdjMDU4MzVmNmMxNWY1NjZmMzU2MmUyZDRhZjgzNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bWlz
Yy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3Jh
dGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyog
ICBmaWxlIG5hbWU6ICB1bWlzYy5oCisqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICB0YWIg
c2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0CisqCisqICAgY3JlYXRlZCBv
bjogMTk5OW9jdDE1CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNjaGVyZXIKKyovCisKKyNp
Zm5kZWYgVU1JU0NfSAorI2RlZmluZSBVTUlTQ19ICisKKyNpbmNsdWRlICJ1bmljb2RlL3V0eXBl
cy5oIgorCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgIEMgQVBJOm1pc2MgZGVmaW5pdGlvbnMg
CisgKgorICogIFRoaXMgZmlsZSBjb250YWlucyBtaXNjZWxsYW5lb3VzIGRlZmluaXRpb25zIGZv
ciB0aGUgQyBBUElzLiAKKyAqLworCitVX0NERUNMX0JFR0lOCisKKy8qKiBBIHN0cnVjdCByZXBy
ZXNlbnRpbmcgYSByYW5nZSBvZiB0ZXh0IGNvbnRhaW5pbmcgYSBzcGVjaWZpYyBmaWVsZCAKKyAq
ICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgVUZpZWxkUG9zaXRpb24gewor
ICAvKioKKyAgICogVGhlIGZpZWxkIAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlu
dDMyX3QgZmllbGQ7CisgIC8qKgorICAgKiBUaGUgc3RhcnQgb2YgdGhlIHRleHQgcmFuZ2UgY29u
dGFpbmluZyBmaWVsZCAKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbnQzMl90IGJl
Z2luSW5kZXg7CisgIC8qKiAKKyAgICogVGhlIGxpbWl0IG9mIHRoZSB0ZXh0IHJhbmdlIGNvbnRh
aW5pbmcgZmllbGQgCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdCBlbmRJ
bmRleDsKK30gVUZpZWxkUG9zaXRpb247CisKKyNpZiAhVUNPTkZJR19OT19TRVJWSUNFCisvKioK
KyAqIE9wYXF1ZSB0eXBlIHJldHVybmVkIGJ5IHJlZ2lzdGVySW5zdGFuY2UsIHJlZ2lzdGVyRmFj
dG9yeSBhbmQgdW5yZWdpc3RlciBmb3Igc2VydmljZSByZWdpc3RyYXRpb24uCisgKiBAc3RhYmxl
IElDVSAyLjYKKyAqLwordHlwZWRlZiBjb25zdCB2b2lkKiBVUmVnaXN0cnlLZXk7CisjZW5kaWYK
KworVV9DREVDTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaWN1L3VuaWNvZGUvdW5pc3RyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNv
ZGUvdW5pc3RyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZjMTgwZjM2MjM1ZTZmMzA5OWQyMTg1MTBkMDExOWI3
MGQzYTE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5p
Y29kZS91bmlzdHIuaApAQCAtMCwwICsxLDQ0NDYgQEAKKy8qCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAg
Q29weXJpZ2h0IChDKSAxOTk4LTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
KyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyoKKyogRmlsZSB1bmlzdHIuaAorKgorKiBNb2RpZmljYXRpb24gSGlzdG9yeToK
KyoKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlwdGlvbgorKiAgIDA5LzI1Lzk4
ICAgIHN0ZXBoZW4gICAgIENyZWF0aW9uLgorKiAgIDExLzExLzk4ICAgIHN0ZXBoZW4gICAgIENo
YW5nZWQgcGVyIDExLzkgY29kZSByZXZpZXcuCisqICAgMDQvMjAvOTkgICAgc3RlcGhlbiAgICAg
T3ZlcmhhdWxlZCBwZXIgNC8xNiBjb2RlIHJldmlldy4KKyogICAxMS8xOC85OSAgICBhbGl1ICAg
ICAgICBNYWRlIHRvIGluaGVyaXQgZnJvbSBSZXBsYWNlYWJsZS4gIEFkZGVkIG1ldGhvZAorKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2VCZXR3ZWVuKCk7IG90aGVyIG1l
dGhvZHMgdW5jaGFuZ2VkLgorKiAgIDA2LzI1LzAxICAgIGdyaG90ZW4gICAgIFJlbW92ZSBkZXBl
bmRlbmN5IG9uIGlvc3RyZWFtLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVm
IFVOSVNUUl9ICisjZGVmaW5lIFVOSVNUUl9ICisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYg
QysrIEFQSTogVW5pY29kZSBTdHJpbmcgCisgKi8KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVz
LmgiCisjaW5jbHVkZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0ZF9zdHJp
bmcuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmluZ3BpZWNlLmgiCisjaW5jbHVkZSAidW5pY29k
ZS9ieXRlc3RyZWFtLmgiCisKK3N0cnVjdCBVQ29udmVydGVyOyAgICAgICAgICAvLyB1bmljb2Rl
L3VjbnYuaAorY2xhc3MgIFN0cmluZ1RocmVhZFRlc3Q7CisKKyNpZm5kZWYgVV9DT01QQVJFX0NP
REVfUE9JTlRfT1JERVIKKy8qIHNlZSBhbHNvIHVzdHJpbmcuaCBhbmQgdW5vcm0uaCAqLworLyoq
CisgKiBPcHRpb24gYml0IGZvciB1X3N0ckNhc2VDb21wYXJlLCB1X3N0cmNhc2VjbXAsIHVub3Jt
X2NvbXBhcmUsIGV0YzoKKyAqIENvbXBhcmUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyIGlu
c3RlYWQgb2YgY29kZSB1bml0IG9yZGVyLgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KKyNkZWZp
bmUgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIgIDB4ODAwMAorI2VuZGlmCisKKyNpZm5kZWYg
VVNUUklOR19ICisvKioKKyAqIFxpbmdyb3VwIHVzdHJpbmdfdXN0cmxlbgorICovCitVX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgordV9zdHJsZW4oY29uc3QgVUNoYXIgKnMpOworI2VuZGlmCisK
K1VfTkFNRVNQQUNFX0JFR0lOCisKK2NsYXNzIExvY2FsZTsgICAgICAgICAgICAgICAvLyB1bmlj
b2RlL2xvY2lkLmgKK2NsYXNzIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworY2xhc3MgQnJlYWtJ
dGVyYXRvcjsgICAgICAgIC8vIHVuaWNvZGUvYnJraXRlci5oCisKKy8qIFRoZSA8aW9zdHJlYW0+
IGluY2x1ZGUgaGFzIGJlZW4gbW92ZWQgdG8gdW5pY29kZS91c3RyZWFtLmggKi8KKworLyoqCisg
KiBDb25zdGFudCB0byBiZSB1c2VkIGluIHRoZSBVbmljb2RlU3RyaW5nKGNoYXIgKiwgaW50MzJf
dCwgRUludmFyaWFudCkgY29uc3RydWN0b3IKKyAqIHdoaWNoIGNvbnN0cnVjdHMgYSBVbmljb2Rl
IHN0cmluZyBmcm9tIGFuIGludmFyaWFudC1jaGFyYWN0ZXIgY2hhciAqIHN0cmluZy4KKyAqIEFi
b3V0IGludmFyaWFudCBjaGFyYWN0ZXJzIHNlZSB1dHlwZXMuaC4KKyAqIFRoaXMgY29uc3RydWN0
b3IgaGFzIG5vIHJ1bnRpbWUgZGVwZW5kZW5jeSBvbiBjb252ZXJzaW9uIGNvZGUgYW5kIGlzCisg
KiB0aGVyZWZvcmUgcmVjb21tZW5kZWQgb3ZlciBvbmVzIHRha2luZyBhIGNoYXJzZXQgbmFtZSBz
dHJpbmcKKyAqICh3aGVyZSB0aGUgZW1wdHkgc3RyaW5nICIiIGluZGljYXRlcyBpbnZhcmlhbnQt
Y2hhcmFjdGVyIGNvbnZlcnNpb24pLgorICoKKyAqIEBzdGFibGUgSUNVIDMuMgorICovCisjZGVm
aW5lIFVTX0lOViBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZzo6a0ludmFyaWFu
dAorCisvKioKKyAqIFVuaWNvZGUgU3RyaW5nIGxpdGVyYWxzIGluIEMrKy4KKyAqIERlcGVuZGVu
dCBvbiB0aGUgcGxhdGZvcm0gcHJvcGVydGllcywgZGlmZmVyZW50IFVuaWNvZGVTdHJpbmcKKyAq
IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBVbmljb2RlU3RyaW5nIG9i
amVjdCBmcm9tCisgKiBhIHN0cmluZyBsaXRlcmFsLgorICogVGhlIG1hY3JvcyBhcmUgZGVmaW5l
ZCBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZS4KKyAqIFRoZXkgd29yayBvbmx5IGZvciBzdHJpbmdz
IHRoYXQgY29udGFpbiAiaW52YXJpYW50IGNoYXJhY3RlcnMiLCBpLmUuLAorICogb25seSBsYXRp
biBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogU2VlIHV0eXBlcy5o
IGZvciBkZXRhaWxzLgorICoKKyAqIFRoZSBzdHJpbmcgcGFyYW1ldGVyIG11c3QgYmUgYSBDIHN0
cmluZyBsaXRlcmFsLgorICogVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLCBub3QgaW5jbHVkaW5n
IHRoZSB0ZXJtaW5hdGluZworICogPGNvZGU+TlVMPC9jb2RlPiwgbXVzdCBiZSBzcGVjaWZpZWQg
YXMgYSBjb25zdGFudC4KKyAqIFRoZSBVX1NUUklOR19ERUNMIG1hY3JvIHNob3VsZCBiZSBpbnZv
a2VkIGV4YWN0bHkgb25jZSBmb3Igb25lCisgKiBzdWNoIHN0cmluZyB2YXJpYWJsZSBiZWZvcmUg
aXQgaXMgdXNlZC4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisjaWYgZGVmaW5lZChVX0RFQ0xB
UkVfVVRGMTYpCisjICAgZGVmaW5lIFVOSUNPREVfU1RSSU5HKGNzLCBfbGVuZ3RoKSBVX05BTUVT
UEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyhUUlVFLCAoY29uc3QgVUNoYXIgKilVX0RFQ0xB
UkVfVVRGMTYoY3MpLCBfbGVuZ3RoKQorI2VsaWYgVV9TSVpFT0ZfV0NIQVJfVD09VV9TSVpFT0Zf
VUNIQVIgJiYgKFVfQ0hBUlNFVF9GQU1JTFk9PVVfQVNDSUlfRkFNSUxZIHx8IChVX1NJWkVPRl9V
Q0hBUiA9PSAyICYmIGRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikpKQorIyAgIGRlZmluZSBVTklD
T0RFX1NUUklORyhjcywgX2xlbmd0aCkgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJp
bmcoVFJVRSwgKGNvbnN0IFVDaGFyICopTCAjIyBjcywgX2xlbmd0aCkKKyNlbGlmIFVfU0laRU9G
X1VDSEFSPT0xICYmIFVfQ0hBUlNFVF9GQU1JTFk9PVVfQVNDSUlfRkFNSUxZCisjICAgZGVmaW5l
IFVOSUNPREVfU1RSSU5HKGNzLCBfbGVuZ3RoKSBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29k
ZVN0cmluZyhUUlVFLCAoY29uc3QgVUNoYXIgKiljcywgX2xlbmd0aCkKKyNlbHNlCisjICAgZGVm
aW5lIFVOSUNPREVfU1RSSU5HKGNzLCBfbGVuZ3RoKSBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5p
Y29kZVN0cmluZyhjcywgX2xlbmd0aCwgVVNfSU5WKQorI2VuZGlmCisKKy8qKgorICogVW5pY29k
ZSBTdHJpbmcgbGl0ZXJhbHMgaW4gQysrLgorICogRGVwZW5kZW50IG9uIHRoZSBwbGF0Zm9ybSBw
cm9wZXJ0aWVzLCBkaWZmZXJlbnQgVW5pY29kZVN0cmluZworICogY29uc3RydWN0b3JzIHNob3Vs
ZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGZyb20KKyAqIGEgc3Ry
aW5nIGxpdGVyYWwuCisgKiBUaGUgbWFjcm9zIGFyZSBkZWZpbmVkIGZvciBpbXByb3ZlZCBwZXJm
b3JtYW5jZS4KKyAqIFRoZXkgd29yayBvbmx5IGZvciBzdHJpbmdzIHRoYXQgY29udGFpbiAiaW52
YXJpYW50IGNoYXJhY3RlcnMiLCBpLmUuLAorICogb25seSBsYXRpbiBsZXR0ZXJzLCBkaWdpdHMs
IGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogU2VlIHV0eXBlcy5oIGZvciBkZXRhaWxzLgorICoK
KyAqIFRoZSBzdHJpbmcgcGFyYW1ldGVyIG11c3QgYmUgYSBDIHN0cmluZyBsaXRlcmFsLgorICog
QHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVU5JQ09ERV9TVFJJTkdfU0lNUExFKGNzKSBV
TklDT0RFX1NUUklORyhjcywgLTEpCisKKy8qKgorICogVW5pY29kZVN0cmluZyBpcyBhIHN0cmlu
ZyBjbGFzcyB0aGF0IHN0b3JlcyBVbmljb2RlIGNoYXJhY3RlcnMgZGlyZWN0bHkgYW5kIHByb3Zp
ZGVzCisgKiBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgYXMgdGhlIEphdmEgU3RyaW5nIGFuZCBTdHJp
bmdCdWZmZXIgY2xhc3Nlcy4KKyAqIEl0IGlzIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIGFic3RyYWN0IGNsYXNzIFJlcGxhY2VhYmxlIChmb3IgdHJhbnNsaXRlcmF0aW9uKS4KKyAq
CisgKiBUaGUgVW5pY29kZVN0cmluZyBjbGFzcyBpcyBub3Qgc3VpdGFibGUgZm9yIHN1YmNsYXNz
aW5nLgorICoKKyAqIDxwPkZvciBhbiBvdmVydmlldyBvZiBVbmljb2RlIHN0cmluZ3MgaW4gQyBh
bmQgQysrIHNlZSB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6Ly9pY3UtcHJvamVjdC5vcmcvdXNlcmd1
aWRlL3N0cmluZ3MuaHRtbCI+VXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXI8L2E+LjwvcD4KKyAq
CisgKiA8cD5JbiBJQ1UsIGEgVW5pY29kZSBzdHJpbmcgY29uc2lzdHMgb2YgMTYtYml0IFVuaWNv
ZGUgPGVtPmNvZGUgdW5pdHM8L2VtPi4KKyAqIEEgVW5pY29kZSBjaGFyYWN0ZXIgbWF5IGJlIHN0
b3JlZCB3aXRoIGVpdGhlciBvbmUgY29kZSB1bml0CisgKiAodGhlIG1vc3QgY29tbW9uIGNhc2Up
IG9yIHdpdGggYSBtYXRjaGVkIHBhaXIgb2Ygc3BlY2lhbCBjb2RlIHVuaXRzCisgKiAoInN1cnJv
Z2F0ZXMiKS4gVGhlIGRhdGEgdHlwZSBmb3IgY29kZSB1bml0cyBpcyBVQ2hhci4gCisgKiBGb3Ig
c2luZ2xlLWNoYXJhY3RlciBoYW5kbGluZywgYSBVbmljb2RlIGNoYXJhY3RlciBjb2RlIDxlbT5w
b2ludDwvZW0+IGlzIGEgdmFsdWUKKyAqIGluIHRoZSByYW5nZSAwLi4weDEwZmZmZi4gSUNVIHVz
ZXMgdGhlIFVDaGFyMzIgdHlwZSBmb3IgY29kZSBwb2ludHMuPC9wPgorICoKKyAqIDxwPkluZGV4
ZXMgYW5kIG9mZnNldHMgaW50byBhbmQgbGVuZ3RocyBvZiBzdHJpbmdzIGFsd2F5cyBjb3VudCBj
b2RlIHVuaXRzLCBub3QgY29kZSBwb2ludHMuCisgKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHdpdGgg
bXVsdGktYnl0ZSBjaGFyKiBzdHJpbmdzIGluIHRyYWRpdGlvbmFsIHN0cmluZyBoYW5kbGluZy4K
KyAqIE9wZXJhdGlvbnMgb24gcGFydGlhbCBzdHJpbmdzIHR5cGljYWxseSBkbyBub3QgdGVzdCBm
b3IgY29kZSBwb2ludCBib3VuZGFyaWVzLgorICogSWYgbmVjZXNzYXJ5LCB0aGUgdXNlciBuZWVk
cyB0byB0YWtlIGNhcmUgb2Ygc3VjaCBib3VuZGFyaWVzIGJ5IHRlc3RpbmcgZm9yIHRoZSBjb2Rl
IHVuaXQKKyAqIHZhbHVlcyBvciBieSB1c2luZyBmdW5jdGlvbnMgbGlrZQorICogVW5pY29kZVN0
cmluZzo6Z2V0Q2hhcjMyU3RhcnQoKSBhbmQgVW5pY29kZVN0cmluZzo6Z2V0Q2hhcjMyTGltaXQo
KQorICogKG9yLCBpbiBDLCB0aGUgZXF1aXZhbGVudCBtYWNyb3MgVTE2X1NFVF9DUF9TVEFSVCgp
IGFuZCBVMTZfU0VUX0NQX0xJTUlUKCksIHNlZSB1dGYuaCkuPC9wPgorICoKKyAqIFVuaWNvZGVT
dHJpbmcgbWV0aG9kcyBhcmUgbW9yZSBsZW5pZW50IHdpdGggcmVnYXJkIHRvIGlucHV0IHBhcmFt
ZXRlciB2YWx1ZXMKKyAqIHRoYW4gb3RoZXIgSUNVIEFQSXMuIEluIHBhcnRpY3VsYXI6CisgKiAt
IElmIGluZGV4ZXMgYXJlIG91dCBvZiBib3VuZHMgZm9yIGEgVW5pY29kZVN0cmluZyBvYmplY3QK
KyAqICAgKDwwIG9yID5sZW5ndGgoKSkgdGhlbiB0aGV5IGFyZSAicGlubmVkIiB0byB0aGUgbmVh
cmVzdCBib3VuZGFyeS4KKyAqIC0gSWYgcHJpbWl0aXZlIHN0cmluZyBwb2ludGVyIHZhbHVlcyAo
ZS5nLiwgY29uc3QgVUNoYXIgKiBvciBjaGFyICopCisgKiAgIGZvciBpbnB1dCBzdHJpbmdzIGFy
ZSBOVUxMLCB0aGVuIHRob3NlIGlucHV0IHN0cmluZyBwYXJhbWV0ZXJzIGFyZSB0cmVhdGVkCisg
KiAgIGFzIGlmIHRoZXkgcG9pbnRlZCB0byBhbiBlbXB0eSBzdHJpbmcuCisgKiAgIEhvd2V2ZXIs
IHRoaXMgaXMgPGVtPm5vdDwvZW0+IHRoZSBjYXNlIGZvciBjaGFyICogcGFyYW1ldGVycyBmb3Ig
Y2hhcnNldCBuYW1lcworICogICBvciBvdGhlciBJRHMuCisgKiAtIE1vc3QgVW5pY29kZVN0cmlu
ZyBtZXRob2RzIGRvIG5vdCB0YWtlIGEgVUVycm9yQ29kZSBwYXJhbWV0ZXIgYmVjYXVzZQorICog
ICB0aGVyZSBhcmUgdXN1YWxseSB2ZXJ5IGZldyBvcHBvcnR1bml0aWVzIGZvciBmYWlsdXJlIG90
aGVyIHRoYW4gYSBzaG9ydGFnZQorICogICBvZiBtZW1vcnksIGVycm9yIGNvZGVzIGluIGxvdy1s
ZXZlbCBDKysgc3RyaW5nIG1ldGhvZHMgd291bGQgYmUgaW5jb252ZW5pZW50LAorICogICBhbmQg
dGhlIGVycm9yIGNvZGUgYXMgdGhlIGxhc3QgcGFyYW1ldGVyIChJQ1UgY29udmVudGlvbikgd291
bGQgcHJldmVudAorICogICB0aGUgdXNlIG9mIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4KKyAq
ICAgSW5zdGVhZCwgc3VjaCBtZXRob2RzIHNldCB0aGUgVW5pY29kZVN0cmluZyBpbnRvIGEgImJv
Z3VzIiBzdGF0ZQorICogICAoc2VlIGlzQm9ndXMoKSkgaWYgYW4gZXJyb3Igb2NjdXJzLgorICoK
KyAqIEluIHN0cmluZyBjb21wYXJpc29ucywgdHdvIFVuaWNvZGVTdHJpbmcgb2JqZWN0cyB0aGF0
IGFyZSBib3RoICJib2d1cyIKKyAqIGNvbXBhcmUgZXF1YWwgKHRvIGJlIHRyYW5zaXRpdmUgYW5k
IHByZXZlbnQgZW5kbGVzcyBsb29wcyBpbiBzb3J0aW5nKSwKKyAqIGFuZCBhICJib2d1cyIgc3Ry
aW5nIGNvbXBhcmVzIGxlc3MgdGhhbiBhbnkgbm9uLSJib2d1cyIgb25lLgorICoKKyAqIENvbnN0
IFVuaWNvZGVTdHJpbmcgbWV0aG9kcyBhcmUgdGhyZWFkLXNhZmUuIE11bHRpcGxlIHRocmVhZHMg
Y2FuIHVzZQorICogY29uc3QgbWV0aG9kcyBvbiB0aGUgc2FtZSBVbmljb2RlU3RyaW5nIG9iamVj
dCBzaW11bHRhbmVvdXNseSwKKyAqIGJ1dCBub24tY29uc3QgbWV0aG9kcyBtdXN0IG5vdCBiZSBj
YWxsZWQgY29uY3VycmVudGx5IChpbiBtdWx0aXBsZSB0aHJlYWRzKQorICogd2l0aCBhbnkgb3Ro
ZXIgKGNvbnN0IG9yIG5vbi1jb25zdCkgbWV0aG9kcy4KKyAqCisgKiBTaW1pbGFybHksIGNvbnN0
IFVuaWNvZGVTdHJpbmcgJiBwYXJhbWV0ZXJzIGFyZSB0aHJlYWQtc2FmZS4KKyAqIE9uZSBvYmpl
Y3QgbWF5IGJlIHBhc3NlZCBpbiBhcyBzdWNoIGEgcGFyYW1ldGVyIGNvbmN1cnJlbnRseSBpbiBt
dWx0aXBsZSB0aHJlYWRzLgorICogVGhpcyBpbmNsdWRlcyB0aGUgY29uc3QgVW5pY29kZVN0cmlu
ZyAmIHBhcmFtZXRlcnMgZm9yCisgKiBjb3B5IGNvbnN0cnVjdGlvbiwgYXNzaWdubWVudCwgYW5k
IGNsb25pbmcuCisgKgorICogPHA+VW5pY29kZVN0cmluZyB1c2VzIHNldmVyYWwgc3RvcmFnZSBt
ZXRob2RzLgorICogU3RyaW5nIGNvbnRlbnRzIGNhbiBiZSBzdG9yZWQgaW5zaWRlIHRoZSBVbmlj
b2RlU3RyaW5nIG9iamVjdCBpdHNlbGYsCisgKiBpbiBhbiBhbGxvY2F0ZWQgYW5kIHNoYXJlZCBi
dWZmZXIsIG9yIGluIGFuIG91dHNpZGUgYnVmZmVyIHRoYXQgaXMgImFsaWFzZWQiLgorICogTW9z
dCBvZiB0aGlzIGlzIGRvbmUgdHJhbnNwYXJlbnRseSwgYnV0IGNhcmVmdWwgYWxpYXNpbmcgaW4g
cGFydGljdWxhciBwcm92aWRlcworICogc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1l
bnRzLgorICogQWxzbywgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBhY2Nlc3NpYmxlIHZpYSBzcGVj
aWFsIGZ1bmN0aW9ucy4KKyAqIEZvciBkZXRhaWxzIHNlZSB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6
Ly9pY3UtcHJvamVjdC5vcmcvdXNlcmd1aWRlL3N0cmluZ3MuaHRtbCI+VXNlciBHdWlkZSBTdHJp
bmdzIGNoYXB0ZXI8L2E+LjwvcD4KKyAqCisgKiBAc2VlIHV0Zi5oCisgKiBAc2VlIENoYXJhY3Rl
ckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworY2xhc3MgVV9DT01NT05fQVBJIFVu
aWNvZGVTdHJpbmcgOiBwdWJsaWMgUmVwbGFjZWFibGUKK3sKK3B1YmxpYzoKKworICAvKioKKyAg
ICogQ29uc3RhbnQgdG8gYmUgdXNlZCBpbiB0aGUgVW5pY29kZVN0cmluZyhjaGFyICosIGludDMy
X3QsIEVJbnZhcmlhbnQpIGNvbnN0cnVjdG9yCisgICAqIHdoaWNoIGNvbnN0cnVjdHMgYSBVbmlj
b2RlIHN0cmluZyBmcm9tIGFuIGludmFyaWFudC1jaGFyYWN0ZXIgY2hhciAqIHN0cmluZy4KKyAg
ICogVXNlIHRoZSBtYWNybyBVU19JTlYgaW5zdGVhZCBvZiB0aGUgZnVsbCBxdWFsaWZpY2F0aW9u
IGZvciB0aGlzIHZhbHVlLgorICAgKgorICAgKiBAc2VlIFVTX0lOVgorICAgKiBAc3RhYmxlIElD
VSAzLjIKKyAgICovCisgIGVudW0gRUludmFyaWFudCB7CisgICAgLyoqCisgICAgICogQHNlZSBF
SW52YXJpYW50CisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAgICovCisgICAga0ludmFyaWFu
dAorICB9OworCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
ICAvLyBSZWFkLW9ubHkgb3BlcmF0aW9ucworICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKworICAvKiBDb21wYXJpc29uIC0gYml0d2lzZSBvbmx5IC0gZm9yIGlu
dGVybmF0aW9uYWwgY29tcGFyaXNvbiB1c2UgY29sbGF0aW9uICovCisKKyAgLyoqCisgICAqIEVx
dWFsaXR5IG9wZXJhdG9yLiBQZXJmb3JtcyBvbmx5IGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICog
QHBhcmFtIHRleHQgVGhlIFVuaWNvZGVTdHJpbmcgdG8gY29tcGFyZSB0byB0aGlzIG9uZS4KKyAg
ICogQHJldHVybiBUUlVFIGlmIDxUVD50ZXh0PC9UVD4gY29udGFpbnMgdGhlIHNhbWUgY2hhcmFj
dGVycyBhcyB0aGlzIG9uZSwKKyAgICogRkFMU0Ugb3RoZXJ3aXNlLgorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBvcGVyYXRvcj09IChjb25zdCBVbmljb2RlU3Ry
aW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogSW5lcXVhbGl0eSBvcGVyYXRvci4gUGVy
Zm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBVbmlj
b2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gRkFMU0UgaWYg
PFRUPnRleHQ8L1RUPiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIHRoaXMgb25lLAor
ICAgKiBUUlVFIG90aGVyd2lzZS4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxp
bmUgVUJvb2wgb3BlcmF0b3IhPSAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7CisK
KyAgLyoqCisgICAqIEdyZWF0ZXIgdGhhbiBvcGVyYXRvci4gUGVyZm9ybXMgb25seSBiaXR3aXNl
IGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBVbmljb2RlU3RyaW5nIHRvIGNvbXBh
cmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY2hhcmFjdGVycyBpbiB0
aGlzIGFyZSBiaXR3aXNlCisgICAqIGdyZWF0ZXIgdGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8Y29k
ZT50ZXh0PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW5saW5lIFVCb29sIG9wZXJhdG9yPiAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkg
Y29uc3Q7CisKKyAgLyoqCisgICAqIExlc3MgdGhhbiBvcGVyYXRvci4gUGVyZm9ybXMgb25seSBi
aXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBVbmljb2RlU3RyaW5nIHRv
IGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY2hhcmFjdGVy
cyBpbiB0aGlzIGFyZSBiaXR3aXNlCisgICAqIGxlc3MgdGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8
Y29kZT50ZXh0PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW5saW5lIFVCb29sIG9wZXJhdG9yPCAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4
dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIEdyZWF0ZXIgdGhhbiBvciBlcXVhbCBvcGVyYXRvci4g
UGVyZm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBV
bmljb2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gVFJVRSBp
ZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlCisgICAqIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgRkFMU0Ugb3Ro
ZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIG9wZXJh
dG9yPj0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAgKiBM
ZXNzIHRoYW4gb3IgZXF1YWwgb3BlcmF0b3IuIFBlcmZvcm1zIG9ubHkgYml0d2lzZSBjb21wYXJp
c29uLgorICAgKiBAcGFyYW0gdGV4dCBUaGUgVW5pY29kZVN0cmluZyB0byBjb21wYXJlIHRvIHRo
aXMgb25lLgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyBhcmUg
Yml0d2lzZQorICAgKiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGNoYXJhY3RlcnMgaW4gPGNv
ZGU+dGV4dDwvY29kZT4sIEZBTFNFIG90aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBVQm9vbCBvcGVyYXRvcjw9IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0
KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hhcmFjdGVycyBiaXR3aXNlIGlu
IHRoaXMgVW5pY29kZVN0cmluZyB0bworICAgKiB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0
PC9jb2RlPi4KKyAgICogQHBhcmFtIHRleHQgVGhlIFVuaWNvZGVTdHJpbmcgdG8gY29tcGFyZSB0
byB0aGlzIG9uZS4KKyAgICogQHJldHVybiBUaGUgcmVzdWx0IG9mIGJpdHdpc2UgY2hhcmFjdGVy
IGNvbXBhcmlzb246IDAgaWYgdGhpcworICAgKiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0ZXJz
IGFzIDxjb2RlPnRleHQ8L2NvZGU+LCAtMSBpZiB0aGUgY2hhcmFjdGVycyBpbgorICAgKiB0aGlz
IGFyZSBiaXR3aXNlIGxlc3MgdGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2Rl
PiwgKzEgaWYgdGhlCisgICAqIGNoYXJhY3RlcnMgaW4gdGhpcyBhcmUgYml0d2lzZSBncmVhdGVy
IHRoYW4gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPGNvZGU+dGV4dDwvY29kZT4uCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBjaGFyYWN0
ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0
ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnRleHQ8L1RU
PgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVy
YXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IG9mIHRleHQgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHRleHQgdGhlIG90aGVyIHRleHQgdG8g
YmUgY29tcGFyZWQgYWdhaW5zdCB0aGlzIHN0cmluZy4KKyAgICogQHJldHVybiBUaGUgcmVzdWx0
IG9mIGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBhcmlzb246IDAgaWYgdGhpcworICAgKiBjb250YWlu
cyB0aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxjb2RlPnRleHQ8L2NvZGU+LCAtMSBpZiB0aGUgY2hh
cmFjdGVycyBpbgorICAgKiB0aGlzIGFyZSBiaXR3aXNlIGxlc3MgdGhhbiB0aGUgY2hhcmFjdGVy
cyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgKzEgaWYgdGhlCisgICAqIGNoYXJhY3RlcnMgaW4gdGhp
cyBhcmUgYml0d2lzZSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPGNvZGU+
dGV4dDwvY29kZT4uCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhf
dCBjb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAg
ICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21w
YXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8
L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyAgICog
aW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+
LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikuCisgICAqIEBwYXJhbSBzdGFydCB0aGUg
b2Zmc2V0IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFt
IGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBjb21wYXJlLgorICAg
KiBAcGFyYW0gc3JjVGV4dCB0aGUgdGV4dCB0byBiZSBjb21wYXJlZAorICAgKiBAcGFyYW0gc3Jj
U3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQgY29tcGFyaXNv
bgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+
c3JjPC9UVD4gdG8gY29tcGFyZQorICAgKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgYml0d2lzZSBj
aGFyYWN0ZXIgY29tcGFyaXNvbjogMCBpZiB0aGlzCisgICAqIGNvbnRhaW5zIHRoZSBzYW1lIGNo
YXJhY3RlcnMgYXMgPGNvZGU+c3JjVGV4dDwvY29kZT4sIC0xIGlmIHRoZSBjaGFyYWN0ZXJzIGlu
CisgICAqIHRoaXMgYXJlIGJpdHdpc2UgbGVzcyB0aGFuIHRoZSBjaGFyYWN0ZXJzIGluIDxjb2Rl
PnNyY1RleHQ8L2NvZGU+LCArMSBpZiB0aGUKKyAgICogY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBi
aXR3aXNlIGdyZWF0ZXIgdGhhbiB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8Y29kZT5zcmNUZXh0
PC9jb2RlPi4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICAgaW5saW5lIGludDhfdCBj
b21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0
LAorICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21w
YXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhpcyBVbmljb2RlU3RyaW5nIHdpdGggdGhl
IGZpcnN0CisgICAqIDxUVD5zcmNMZW5ndGg8L1RUPiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFy
czwvVFQ+LgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIGNoYXJhY3RlcnMgdG8gY29tcGFyZSB0
byB0aGlzIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IHRvIGNvbXBhcmUKKyAgICogQHJldHVy
biBUaGUgcmVzdWx0IG9mIGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBhcmlzb246IDAgaWYgdGhpcwor
ICAgKiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxjb2RlPnNyY0NoYXJzPC9jb2Rl
PiwgLTEgaWYgdGhlIGNoYXJhY3RlcnMgaW4KKyAgICogdGhpcyBhcmUgYml0d2lzZSBsZXNzIHRo
YW4gdGhlIGNoYXJhY3RlcnMgaW4gPGNvZGU+c3JjQ2hhcnM8L2NvZGU+LCArMSBpZiB0aGUKKyAg
ICogY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0ZXIgdGhhbiB0aGUgY2hhcmFj
dGVycworICAgKiBpbiA8Y29kZT5zcmNDaGFyczwvY29kZT4uCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywK
KyAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFy
ZSB0aGUgY2hhcmFjdGVycyBiaXR3aXNlIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9U
VD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBmaXJzdAorICAgKiA8VFQ+bGVu
Z3RoPC9UVD4gY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPgorICAgKiBAcGFyYW0gc3Rh
cnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVyYXRpb24gYmVnaW5zCisgICAq
IEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNvbXBhcmUuCisgICAq
IEBwYXJhbSBzcmNDaGFycyB0aGUgY2hhcmFjdGVycyB0byBiZSBjb21wYXJlZAorICAgKiBAcmV0
dXJuIFRoZSByZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29tcGFyaXNvbjogMCBpZiB0aGlz
CisgICAqIGNvbnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgPGNvZGU+c3JjQ2hhcnM8L2Nv
ZGU+LCAtMSBpZiB0aGUgY2hhcmFjdGVycyBpbgorICAgKiB0aGlzIGFyZSBiaXR3aXNlIGxlc3Mg
dGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT5zcmNDaGFyczwvY29kZT4sICsxIGlmIHRoZQor
ICAgKiBjaGFyYWN0ZXJzIGluIHRoaXMgYXJlIGJpdHdpc2UgZ3JlYXRlciB0aGFuIHRoZSBjaGFy
YWN0ZXJzCisgICAqIGluIDxjb2RlPnNyY0NoYXJzPC9jb2RlPi4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzKSBjb25z
dDsKKworICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hhcmFjdGVycyBiaXR3aXNlIGluIHRoZSBy
YW5nZQorICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSB3aXRo
IHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQor
ICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KS4K
KyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0
aW9uIGJlZ2lucworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biB0aGlzIHRvIGNvbXBhcmUKKyAgICogQHBhcmFtIHNyY0NoYXJzIHRoZSBjaGFyYWN0ZXJzIHRv
IGJlIGNvbXBhcmVkCisgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPFRUPnNy
Y0NoYXJzPC9UVD4gdG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRo
ZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiB0byBjb21wYXJlCisg
ICAqIEByZXR1cm4gVGhlIHJlc3VsdCBvZiBiaXR3aXNlIGNoYXJhY3RlciBjb21wYXJpc29uOiAw
IGlmIHRoaXMKKyAgICogY29udGFpbnMgdGhlIHNhbWUgY2hhcmFjdGVycyBhcyA8Y29kZT5zcmND
aGFyczwvY29kZT4sIC0xIGlmIHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIHRoaXMgYXJlIGJpdHdp
c2UgbGVzcyB0aGFuIHRoZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnNyY0NoYXJzPC9jb2RlPiwgKzEg
aWYgdGhlCisgICAqIGNoYXJhY3RlcnMgaW4gdGhpcyBhcmUgYml0d2lzZSBncmVhdGVyIHRoYW4g
dGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPGNvZGU+c3JjQ2hhcnM8L2NvZGU+LgorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFyZShpbnQzMl90IHN0YXJ0
LAorICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2Ug
aW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPmxpbWl0PC9UVD4pIHdpdGgg
dGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAg
ICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjTGltaXQ8L1RUPikuCisgICAqIEBwYXJhbSBz
dGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMKKyAg
ICogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBjb21w
YXJlIG9wZXJhdGlvbgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgdGV4dCB0byBiZSBjb21wYXJl
ZAorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4g
dG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBAcGFyYW0gc3JjTGltaXQgdGhlIG9mZnNldCBpbnRv
IDxUVD5zcmNUZXh0PC9UVD4gdG8gbGltaXQgY29tcGFyaXNvbgorICAgKiBAcmV0dXJuIFRoZSBy
ZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29tcGFyaXNvbjogMCBpZiB0aGlzCisgICAqIGNv
bnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgPGNvZGU+c3JjVGV4dDwvY29kZT4sIC0xIGlm
IHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIHRoaXMgYXJlIGJpdHdpc2UgbGVzcyB0aGFuIHRoZSBj
aGFyYWN0ZXJzIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+LCArMSBpZiB0aGUKKyAgICogY2hhcmFj
dGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0ZXIgdGhhbiB0aGUgY2hhcmFjdGVycworICAg
KiBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPi4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBpbmxpbmUgaW50OF90IGNvbXBhcmVCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAg
ICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4
dCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICBpbnQzMl90IHNy
Y0xpbWl0KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0d28gVW5pY29kZSBzdHJpbmdz
IGluIGNvZGUgcG9pbnQgb3JkZXIuCisgICAqIFRoZSByZXN1bHQgbWF5IGJlIGRpZmZlcmVudCBm
cm9tIHRoZSByZXN1bHRzIG9mIGNvbXBhcmUoKSwgb3BlcmF0b3I8LCBldGMuCisgICAqIGlmIHN1
cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBhcmUgcHJlc2VudDoKKyAgICoKKyAgICogSW4gVVRGLTE2
LCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgKHdpdGggY29kZSBwb2ludHMgVSsxMDAwMCBhbmQg
YWJvdmUpIGFyZQorICAgKiBzdG9yZWQgd2l0aCBwYWlycyBvZiBzdXJyb2dhdGUgY29kZSB1bml0
cy4gVGhlc2UgaGF2ZSB2YWx1ZXMgZnJvbSAweGQ4MDAgdG8gMHhkZmZmLAorICAgKiB3aGljaCBt
ZWFucyB0aGF0IHRoZXkgY29tcGFyZSBhcyBsZXNzIHRoYW4gc29tZSBvdGhlciBCTVAgY2hhcmFj
dGVycyBsaWtlIFUrZmVmZi4KKyAgICogVGhpcyBmdW5jdGlvbiBjb21wYXJlcyBVbmljb2RlIHN0
cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogSWYgZWl0aGVyIG9mIHRoZSBVVEYtMTYg
c3RyaW5ncyBpcyBtYWxmb3JtZWQgKGkuZS4sIGl0IGNvbnRhaW5zIHVucGFpcmVkIHN1cnJvZ2F0
ZXMpLCB0aGVuIHRoZSByZXN1bHQgaXMgbm90IGRlZmluZWQuCisgICAqCisgICAqIEBwYXJhbSB0
ZXh0IEFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8uCisgICAqIEByZXR1cm4g
YSBuZWdhdGl2ZS96ZXJvL3Bvc2l0aXZlIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB3aGV0aGVy
CisgICAqIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbi9lcXVhbCB0by9ncmVhdGVyIHRoYW4gdGhl
IHNlY29uZCBvbmUKKyAgICogaW4gY29kZSBwb2ludCBvcmRlcgorICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9yZGVyKGNvbnN0IFVu
aWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBVbmlj
b2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUg
ZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4K
KyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAg
KiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBV
KzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0
ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisg
ICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVy
IEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVz
IFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2Yg
dGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWly
ZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAg
ICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2gg
dGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIGxlbmd0aCBUaGUgbnVt
YmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0byBjb21wYXJlLgorICAgKiBAcGFy
YW0gc3JjVGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgorICAgKiBA
cmV0dXJuIGEgbmVnYXRpdmUvemVyby9wb3NpdGl2ZSBpbnRlZ2VyIGNvcnJlc3BvbmRpbmcgdG8g
d2hldGhlcgorICAgKiB0aGlzIHN0cmluZyBpcyBsZXNzIHRoYW4vZXF1YWwgdG8vZ3JlYXRlciB0
aGFuIHRoZSBzZWNvbmQgb25lCisgICAqIGluIGNvZGUgcG9pbnQgb3JkZXIKKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBhcmVDb2RlUG9pbnRPcmRlcihp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VW5pY29kZVN0cmluZyYgc3JjVGV4dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdv
IFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICAgKiBUaGUgcmVzdWx0IG1h
eSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcmVzdWx0cyBvZiBjb21wYXJlKCksIG9wZXJhdG9yPCwg
ZXRjLgorICAgKiBpZiBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgYXJlIHByZXNlbnQ6CisgICAq
CisgICAqIEluIFVURi0xNiwgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzICh3aXRoIGNvZGUgcG9p
bnRzIFUrMTAwMDAgYW5kIGFib3ZlKSBhcmUKKyAgICogc3RvcmVkIHdpdGggcGFpcnMgb2Ygc3Vy
cm9nYXRlIGNvZGUgdW5pdHMuIFRoZXNlIGhhdmUgdmFsdWVzIGZyb20gMHhkODAwIHRvIDB4ZGZm
ZiwKKyAgICogd2hpY2ggbWVhbnMgdGhhdCB0aGV5IGNvbXBhcmUgYXMgbGVzcyB0aGFuIHNvbWUg
b3RoZXIgQk1QIGNoYXJhY3RlcnMgbGlrZSBVK2ZlZmYuCisgICAqIFRoaXMgZnVuY3Rpb24gY29t
cGFyZXMgVW5pY29kZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIuCisgICAqIElmIGVpdGhl
ciBvZiB0aGUgVVRGLTE2IHN0cmluZ3MgaXMgbWFsZm9ybWVkIChpLmUuLCBpdCBjb250YWlucyB1
bnBhaXJlZCBzdXJyb2dhdGVzKSwgdGhlbiB0aGUgcmVzdWx0IGlzIG5vdCBkZWZpbmVkLgorICAg
KgorICAgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IG9mZnNldCBpbiB0aGlzIHN0cmluZyBhdCB3
aGljaCB0aGUgY29tcGFyZSBvcGVyYXRpb24gYmVnaW5zLgorICAgKiBAcGFyYW0gbGVuZ3RoIFRo
ZSBudW1iZXIgb2YgY29kZSB1bml0cyBmcm9tIHRoaXMgc3RyaW5nIHRvIGNvbXBhcmUuCisgICAq
IEBwYXJhbSBzcmNUZXh0IEFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8uCisg
ICAqIEBwYXJhbSBzcmNTdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoYXQgc3RyaW5nIGF0IHdo
aWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJhbSBzcmNMZW5ndGgg
VGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFyZS4KKyAg
ICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25kaW5n
IHRvIHdoZXRoZXIKKyAgICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dyZWF0
ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICAgKiBpbiBjb2RlIHBvaW50IG9yZGVyCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9y
ZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBD
b21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogVGhl
IHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgpLCBv
cGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBwcmVz
ZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAod2l0
aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRoIHBh
aXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4ZDgw
MCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxlc3Mg
dGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlzIGZ1
bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICAg
KiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwgaXQg
Y29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3QgZGVm
aW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9pbnRlciB0byBhbm90aGVyIHN0
cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBu
dW1iZXIgb2YgY29kZSB1bml0cyBmcm9tIHRoYXQgc3RyaW5nIHRvIGNvbXBhcmUuCisgICAqIEBy
ZXR1cm4gYSBuZWdhdGl2ZS96ZXJvL3Bvc2l0aXZlIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB3
aGV0aGVyCisgICAqIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbi9lcXVhbCB0by9ncmVhdGVyIHRo
YW4gdGhlIHNlY29uZCBvbmUKKyAgICogaW4gY29kZSBwb2ludCBvcmRlcgorICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9yZGVyKGNv
bnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBV
bmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkg
YmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0
Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgor
ICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50
cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJv
Z2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYs
CisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90
aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBh
cmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIg
b2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5w
YWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoK
KyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hp
Y2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIGxlbmd0aCBUaGUg
bnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0byBjb21wYXJlLgorICAgKiBA
cGFyYW0gc3JjQ2hhcnMgQSBwb2ludGVyIHRvIGFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhp
cyBvbmUgdG8uCisgICAqIEByZXR1cm4gYSBuZWdhdGl2ZS96ZXJvL3Bvc2l0aXZlIGludGVnZXIg
Y29ycmVzcG9uZGluZyB0byB3aGV0aGVyCisgICAqIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbi9l
cXVhbCB0by9ncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvbmUKKyAgICogaW4gY29kZSBwb2ludCBv
cmRlcgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFy
ZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMpIGNvbnN0OworCisgIC8qKgorICAgKiBD
b21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogVGhl
IHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgpLCBv
cGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBwcmVz
ZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAod2l0
aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRoIHBh
aXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4ZDgw
MCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxlc3Mg
dGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlzIGZ1
bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICAg
KiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwgaXQg
Y29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3QgZGVm
aW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBz
dHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFt
IGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0byBjb21w
YXJlLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgQSBwb2ludGVyIHRvIGFub3RoZXIgc3RyaW5nIHRv
IGNvbXBhcmUgdGhpcyBvbmUgdG8uCisgICAqIEBwYXJhbSBzcmNTdGFydCBUaGUgc3RhcnQgb2Zm
c2V0IGluIHRoYXQgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMu
CisgICAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhh
dCBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRp
dmUgaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIKKyAgICogdGhpcyBzdHJpbmcgaXMg
bGVzcyB0aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICAgKiBpbiBj
b2RlIHBvaW50IG9yZGVyCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGlu
dDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisg
IC8qKgorICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRl
ci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2Yg
Y29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0
ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hh
cmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0
b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVl
cyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21w
YXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgor
ICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50
IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1l
ZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3Vs
dCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZz
ZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4K
KyAgICogQHBhcmFtIGxpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIgdGhlIGxhc3QgY29kZSB1bml0IGZy
b20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHNyY1RleHQgQW5vdGhlciBz
dHJpbmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IFRoZSBz
dGFydCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9u
IGJlZ2lucy4KKyAgICogQHBhcmFtIHNyY0xpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIgdGhlIGxhc3Qg
Y29kZSB1bml0IGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHJldHVybiBhIG5l
Z2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIKKyAg
ICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhhbiB0aGUgc2Vj
b25kIG9uZQorICAgKiBpbiBjb2RlIHBvaW50IG9yZGVyCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXJCZXR3ZWVuKGludDMy
X3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdDsKKwor
ICAvKioKKyAgICogQ29tcGFyZSB0d28gc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcg
ZnVsbCBjYXNlIGZvbGRpbmcuCisgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGlzLT5mb2xk
Q2FzZShvcHRpb25zKS5jb21wYXJlKHRleHQuZm9sZENhc2Uob3B0aW9ucykpLgorICAgKgorICAg
KiBAcGFyYW0gdGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgorICAg
KiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9uczoKKyAgICogICAtIFVfRk9MRF9D
QVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9wdGlvbnM6CisgICAqICAgICBD
b21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5nLgor
ICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKyAgICogICAgIFNldCB0
byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgorICAg
KiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgorICAgKgorICAgKiAgIC0gVV9G
T0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAgICogQHJldHVybiBBIG5lZ2F0aXZl
LCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY2FzZUNv
bXBhcmUoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7
CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5IHVz
aW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhpcy0+
Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNUZXh0LmZvbGRDYXNlKG9wdGlvbnMpKS4KKyAg
ICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQg
d2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIGxlbmd0aCBU
aGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0byBjb21wYXJlLgorICAg
KiBAcGFyYW0gc3JjVGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgor
ICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9uczoKKyAgICogICAtIFVfRk9M
RF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9wdGlvbnM6CisgICAqICAg
ICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5n
LgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKyAgICogICAgIFNl
dCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgor
ICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgorICAgKgorICAgKiAgIC0g
VV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAgICogQHJldHVybiBBIG5lZ2F0
aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY2Fz
ZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAg
ICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgIHVpbnQzMl90IG9wdGlv
bnMpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5z
aXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAgICogVGhpcyBpcyBlcXVpdmFsZW50
IHRvIHRoaXMtPmZvbGRDYXNlKG9wdGlvbnMpLmNvbXBhcmUoc3JjVGV4dC5mb2xkQ2FzZShvcHRp
b25zKSkuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoaXMg
c3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJh
bSBsZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhpcyBzdHJpbmcgdG8gY29t
cGFyZS4KKyAgICogQHBhcmFtIHNyY1RleHQgQW5vdGhlciBzdHJpbmcgdG8gY29tcGFyZSB0aGlz
IG9uZSB0by4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhhdCBz
dHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFt
IHNyY0xlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGF0IHN0cmluZyB0byBj
b21wYXJlLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9uczoKKyAgICog
ICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9wdGlvbnM6
CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRlZmF1bHQgY2Fz
ZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKyAg
ICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5p
dCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgorICAgKgor
ICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAgICogQHJldHVy
biBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBp
bnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMyX3QgbGVuZ3Ro
LAorICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgIGludDMy
X3Qgc3JjU3RhcnQsCisgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgIHVpbnQz
Ml90IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBzdHJpbmdzIGNh
c2UtaW5zZW5zaXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAgICogVGhpcyBpcyBl
cXVpdmFsZW50IHRvIHRoaXMtPmZvbGRDYXNlKG9wdGlvbnMpLmNvbXBhcmUoc3JjQ2hhcnMuZm9s
ZENhc2Uob3B0aW9ucykpLgorICAgKgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgQSBwb2ludGVyIHRv
IGFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8uCisgICAqIEBwYXJhbSBzcmNM
ZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFy
ZS4KKyAgICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9mIG9wdGlvbnM6CisgICAqICAgLSBV
X0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVmYXVsdCBvcHRpb25zOgorICAg
KiAgICAgQ29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIgd2l0aCBkZWZhdWx0IGNhc2UgZm9s
ZGluZy4KKyAgICoKKyAgICogICAtIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisgICAqICAg
ICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3Jk
ZXIKKyAgICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxzKS4KKyAgICoKKyAgICog
ICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgICAqCisgICAqIEByZXR1cm4gQSBu
ZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90
IGNhc2VDb21wYXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgIGludDMyX3Qgc3Jj
TGVuZ3RoLAorICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgLyoqCisgICAq
IENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5IHVzaW5nIGZ1bGwgY2FzZSBm
b2xkaW5nLgorICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhpcy0+Zm9sZENhc2Uob3B0aW9u
cykuY29tcGFyZShzcmNDaGFycy5mb2xkQ2FzZShvcHRpb25zKSkuCisgICAqCisgICAqIEBwYXJh
bSBzdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoaXMgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21w
YXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBj
b2RlIHVuaXRzIGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHNyY0No
YXJzIEEgcG9pbnRlciB0byBhbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgor
ICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9uczoKKyAgICogICAtIFVfRk9M
RF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9wdGlvbnM6CisgICAqICAg
ICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5n
LgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKyAgICogICAgIFNl
dCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgor
ICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgorICAgKgorICAgKiAgIC0g
VV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAgICogQHJldHVybiBBIG5lZ2F0
aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY2Fz
ZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAg
ICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29u
c3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5
IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhp
cy0+Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNDaGFycy5mb2xkQ2FzZShvcHRpb25zKSku
CisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoaXMgc3RyaW5n
IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJhbSBsZW5n
dGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4K
KyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9pbnRlciB0byBhbm90aGVyIHN0cmluZyB0byBjb21w
YXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gc3JjU3RhcnQgVGhlIHN0YXJ0IG9mZnNldCBp
biB0aGF0IHN0cmluZyBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVyYXRpb24gYmVnaW5zLgorICAg
KiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY29kZSB1bml0cyBmcm9tIHRoYXQgc3Ry
aW5nIHRvIGNvbXBhcmUuCisgICAqIEBwYXJhbSBvcHRpb25zIEEgYml0IHNldCBvZiBvcHRpb25z
OgorICAgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVzZWQgZm9yIGRlZmF1bHQg
b3B0aW9uczoKKyAgICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1bml0IG9yZGVyIHdpdGggZGVm
YXVsdCBjYXNlIGZvbGRpbmcuCisgICAqCisgICAqICAgLSBVX0NPTVBBUkVfQ09ERV9QT0lOVF9P
UkRFUgorICAgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2Yg
Y29kZSB1bml0IG9yZGVyCisgICAqICAgICAoc2VlIHVfc3RyQ29tcGFyZSBmb3IgZGV0YWlscyku
CisgICAqCisgICAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICAgKgorICAg
KiBAcmV0dXJuIEEgbmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZlIGludGVnZXIgaW5kaWNhdGlu
ZyB0aGUgY29tcGFyaXNvbiByZXN1bHQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAg
aW5saW5lIGludDhfdCBjYXNlQ29tcGFyZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICBpbnQz
Ml90IHNyY1N0YXJ0LAorICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICB1aW50
MzJfdCBvcHRpb25zKSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0d28gc3RyaW5ncyBj
YXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRpbmcuCisgICAqIFRoaXMgaXMg
ZXF1aXZhbGVudCB0byB0aGlzLT5mb2xkQ2FzZShvcHRpb25zKS5jb21wYXJlQmV0d2Vlbih0ZXh0
LmZvbGRDYXNlKG9wdGlvbnMpKS4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBv
ZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lu
cy4KKyAgICogQHBhcmFtIGxpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIgdGhlIGxhc3QgY29kZSB1bml0
IGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHNyY1RleHQgQW5vdGhl
ciBzdHJpbmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IFRo
ZSBzdGFydCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0
aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIHNyY0xpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIgdGhlIGxh
c3QgY29kZSB1bml0IGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIG9w
dGlvbnMgQSBiaXQgc2V0IG9mIG9wdGlvbnM6CisgICAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxU
IG9yIDAgaXMgdXNlZCBmb3IgZGVmYXVsdCBvcHRpb25zOgorICAgKiAgICAgQ29tcGFyaXNvbiBp
biBjb2RlIHVuaXQgb3JkZXIgd2l0aCBkZWZhdWx0IGNhc2UgZm9sZGluZy4KKyAgICoKKyAgICog
ICAtIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisgICAqICAgICBTZXQgdG8gY2hvb3NlIGNv
ZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3JkZXIKKyAgICogICAgIChzZWUg
dV9zdHJDb21wYXJlIGZvciBkZXRhaWxzKS4KKyAgICoKKyAgICogICAtIFVfRk9MRF9DQVNFX0VY
Q0xVREVfU1BFQ0lBTF9JCisgICAqCisgICAqIEByZXR1cm4gQSBuZWdhdGl2ZSwgemVybywgb3Ig
cG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdC4KKyAgICog
QHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNhc2VDb21wYXJlQmV0d2Vl
bihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwKKyAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMaW1pdCwKKyAgICAgICAgICAgIHVpbnQzMl90
IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBzdGFydHMg
d2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+CisgICAqIEBwYXJhbSB0ZXh0IFRo
ZSB0ZXh0IHRvIG1hdGNoLgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhpcyBzdGFydHMgd2l0aCB0
aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBGQUxTRSBvdGhlcndpc2UKKyAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgc3RhcnRzV2l0aChjb25z
dCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogRGV0ZXJtaW5lIGlm
IHRoaXMgc3RhcnRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPgorICAg
KiBpbiB0aGUgcmFuZ2UgWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5n
dGg8L1RUPikuCisgICAqIEBwYXJhbSBzcmNUZXh0IFRoZSB0ZXh0IHRvIG1hdGNoLgorICAgKiBA
cGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQg
bWF0Y2hpbmcKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMg
aW4gPFRUPnNyY1RleHQ8L1RUPiB0byBtYXRjaAorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhpcyBz
dGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBGQUxTRSBv
dGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgc3Rh
cnRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgaW50MzJf
dCBzcmNTdGFydCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKKworICAv
KioKKyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgc3RhcnRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4g
PFRUPnNyY0NoYXJzPC9UVD4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSBjaGFyYWN0ZXJzIHRv
IG1hdGNoLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biA8VFQ+c3JjQ2hhcnM8L1RUPgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhpcyBzdGFydHMgd2l0
aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiwKKyAgICogRkFMU0Ugb3RoZXJ3
aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIHN0YXJ0c1dp
dGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgp
IGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNo
YXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4gdGhlIHJhbmdlICBbPFRUPnNy
Y1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogQHBhcmFt
IHNyY0NoYXJzIFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjU3RhcnQg
dGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICog
QHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJz
PC9UVD4gdG8gbWF0Y2gKKyAgICogQHJldHVybiBUUlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBj
aGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LCBGQUxTRSBvdGhlcndpc2UKKyAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgc3RhcnRzV2l0aChjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhp
cyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnRleHQ8L1RUPgorICAgKiBAcGFyYW0g
dGV4dCBUaGUgdGV4dCB0byBtYXRjaC4KKyAgICogQHJldHVybiBUUlVFIGlmIHRoaXMgZW5kcyB3
aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4sCisgICAqIEZBTFNFIG90aGVyd2lz
ZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBlbmRzV2l0aChj
b25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogRGV0ZXJtaW5l
IGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4KKyAg
ICogaW4gdGhlIHJhbmdlIFs8VFQ+c3JjU3RhcnQ8L1RUPiwgPFRUPnNyY1N0YXJ0ICsgc3JjTGVu
Z3RoPC9UVD4pLgorICAgKiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4dCB0byBtYXRjaC4KKyAgICog
QHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IHRvIHN0YXJ0
IG1hdGNoaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IGluIDxUVD5zcmNUZXh0PC9UVD4gdG8gbWF0Y2gKKyAgICogQHJldHVybiBUUlVFIGlmIHRoaXMg
ZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4sCisgICAqIEZBTFNFIG90
aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBlbmRz
V2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsCisgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAg
KiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0No
YXJzPC9UVD4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgor
ICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3Jj
Q2hhcnM8L1RUPgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNoYXJh
Y3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIEZBTFNFIG90aGVyd2lzZQorICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBlbmRzV2l0aChjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsCisgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8q
KgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRU
PnNyY0NoYXJzPC9UVD4KKyAgICogaW4gdGhlIHJhbmdlICBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxU
VD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSBj
aGFyYWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRv
IDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIHNyY0xlbmd0
aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gK
KyAgICogQHJldHVybiBUUlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxU
VD5zcmNDaGFyczwvVFQ+LAorICAgKiBGQUxTRSBvdGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgZW5kc1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpIGNvbnN0OworCisKKyAgLyogU2VhcmNoaW5nIC0gYml0d2lzZSBvbmx5ICovCisKKyAgLyoq
CisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0
ZXJzIGluIDxUVD50ZXh0PC9UVD4sCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAg
ICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICogQHJldHVybiBUaGUg
b2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3Ig
LTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBp
bnQzMl90IGluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7CisKKyAgLyoq
CisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0
ZXJzIGluIDxUVD50ZXh0PC9UVD4KKyAgICogc3RhcnRpbmcgYXQgb2Zmc2V0IDxUVD5zdGFydDwv
VFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0
IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNl
YXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9m
IHRoZSBzdGFydCBvZiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBvciAtMSBpZiBub3QgZm91bmQuCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjb25z
dCBVbmljb2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25z
dDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGZpcnN0IG9jY3VycmVuY2UgaW4g
dGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4p
IG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD50ZXh0PC9UVD4sIHVzaW5nIGJpdHdpc2Ug
Y29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAg
ICogQHBhcmFtIHN0YXJ0IFRoZSBvZmZzZXQgYXQgd2hpY2ggc2VhcmNoaW5nIHdpbGwgc3RhcnQu
CisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHNlYXJjaAor
ICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIHRoZSBzdGFydCBvZiA8VFQ+dGV4
dDwvVFQ+LAorICAgKiBvciAtMSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0
LAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1
cnJlbmNlIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxl
bmd0aDwvVFQ+KSBvZiB0aGUgY2hhcmFjdGVycworICAgKiAgaW4gPFRUPnNyY1RleHQ8L1RUPiBp
biB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNM
ZW5ndGg8L1RUPiksCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFt
IHNyY1RleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRo
ZSBvZmZzZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IGF0IHdoaWNoCisgICAqIHRvIHN0YXJ0IG1h
dGNoaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGlu
IDxUVD5zcmNUZXh0PC9UVD4gdG8gbWF0Y2gKKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQg
aW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBsZW5ndGgg
dGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gc2VhcmNoCisgICAqIEByZXR1cm4g
VGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAq
IG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxp
bmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3Ro
LAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1
cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIDxUVD5zcmNDaGFyczwvVFQ+CisgICAq
IHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21wYXJp
c29uLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICog
QHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJz
PC9UVD4gdG8gbWF0Y2gKKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0
IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRo
aXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3Vu
ZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBpbmRleE9m
KGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgs
CisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2Nh
dGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5z
dGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgb2YgdGhlIGNoYXJhY3RlcnMKKyAg
ICogaW4gPFRUPnNyY0NoYXJzPC9UVD4sIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICog
QHBhcmFtIHNyY0NoYXJzIFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzcmNM
ZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+CisgICAq
IEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0Lgor
ICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBzZWFyY2gKKyAg
ICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnNyY0No
YXJzPC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqLworICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywK
KyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICAvKioKKyAg
ICogTG9jYXRlIGluIHRoaXMgdGhlIGZpcnN0IG9jY3VycmVuY2UgaW4gdGhlIHJhbmdlCisgICAq
IFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIG9mIHRoZSBjaGFyYWN0
ZXJzCisgICAqIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNy
Y1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KSwKKyAgICogdXNpbmcg
Yml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIHRleHQgdG8gc2Vh
cmNoIGZvci4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjQ2hh
cnM8L1RUPiBhdCB3aGljaAorICAgKiB0byBzdGFydCBtYXRjaGluZworICAgKiBAcGFyYW0gc3Jj
TGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiB0byBt
YXRjaAorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBpbnRvIHRoaXMgYXQgd2hpY2ggdG8g
c3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBv
ZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGludDMyX3QgaW5kZXhPZihjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAg
ICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBp
biB0aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBCTVAgY29kZSBwb2ludCA8Y29kZT5j
PC9jb2RlPiwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gYyBU
aGUgY29kZSB1bml0IHRvIHNlYXJjaCBmb3IuCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRv
IHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGluZGV4T2YoVUNoYXIgYykgY29uc3Q7CisK
KyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBj
b2RlIHBvaW50IDxUVD5jPC9UVD4sCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAg
ICoKKyAgICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gc2VhcmNoIGZvci4KKyAgICogQHJl
dHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91
bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhP
ZihVQ2hhcjMyIGMpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmly
c3Qgb2NjdXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUgcG9pbnQgPGNvZGU+YzwvY29kZT4sCisgICAq
IHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21wYXJp
c29uLgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBw
YXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAg
KiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5v
dCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBp
bmRleE9mKFVDaGFyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisg
IC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29k
ZSBwb2ludCA8VFQ+YzwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RU
PiwgdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKgorICAgKiBAcGFyYW0gYyBUaGUgY29k
ZSBwb2ludCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgVGhlIG9mZnNldCBhdCB3
aGljaCBzZWFyY2hpbmcgd2lsbCBzdGFydC4KKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8g
dGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihVQ2hhcjMyIGMsCisgICAgICAg
ICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhp
cyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUgcG9pbnQgPGNvZGU+YzwvY29k
ZT4KKyAgICogaW4gdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3Ro
PC9UVD4pLAorICAgKiB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSBjIFRo
ZSBjb2RlIHVuaXQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQg
aW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBsZW5ndGgg
dGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gc2VhcmNoCisgICAqIEByZXR1cm4g
VGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5kLgor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGluZGV4T2YoVUNo
YXIgYywKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qg
b2NjdXJyZW5jZSBvZiB0aGUgY29kZSBwb2ludCA8VFQ+YzwvVFQ+CisgICAqIGluIHRoZSByYW5n
ZSBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSwKKyAgICogdXNpbmcg
Yml0d2lzZSBjb21wYXJpc29uLgorICAgKgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSBwb2ludCB0
byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBpbnRvIHRoaXMgYXQg
d2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9m
IGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGlu
dG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUg
SUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihVQ2hhcjMyIGMsCisgICAg
ICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBj
b25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBv
ZiB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+LAorICAgKiB1c2luZyBiaXR3aXNlIGNv
bXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAq
IEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9U
VD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0
KSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2NjdXJyZW5j
ZSBvZiB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9m
ZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFy
YW0gdGV4dCBUaGUgdGV4dCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgVGhlIG9m
ZnNldCBhdCB3aGljaCBzZWFyY2hpbmcgd2lsbCBzdGFydC4KKyAgICogQHJldHVybiBUaGUgb2Zm
c2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3IgLTEg
aWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQz
Ml90IGxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAg
IGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUg
bGFzdCBvY2N1cnJlbmNlIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5z
dGFydCArIGxlbmd0aDwvVFQ+KSBvZiB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8VFQ+dGV4dDwv
VFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0
IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNl
YXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0
aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRl
IGluIHRoaXMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFy
dDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgb2YgdGhlIGNoYXJhY3RlcnMKKyAgICog
aW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+
LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPiksCisgICAqIHVzaW5nIGJpdHdpc2UgY29t
cGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAg
ICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IGF0IHdo
aWNoCisgICAqIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gdG8gbWF0Y2gKKyAgICogQHBh
cmFtIHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5n
CisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoaXMgdG8g
c2VhcmNoCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9m
IDxUVD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJ
Q1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBVbmljb2Rl
U3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2Nh
dGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5z
cmNDaGFyczwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNp
bmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIHRleHQgdG8g
c2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gKKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBv
ZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEByZXR1cm4g
VGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAq
IG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxp
bmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25z
dDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBpbiB0
aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikg
b2YgdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY0NoYXJzPC9UVD4sIHVzaW5nIGJpdHdp
c2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSB0ZXh0IHRvIHNlYXJjaCBm
b3IuCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxU
VD5zcmNDaGFyczwvVFQ+CisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNl
YXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0
aGUgc3RhcnQgb2YgPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4K
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhP
Zihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3Ro
LAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBsYXN0IG9jY3Vy
cmVuY2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVu
Z3RoPC9UVD4pIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD5zcmNDaGFyczwvVFQ+IGlu
IHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xl
bmd0aDwvVFQ+KSwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0g
c3JjQ2hhcnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRo
ZSBvZmZzZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiBhdCB3aGljaAorICAgKiB0byBzdGFydCBt
YXRjaGluZworICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biA8VFQ+c3JjQ2hhcnM8L1RUPiB0byBtYXRjaAorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNl
dCBpbnRvIHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0
aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVy
biBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAg
ICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlu
dDMyX3QgbGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICBp
bnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAg
ICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNv
bnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9m
IHRoZSBCTVAgY29kZSBwb2ludCA8Y29kZT5jPC9jb2RlPiwKKyAgICogdXNpbmcgYml0d2lzZSBj
b21wYXJpc29uLgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0IHRvIHNlYXJjaCBmb3IuCisg
ICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYg
bm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90
IGxhc3RJbmRleE9mKFVDaGFyIGMpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhp
cyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4sCisgICAq
IHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICoKKyAgICogQHBhcmFtIGMgVGhlIGNvZGUg
cG9pbnQgdG8gc2VhcmNoIGZvci4KKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBv
ZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoVUNoYXIzMiBjKSBjb25zdDsKKwor
ICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgQk1Q
IGNvZGUgcG9pbnQgPGNvZGU+YzwvY29kZT4KKyAgICogc3RhcnRpbmcgYXQgb2Zmc2V0IDxUVD5z
dGFydDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSBjIFRoZSBj
b2RlIHVuaXQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBvZmZzZXQgYXQg
d2hpY2ggc2VhcmNoaW5nIHdpbGwgc3RhcnQuCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRv
IHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKFVDaGFyIGMsCisgICAg
ICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4g
dGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4KKyAg
ICogc3RhcnRpbmcgYXQgb2Zmc2V0IDxUVD5zdGFydDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBh
cmlzb24uCisgICAqCisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50IHRvIHNlYXJjaCBmb3Iu
CisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0
YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIDxUVD5jPC9UVD4sIG9y
IC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUg
aW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhcjMyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3Rh
cnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJl
bmNlIG9mIHRoZSBCTVAgY29kZSBwb2ludCA8Y29kZT5jPC9jb2RlPgorICAgKiBpbiB0aGUgcmFu
Z2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPiksCisgICAqIHVzaW5n
IGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIGMgVGhlIGNvZGUgdW5pdCB0byBzZWFy
Y2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBpbnRvIHRoaXMgYXQgd2hpY2gg
dG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJh
Y3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhp
cyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoVUNoYXIgYywKKyAgICAgICAg
ICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0
OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRo
ZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4KKyAgICogaW4gdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RU
PiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLAorICAgKiB1c2luZyBiaXR3aXNlIGNvbXBhcmlz
b24uCisgICAqCisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50IHRvIHNlYXJjaCBmb3IuCisg
ICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGludG8gdGhpcyBhdCB3aGljaCB0byBzdGFydCBt
YXRjaGluZworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0
aGlzIHRvIHNlYXJjaAorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIDxUVD5j
PC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhcjMyIGMsCisgICAgICAgICAgICAgIGlu
dDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworCisg
IC8qIENoYXJhY3RlciBhY2Nlc3MgKi8KKworICAvKioKKyAgICogUmV0dXJuIHRoZSBjb2RlIHVu
aXQgYXQgb2Zmc2V0IDx0dD5vZmZzZXQ8L3R0Pi4KKyAgICogSWYgdGhlIG9mZnNldCBpcyBub3Qg
dmFsaWQgKDAuLmxlbmd0aCgpLTEpIHRoZW4gVStmZmZmIGlzIHJldHVybmVkLgorICAgKiBAcGFy
YW0gb2Zmc2V0IGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyAgICogQHJldHVybiB0aGUg
Y29kZSB1bml0IGF0IG9mZnNldCA8dHQ+b2Zmc2V0PC90dD4KKyAgICogICAgICAgICBvciAweGZm
ZmYgaWYgdGhlIG9mZnNldCBpcyBub3QgdmFsaWQgZm9yIHRoaXMgc3RyaW5nCisgICAqIEBzdGFi
bGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVDaGFyIGNoYXJBdChpbnQzMl90IG9mZnNldCkg
Y29uc3Q7CisKKyAgLyoqCisgICAqIFJldHVybiB0aGUgY29kZSB1bml0IGF0IG9mZnNldCA8dHQ+
b2Zmc2V0PC90dD4uCisgICAqIElmIHRoZSBvZmZzZXQgaXMgbm90IHZhbGlkICgwLi5sZW5ndGgo
KS0xKSB0aGVuIFUrZmZmZiBpcyByZXR1cm5lZC4KKyAgICogQHBhcmFtIG9mZnNldCBhIHZhbGlk
IG9mZnNldCBpbnRvIHRoZSB0ZXh0CisgICAqIEByZXR1cm4gdGhlIGNvZGUgdW5pdCBhdCBvZmZz
ZXQgPHR0Pm9mZnNldDwvdHQ+CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5l
IFVDaGFyIG9wZXJhdG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKworICAvKioKKyAgICog
UmV0dXJuIHRoZSBjb2RlIHBvaW50IHRoYXQgY29udGFpbnMgdGhlIGNvZGUgdW5pdAorICAgKiBh
dCBvZmZzZXQgPHR0Pm9mZnNldDwvdHQ+LgorICAgKiBJZiB0aGUgb2Zmc2V0IGlzIG5vdCB2YWxp
ZCAoMC4ubGVuZ3RoKCktMSkgdGhlbiBVK2ZmZmYgaXMgcmV0dXJuZWQuCisgICAqIEBwYXJhbSBv
ZmZzZXQgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorICAgKiB0aGF0IGluZGljYXRlcyB0
aGUgdGV4dCBvZmZzZXQgb2YgYW55IG9mIHRoZSBjb2RlIHVuaXRzCisgICAqIHRoYXQgd2lsbCBi
ZSBhc3NlbWJsZWQgaW50byBhIGNvZGUgcG9pbnQgKDIxLWJpdCB2YWx1ZSkgYW5kIHJldHVybmVk
CisgICAqIEByZXR1cm4gdGhlIGNvZGUgcG9pbnQgb2YgdGV4dCBhdCA8dHQ+b2Zmc2V0PC90dD4K
KyAgICogICAgICAgICBvciAweGZmZmYgaWYgdGhlIG9mZnNldCBpcyBub3QgdmFsaWQgZm9yIHRo
aXMgc3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVDaGFyMzIg
Y2hhcjMyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0OworCisgIC8qKgorICAgKiBBZGp1c3QgYSBy
YW5kb20tYWNjZXNzIG9mZnNldCBzbyB0aGF0CisgICAqIGl0IHBvaW50cyB0byB0aGUgYmVnaW5u
aW5nIG9mIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAqIFRoZSBvZmZzZXQgdGhhdCBpcyBwYXNz
ZWQgaW4gcG9pbnRzIHRvCisgICAqIGFueSBjb2RlIHVuaXQgb2YgYSBjb2RlIHBvaW50LAorICAg
KiB3aGlsZSB0aGUgcmV0dXJuZWQgb2Zmc2V0IHdpbGwgcG9pbnQgdG8gdGhlIGZpcnN0IGNvZGUg
dW5pdAorICAgKiBvZiB0aGUgc2FtZSBjb2RlIHBvaW50LgorICAgKiBJbiBVVEYtMTYsIGlmIHRo
ZSBpbnB1dCBvZmZzZXQgcG9pbnRzIHRvIGEgc2Vjb25kIHN1cnJvZ2F0ZQorICAgKiBvZiBhIHN1
cnJvZ2F0ZSBwYWlyLCB0aGVuIHRoZSByZXR1cm5lZCBvZmZzZXQgd2lsbCBwb2ludAorICAgKiB0
byB0aGUgZmlyc3Qgc3Vycm9nYXRlLgorICAgKiBAcGFyYW0gb2Zmc2V0IGEgdmFsaWQgb2Zmc2V0
IGludG8gb25lIGNvZGUgcG9pbnQgb2YgdGhlIHRleHQKKyAgICogQHJldHVybiBvZmZzZXQgb2Yg
dGhlIGZpcnN0IGNvZGUgdW5pdCBvZiB0aGUgc2FtZSBjb2RlIHBvaW50CisgICAqIEBzZWUgVTE2
X1NFVF9DUF9TVEFSVAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQz
Ml90IGdldENoYXIzMlN0YXJ0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKworICAvKioKKyAgICog
QWRqdXN0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQgc28gdGhhdAorICAgKiBpdCBwb2ludHMgYmVo
aW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAqIFRoZSBvZmZzZXQgdGhhdCBpcyBwYXNzZWQg
aW4gcG9pbnRzIGJlaGluZAorICAgKiBhbnkgY29kZSB1bml0IG9mIGEgY29kZSBwb2ludCwKKyAg
ICogd2hpbGUgdGhlIHJldHVybmVkIG9mZnNldCB3aWxsIHBvaW50IGJlaGluZCB0aGUgbGFzdCBj
b2RlIHVuaXQKKyAgICogb2YgdGhlIHNhbWUgY29kZSBwb2ludC4KKyAgICogSW4gVVRGLTE2LCBp
ZiB0aGUgaW5wdXQgb2Zmc2V0IHBvaW50cyBiZWhpbmQgdGhlIGZpcnN0IHN1cnJvZ2F0ZQorICAg
KiAoaS5lLiwgdG8gdGhlIHNlY29uZCBzdXJyb2dhdGUpCisgICAqIG9mIGEgc3Vycm9nYXRlIHBh
aXIsIHRoZW4gdGhlIHJldHVybmVkIG9mZnNldCB3aWxsIHBvaW50CisgICAqIGJlaGluZCB0aGUg
c2Vjb25kIHN1cnJvZ2F0ZSAoaS5lLiwgdG8gdGhlIGZpcnN0IHN1cnJvZ2F0ZSkuCisgICAqIEBw
YXJhbSBvZmZzZXQgYSB2YWxpZCBvZmZzZXQgYWZ0ZXIgYW55IGNvZGUgdW5pdCBvZiBhIGNvZGUg
cG9pbnQgb2YgdGhlIHRleHQKKyAgICogQHJldHVybiBvZmZzZXQgb2YgdGhlIGZpcnN0IGNvZGUg
dW5pdCBhZnRlciB0aGUgc2FtZSBjb2RlIHBvaW50CisgICAqIEBzZWUgVTE2X1NFVF9DUF9MSU1J
VAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGdldENoYXIz
MkxpbWl0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKworICAvKioKKyAgICogTW92ZSB0aGUgY29k
ZSB1bml0IGluZGV4IGFsb25nIHRoZSBzdHJpbmcgYnkgZGVsdGEgY29kZSBwb2ludHMuCisgICAq
IEludGVycHJldCB0aGUgaW5wdXQgaW5kZXggYXMgYSBjb2RlIHVuaXQtYmFzZWQgb2Zmc2V0IGlu
dG8gdGhlIHN0cmluZywKKyAgICogbW92ZSB0aGUgaW5kZXggZm9yd2FyZCBvciBiYWNrd2FyZCBi
eSBkZWx0YSBjb2RlIHBvaW50cywgYW5kCisgICAqIHJldHVybiB0aGUgcmVzdWx0aW5nIGluZGV4
LgorICAgKiBUaGUgaW5wdXQgaW5kZXggc2hvdWxkIHBvaW50IHRvIHRoZSBmaXJzdCBjb2RlIHVu
aXQgb2YgYSBjb2RlIHBvaW50LAorICAgKiBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lLgorICAg
KgorICAgKiBCb3RoIGlucHV0IGFuZCBvdXRwdXQgaW5kZXhlcyBhcmUgY29kZSB1bml0LWJhc2Vk
IGFzIGZvciBhbGwKKyAgICogc3RyaW5nIGluZGV4ZXMvb2Zmc2V0cyBpbiBJQ1UgKGFuZCBvdGhl
ciBsaWJyYXJpZXMsIGxpa2UgTUJDUyBjaGFyKikuCisgICAqIElmIGRlbHRhPDAgdGhlbiB0aGUg
aW5kZXggaXMgbW92ZWQgYmFja3dhcmQgKHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyku
CisgICAqIElmIGRlbHRhPjAgdGhlbiB0aGUgaW5kZXggaXMgbW92ZWQgZm9yd2FyZCAodG93YXJk
IHRoZSBlbmQgb2YgdGhlIHN0cmluZykuCisgICAqCisgICAqIFRoaXMgYmVoYXZlcyBsaWtlIENo
YXJhY3Rlckl0ZXJhdG9yOjptb3ZlMzIoZGVsdGEsIGtDdXJyZW50KS4KKyAgICoKKyAgICogQmVo
YXZpb3IgZm9yIG91dC1vZi1ib3VuZHMgaW5kZXhlczoKKyAgICogPGNvZGU+bW92ZUluZGV4MzI8
L2NvZGU+IHBpbnMgdGhlIGlucHV0IGluZGV4IHRvIDAuLmxlbmd0aCgpLCBpLmUuLAorICAgKiBp
ZiB0aGUgaW5wdXQgaW5kZXg8MCB0aGVuIGl0IGlzIHBpbm5lZCB0byAwOworICAgKiBpZiBpdCBp
cyBpbmRleD5sZW5ndGgoKSB0aGVuIGl0IGlzIHBpbm5lZCB0byBsZW5ndGgoKS4KKyAgICogQWZ0
ZXJ3YXJkcywgdGhlIGluZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRlbHRhPC9jb2RlPiBjb2RlIHBv
aW50cworICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkLAorICAgKiBidXQgbm8gZnVydGhlciBiYWNr
d2FyZCB0aGFuIHRvIDAgYW5kIG5vIGZ1cnRoZXIgZm9yd2FyZCB0aGFuIHRvIGxlbmd0aCgpLgor
ICAgKiBUaGUgcmVzdWx0aW5nIGluZGV4IHJldHVybiB2YWx1ZSB3aWxsIGJlIGluIGJldHdlZW4g
MCBhbmQgbGVuZ3RoKCksIGluY2x1c2l2ZWx5LgorICAgKgorICAgKiBFeGFtcGxlczoKKyAgICog
PHByZT4KKyAgICogLy8gcyBoYXMgY29kZSBwb2ludHMgJ2EnIFUrMTAwMDAgJ2InIFUrMTBmZmZm
IFUrMjAyOQorICAgKiBVbmljb2RlU3RyaW5nIHM9VU5JQ09ERV9TVFJJTkcoImFcXFUwMDAxMDAw
MGJcXFUwMDEwZmZmZlxcdTIwMjkiLCAzMSkudW5lc2NhcGUoKTsKKyAgICoKKyAgICogLy8gaW5p
dGlhbCBpbmRleDogcG9zaXRpb24gb2YgVSsxMDAwMAorICAgKiBpbnQzMl90IGluZGV4PTE7Cisg
ICAqCisgICAqIC8vIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgd2lsbCBhbGwgcmVzdWx0IGluIGlu
ZGV4PT00LCBwb3NpdGlvbiBvZiBVKzEwZmZmZgorICAgKgorICAgKiAvLyBza2lwIDIgY29kZSBw
b2ludHMgZnJvbSBzb21lIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcKKyAgICogaW5kZXg9cy5tb3Zl
SW5kZXgzMihpbmRleCwgMik7IC8vIHNraXBzIFUrMTAwMDAgYW5kICdiJworICAgKgorICAgKiAv
LyBnbyB0byB0aGUgM3JkIGNvZGUgcG9pbnQgZnJvbSB0aGUgc3RhcnQgb2YgcyAoMC1iYXNlZCkK
KyAgICogaW5kZXg9cy5tb3ZlSW5kZXgzMigwLCAzKTsgLy8gc2tpcHMgJ2EnLCBVKzEwMDAwLCBh
bmQgJ2InCisgICAqCisgICAqIC8vIGdvIHRvIHRoZSBuZXh0LXRvLWxhc3QgY29kZSBwb2ludCBv
ZiBzCisgICAqIGluZGV4PXMubW92ZUluZGV4MzIocy5sZW5ndGgoKSwgLTIpOyAvLyBiYWNrd2Fy
ZC1za2lwcyBVKzIwMjkgYW5kIFUrMTBmZmZmCisgICAqIDwvcHJlPgorICAgKgorICAgKiBAcGFy
YW0gaW5kZXggaW5wdXQgY29kZSB1bml0IGluZGV4CisgICAqIEBwYXJhbSBkZWx0YSAoc2lnbmVk
KSBjb2RlIHBvaW50IGNvdW50IHRvIG1vdmUgdGhlIGluZGV4IGZvcndhcmQgb3IgYmFja3dhcmQK
KyAgICogICAgICAgIGluIHRoZSBzdHJpbmcKKyAgICogQHJldHVybiB0aGUgcmVzdWx0aW5nIGNv
ZGUgdW5pdCBpbmRleAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGludDMyX3QgbW92
ZUluZGV4MzIoaW50MzJfdCBpbmRleCwgaW50MzJfdCBkZWx0YSkgY29uc3Q7CisKKyAgLyogU3Vi
c3RyaW5nIGV4dHJhY3Rpb24gKi8KKworICAvKioKKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBp
biB0aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFydDwvdHQ+LCA8dHQ+c3RhcnQgKyBsZW5ndGg8L3R0
PikgaW50byB0aGUgYXJyYXkgPHR0PmRzdDwvdHQ+LAorICAgKiBiZWdpbm5pbmcgYXQgPHR0PmRz
dFN0YXJ0PC90dD4uCisgICAqIElmIHRoZSBzdHJpbmcgYWxpYXNlcyB0byA8Y29kZT5kc3Q8L2Nv
ZGU+IGl0c2VsZiBhcyBhbiBleHRlcm5hbCBidWZmZXIsCisgICAqIHRoZW4gZXh0cmFjdCgpIHdp
bGwgbm90IGNvcHkgdGhlIGNvbnRlbnRzLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0
IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQor
ICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBleHRyYWN0Cisg
ICAqIEBwYXJhbSBkc3QgYXJyYXkgaW4gd2hpY2ggdG8gY29weSBjaGFyYWN0ZXJzLiAgVGhlIGxl
bmd0aCBvZiA8dHQ+ZHN0PC90dD4KKyAgICogbXVzdCBiZSBhdCBsZWFzdCAoPHR0PmRzdFN0YXJ0
ICsgbGVuZ3RoPC90dD4pLgorICAgKiBAcGFyYW0gZHN0U3RhcnQgdGhlIG9mZnNldCBpbiA8VFQ+
ZHN0PC9UVD4gd2hlcmUgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAgKiB3aWxsIGJlIGV4dHJhY3Rl
ZAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSB2b2lkIGV4dHJhY3QoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgIFVDaGFy
ICpkc3QsCisgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQgPSAwKSBjb25zdDsKKworICAvKioK
KyAgICogQ29weSB0aGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBpbnRvIGRlc3QuCisgICAqIFRo
aXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0CisgICAqIGNoZWNrcyBpZiB0aGVyZSBp
cyBlbm91Z2ggc3BhY2UgaW4gZGVzdCwKKyAgICogZXh0cmFjdHMgdGhlIGVudGlyZSBzdHJpbmcg
aWYgcG9zc2libGUsCisgICAqIGFuZCBOVUwtdGVybWluYXRlcyBkZXN0IGlmIHBvc3NpYmxlLgor
ICAgKgorICAgKiBJZiB0aGUgc3RyaW5nIGZpdHMgaW50byBkZXN0IGJ1dCBjYW5ub3QgYmUgTlVM
LXRlcm1pbmF0ZWQKKyAgICogKGxlbmd0aCgpPT1kZXN0Q2FwYWNpdHkpIHRoZW4gdGhlIGVycm9y
IGNvZGUgaXMgc2V0IHRvIFVfU1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkcuCisgICAqIElm
IHRoZSBzdHJpbmcgaXRzZWxmIGRvZXMgbm90IGZpdCBpbnRvIGRlc3QKKyAgICogKGxlbmd0aCgp
PmRlc3RDYXBhY2l0eSkgdGhlbiB0aGUgZXJyb3IgY29kZSBpcyBzZXQgdG8gVV9CVUZGRVJfT1ZF
UkZMT1dfRVJST1IuCisgICAqCisgICAqIElmIHRoZSBzdHJpbmcgYWxpYXNlcyB0byA8Y29kZT5k
ZXN0PC9jb2RlPiBpdHNlbGYgYXMgYW4gZXh0ZXJuYWwgYnVmZmVyLAorICAgKiB0aGVuIGV4dHJh
Y3QoKSB3aWxsIG5vdCBjb3B5IHRoZSBjb250ZW50cy4KKyAgICoKKyAgICogQHBhcmFtIGRlc3Qg
RGVzdGluYXRpb24gc3RyaW5nIGJ1ZmZlci4KKyAgICogQHBhcmFtIGRlc3RDYXBhY2l0eSBOdW1i
ZXIgb2YgVUNoYXJzIGF2YWlsYWJsZSBhdCBkZXN0LgorICAgKiBAcGFyYW0gZXJyb3JDb2RlIElD
VSBlcnJvciBjb2RlLgorICAgKiBAcmV0dXJuIGxlbmd0aCgpCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW50MzJfdAorICBleHRyYWN0KFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RD
YXBhY2l0eSwKKyAgICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworCisgIC8q
KgorICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPHR0PnN0YXJ0
PC90dD4sIDx0dD5zdGFydCArIGxlbmd0aDwvdHQ+KSBpbnRvIHRoZSAgVW5pY29kZVN0cmluZwor
ICAgKiA8dHQ+dGFyZ2V0PC90dD4uCisgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmlyc3Qg
Y2hhcmFjdGVyIHdoaWNoIHdpbGwgYmUgY29waWVkCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBhcmFtIHRhcmdldCBVbmljb2Rl
U3RyaW5nIGludG8gd2hpY2ggdG8gY29weSBjaGFyYWN0ZXJzLgorICAgKiBAcmV0dXJuIEEgcmVm
ZXJlbmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSB2b2lkIGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgaW50MzJfdCBs
ZW5ndGgsCisgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHRhcmdldCkgY29uc3Q7CisKKyAgLyoq
CisgICAqIENvcHkgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFs8dHQ+c3RhcnQ8L3R0Piwg
PHR0PmxpbWl0PC90dD4pCisgICAqIGludG8gdGhlIGFycmF5IDx0dD5kc3Q8L3R0PiwgYmVnaW5u
aW5nIGF0IDx0dD5kc3RTdGFydDwvdHQ+LgorICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZp
cnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQorICAgKiBA
cGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0
ZXIgdG8gYmUgY29waWVkCisgICAqIEBwYXJhbSBkc3QgYXJyYXkgaW4gd2hpY2ggdG8gY29weSBj
aGFyYWN0ZXJzLiAgVGhlIGxlbmd0aCBvZiA8dHQ+ZHN0PC90dD4KKyAgICogbXVzdCBiZSBhdCBs
ZWFzdCAoPHR0PmRzdFN0YXJ0ICsgKGxpbWl0IC0gc3RhcnQpPC90dD4pLgorICAgKiBAcGFyYW0g
ZHN0U3RhcnQgdGhlIG9mZnNldCBpbiA8VFQ+ZHN0PC9UVD4gd2hlcmUgdGhlIGZpcnN0IGNoYXJh
Y3RlcgorICAgKiB3aWxsIGJlIGV4dHJhY3RlZAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIGlubGluZSB2b2lkIGV4dHJhY3RCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAg
ICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgIFVDaGFyICpkc3QsCisgICAgICAgICAg
ICAgIGludDMyX3QgZHN0U3RhcnQgPSAwKSBjb25zdDsKKworICAvKioKKyAgICogQ29weSB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzx0dD5zdGFydDwvdHQ+LCA8dHQ+bGltaXQ8L3R0PikK
KyAgICogaW50byB0aGUgVW5pY29kZVN0cmluZyA8dHQ+dGFyZ2V0PC90dD4uICBSZXBsYWNlYWJs
ZSBBUEkuCisgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmlyc3QgY2hhcmFjdGVyIHdoaWNo
IHdpbGwgYmUgY29waWVkCisgICAqIEBwYXJhbSBsaW1pdCBvZmZzZXQgaW1tZWRpYXRlbHkgZm9s
bG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQKKyAgICogQHBhcmFtIHRhcmdl
dCBVbmljb2RlU3RyaW5nIGludG8gd2hpY2ggdG8gY29weSBjaGFyYWN0ZXJzLgorICAgKiBAcmV0
dXJuIEEgcmVmZXJlbmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIHZpcnR1YWwgdm9pZCBleHRyYWN0QmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAg
ICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiB0
YXJnZXQpIGNvbnN0OworCisgIC8qKgorICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBy
YW5nZSAKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgaW50
byBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLgorICAgKiBBbGwgY2hhcmFjdGVycyBtdXN0IGJlIGlu
dmFyaWFudCAoc2VlIHV0eXBlcy5oKS4KKyAgICogVXNlIFVTX0lOViBhcyB0aGUgbGFzdCwgc2ln
bmF0dXJlLWRpc3Rpbmd1aXNoaW5nIHBhcmFtZXRlci4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlv
biBkb2VzIG5vdCB3cml0ZSBhbnkgbW9yZSB0aGFuIDxjb2RlPnRhcmdldExlbmd0aDwvY29kZT4K
KyAgICogY2hhcmFjdGVycyBidXQgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBlbnRpcmUgb3V0
cHV0IHN0cmluZworICAgKiBzbyB0aGF0IG9uZSBjYW4gYWxsb2NhdGUgYSBsYXJnZXIgYnVmZmVy
IGFuZCBjYWxsIHRoZSBmdW5jdGlvbiBhZ2FpbgorICAgKiBpZiBuZWNlc3NhcnkuCisgICAqIFRo
ZSBvdXRwdXQgc3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkIGlmIHBvc3NpYmxlLgorICAgKgorICAg
KiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNv
cGllZAorICAgKiBAcGFyYW0gc3RhcnRMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRv
IGV4dHJhY3QKKyAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0IGJ1ZmZlciBmb3IgZXh0cmFj
dGlvbiwgY2FuIGJlIE5VTEwKKyAgICogICAgICAgICAgICAgICBpZiB0YXJnZXRMZW5ndGggaXMg
MAorICAgKiBAcGFyYW0gdGFyZ2V0Q2FwYWNpdHkgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IGJ1
ZmZlcgorICAgKiBAcGFyYW0gaW52IFNpZ25hdHVyZS1kaXN0aW5ndWlzaGluZyBwYXJhbWF0ZXIs
IHVzZSBVU19JTlYuCisgICAqIEByZXR1cm4gdGhlIG91dHB1dCBzdHJpbmcgbGVuZ3RoLCBub3Qg
aW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBOVUwKKyAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAq
LworICBpbnQzMl90IGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgaW50MzJfdCBz
dGFydExlbmd0aCwKKyAgICAgICAgICAgY2hhciAqdGFyZ2V0LAorICAgICAgICAgICBpbnQzMl90
IHRhcmdldENhcGFjaXR5LAorICAgICAgICAgICBlbnVtIEVJbnZhcmlhbnQgaW52KSBjb25zdDsK
KworI2lmIFVfQ0hBUlNFVF9JU19VVEY4IHx8ICFVQ09ORklHX05PX0NPTlZFUlNJT04KKworICAv
KioKKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFy
dDwvVFQ+LCA8dHQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgaW50byBhbiBhcnJheSBvZiBjaGFyYWN0
ZXJzCisgICAqIGluIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY29kZXBhZ2UuCisgICAqIFRoaXMg
ZnVuY3Rpb24gZG9lcyBub3Qgd3JpdGUgYW55IG1vcmUgdGhhbiA8Y29kZT50YXJnZXRMZW5ndGg8
L2NvZGU+CisgICAqIGNoYXJhY3RlcnMgYnV0IHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgZW50
aXJlIG91dHB1dCBzdHJpbmcKKyAgICogc28gdGhhdCBvbmUgY2FuIGFsbG9jYXRlIGEgbGFyZ2Vy
IGJ1ZmZlciBhbmQgY2FsbCB0aGUgZnVuY3Rpb24gYWdhaW4KKyAgICogaWYgbmVjZXNzYXJ5Lgor
ICAgKiBUaGUgb3V0cHV0IHN0cmluZyBpcyBOVUwtdGVybWluYXRlZCBpZiBwb3NzaWJsZS4KKyAg
ICoKKyAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBmaXJzdCBjaGFyYWN0ZXIgd2hpY2ggd2ls
bCBiZSBjb3BpZWQKKyAgICogQHBhcmFtIHN0YXJ0TGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyB0byBleHRyYWN0CisgICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCBidWZmZXIgZm9y
IGV4dHJhY3Rpb24KKyAgICogQHBhcmFtIHRhcmdldExlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSB0
YXJnZXQgYnVmZmVyCisgICAqIElmIDxUVD50YXJnZXQ8L1RUPiBpcyBOVUxMLCB0aGVuIHRoZSBu
dW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgZm9yCisgICAqIDxUVD50YXJnZXQ8L1RUPiBpcyByZXR1
cm5lZC4KKyAgICogQHJldHVybiB0aGUgb3V0cHV0IHN0cmluZyBsZW5ndGgsIG5vdCBpbmNsdWRp
bmcgdGhlIHRlcm1pbmF0aW5nIE5VTAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlu
dDMyX3QgZXh0cmFjdChpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICBpbnQzMl90IHN0YXJ0TGVu
Z3RoLAorICAgICAgICAgICBjaGFyICp0YXJnZXQsCisgICAgICAgICAgIHVpbnQzMl90IHRhcmdl
dExlbmd0aCkgY29uc3Q7CisKKyNlbmRpZgorCisjaWYgIVVDT05GSUdfTk9fQ09OVkVSU0lPTgor
CisgIC8qKgorICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPHR0
PnN0YXJ0PC9UVD4sIDx0dD5zdGFydCArIGxlbmd0aDwvVFQ+KSBpbnRvIGFuIGFycmF5IG9mIGNo
YXJhY3RlcnMKKyAgICogaW4gYSBzcGVjaWZpZWQgY29kZXBhZ2UuCisgICAqIFRoZSBvdXRwdXQg
c3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkLgorICAgKgorICAgKiBSZWNvbW1lbmRhdGlvbjogRm9y
IGludmFyaWFudC1jaGFyYWN0ZXIgc3RyaW5ncyB1c2UKKyAgICogZXh0cmFjdChpbnQzMl90IHN0
YXJ0LCBpbnQzMl90IGxlbmd0aCwgY2hhciAqdGFyZ2V0LCBpbnQzMl90IHRhcmdldENhcGFjaXR5
LCBlbnVtIEVJbnZhcmlhbnQgaW52KSBjb25zdAorICAgKiBiZWNhdXNlIGl0IGF2b2lkcyBvYmpl
Y3QgY29kZSBkZXBlbmRlbmNpZXMgb2YgVW5pY29kZVN0cmluZyBvbgorICAgKiB0aGUgY29udmVy
c2lvbiBjb2RlLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJh
Y3RlciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgKiBAcGFyYW0gc3RhcnRMZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFy
Z2V0IGJ1ZmZlciBmb3IgZXh0cmFjdGlvbgorICAgKiBAcGFyYW0gY29kZXBhZ2UgdGhlIGRlc2ly
ZWQgY29kZXBhZ2UgZm9yIHRoZSBjaGFyYWN0ZXJzLiAgMCBoYXMKKyAgICogdGhlIHNwZWNpYWwg
bWVhbmluZyBvZiB0aGUgZGVmYXVsdCBjb2RlcGFnZQorICAgKiBJZiA8Y29kZT5jb2RlcGFnZTwv
Y29kZT4gaXMgYW4gZW1wdHkgc3RyaW5nICg8Y29kZT4iIjwvY29kZT4pLAorICAgKiB0aGVuIGEg
c2ltcGxlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBjb2RlcGFnZS1pbnZhcmlhbnQK
KyAgICogc3Vic2V0ICgiaW52YXJpYW50IGNoYXJhY3RlcnMiKSBvZiB0aGUgcGxhdGZvcm0gZW5j
b2RpbmcuIFNlZSB1dHlwZXMuaC4KKyAgICogSWYgPFRUPnRhcmdldDwvVFQ+IGlzIE5VTEwsIHRo
ZW4gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBmb3IKKyAgICogPFRUPnRhcmdldDwvVFQ+
IGlzIHJldHVybmVkLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHRhcmdldCBpcyBiaWcgZW5vdWdo
CisgICAqIHRvIGZpdCBhbGwgb2YgdGhlIGNoYXJhY3RlcnMuCisgICAqIEByZXR1cm4gdGhlIG91
dHB1dCBzdHJpbmcgbGVuZ3RoLCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBOVUwKKyAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBleHRyYWN0KGludDMy
X3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnRMZW5ndGgsCisgICAgICAg
ICAgICAgICAgIGNoYXIgKnRhcmdldCwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29k
ZXBhZ2UgPSAwKSBjb25zdDsKKworICAvKioKKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0
aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3RhcnQgKyBsZW5ndGg8L1RUPikg
aW50byBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzCisgICAqIGluIGEgc3BlY2lmaWVkIGNvZGVwYWdl
LgorICAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdyaXRlIGFueSBtb3JlIHRoYW4gPGNvZGU+
dGFyZ2V0TGVuZ3RoPC9jb2RlPgorICAgKiBjaGFyYWN0ZXJzIGJ1dCByZXR1cm5zIHRoZSBsZW5n
dGggb2YgdGhlIGVudGlyZSBvdXRwdXQgc3RyaW5nCisgICAqIHNvIHRoYXQgb25lIGNhbiBhbGxv
Y2F0ZSBhIGxhcmdlciBidWZmZXIgYW5kIGNhbGwgdGhlIGZ1bmN0aW9uIGFnYWluCisgICAqIGlm
IG5lY2Vzc2FyeS4KKyAgICogVGhlIG91dHB1dCBzdHJpbmcgaXMgTlVMLXRlcm1pbmF0ZWQgaWYg
cG9zc2libGUuCisgICAqCisgICAqIFJlY29tbWVuZGF0aW9uOiBGb3IgaW52YXJpYW50LWNoYXJh
Y3RlciBzdHJpbmdzIHVzZQorICAgKiBleHRyYWN0KGludDMyX3Qgc3RhcnQsIGludDMyX3QgbGVu
Z3RoLCBjaGFyICp0YXJnZXQsIGludDMyX3QgdGFyZ2V0Q2FwYWNpdHksIGVudW0gRUludmFyaWFu
dCBpbnYpIGNvbnN0CisgICAqIGJlY2F1c2UgaXQgYXZvaWRzIG9iamVjdCBjb2RlIGRlcGVuZGVu
Y2llcyBvZiBVbmljb2RlU3RyaW5nIG9uCisgICAqIHRoZSBjb252ZXJzaW9uIGNvZGUuCisgICAq
CisgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmlyc3QgY2hhcmFjdGVyIHdoaWNoIHdpbGwg
YmUgY29waWVkCisgICAqIEBwYXJhbSBzdGFydExlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgdG8gZXh0cmFjdAorICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSB0YXJnZXQgYnVmZmVyIGZvciBl
eHRyYWN0aW9uCisgICAqIEBwYXJhbSB0YXJnZXRMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgdGFy
Z2V0IGJ1ZmZlcgorICAgKiBAcGFyYW0gY29kZXBhZ2UgdGhlIGRlc2lyZWQgY29kZXBhZ2UgZm9y
IHRoZSBjaGFyYWN0ZXJzLiAgMCBoYXMKKyAgICogdGhlIHNwZWNpYWwgbWVhbmluZyBvZiB0aGUg
ZGVmYXVsdCBjb2RlcGFnZQorICAgKiBJZiA8Y29kZT5jb2RlcGFnZTwvY29kZT4gaXMgYW4gZW1w
dHkgc3RyaW5nICg8Y29kZT4iIjwvY29kZT4pLAorICAgKiB0aGVuIGEgc2ltcGxlIGNvbnZlcnNp
b24gaXMgcGVyZm9ybWVkIG9uIHRoZSBjb2RlcGFnZS1pbnZhcmlhbnQKKyAgICogc3Vic2V0ICgi
aW52YXJpYW50IGNoYXJhY3RlcnMiKSBvZiB0aGUgcGxhdGZvcm0gZW5jb2RpbmcuIFNlZSB1dHlw
ZXMuaC4KKyAgICogSWYgPFRUPnRhcmdldDwvVFQ+IGlzIE5VTEwsIHRoZW4gdGhlIG51bWJlciBv
ZiBieXRlcyByZXF1aXJlZCBmb3IKKyAgICogPFRUPnRhcmdldDwvVFQ+IGlzIHJldHVybmVkLgor
ICAgKiBAcmV0dXJuIHRoZSBvdXRwdXQgc3RyaW5nIGxlbmd0aCwgbm90IGluY2x1ZGluZyB0aGUg
dGVybWluYXRpbmcgTlVMCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdCBl
eHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgIGludDMyX3Qgc3RhcnRMZW5ndGgsCisg
ICAgICAgICAgIGNoYXIgKnRhcmdldCwKKyAgICAgICAgICAgdWludDMyX3QgdGFyZ2V0TGVuZ3Ro
LAorICAgICAgICAgICBjb25zdCBjaGFyICpjb2RlcGFnZSkgY29uc3Q7CisKKyAgLyoqCisgICAq
IENvbnZlcnQgdGhlIFVuaWNvZGVTdHJpbmcgaW50byBhIGNvZGVwYWdlIHN0cmluZyB1c2luZyBh
biBleGlzdGluZyBVQ29udmVydGVyLgorICAgKiBUaGUgb3V0cHV0IHN0cmluZyBpcyBOVUwtdGVy
bWluYXRlZCBpZiBwb3NzaWJsZS4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiBhdm9pZHMgdGhl
IG92ZXJoZWFkIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBjb252ZXJ0ZXIgaWYKKyAgICogbXVs
dGlwbGUgc3RyaW5ncyBhcmUgZXh0cmFjdGVkLgorICAgKgorICAgKiBAcGFyYW0gZGVzdCBkZXN0
aW5hdGlvbiBzdHJpbmcgYnVmZmVyLCBjYW4gYmUgTlVMTCBpZiBkZXN0Q2FwYWNpdHk9PTAKKyAg
ICogQHBhcmFtIGRlc3RDYXBhY2l0eSB0aGUgbnVtYmVyIG9mIGNoYXJzIGF2YWlsYWJsZSBhdCBk
ZXN0CisgICAqIEBwYXJhbSBjbnYgdGhlIGNvbnZlcnRlciBvYmplY3QgdG8gYmUgdXNlZCAodWNu
dl9yZXNldEZyb21Vbmljb2RlKCkgd2lsbCBiZSBjYWxsZWQpLAorICAgKiAgICAgICAgb3IgTlVM
TCBmb3IgdGhlIGRlZmF1bHQgY29udmVydGVyCisgICAqIEBwYXJhbSBlcnJvckNvZGUgbm9ybWFs
IElDVSBlcnJvciBjb2RlCisgICAqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IHN0
cmluZywgbm90IGNvdW50aW5nIHRoZSB0ZXJtaW5hdGluZyBOVUw7CisgICAqICAgICAgICAgaWYg
dGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gZGVzdENhcGFjaXR5LCB0aGVuIHRoZSBzdHJpbmcg
d2lsbCBub3QgZml0CisgICAqICAgICAgICAgYW5kIGEgYnVmZmVyIG9mIHRoZSBpbmRpY2F0ZWQg
bGVuZ3RoIHdvdWxkIG5lZWQgdG8gYmUgcGFzc2VkIGluCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW50MzJfdCBleHRyYWN0KGNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5
LAorICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlciAqY252LAorICAgICAgICAgICAgICAgICAg
VUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKworI2VuZGlmCisKKyAgLyoqCisgICAqIENy
ZWF0ZSBhIHRlbXBvcmFyeSBzdWJzdHJpbmcgZm9yIHRoZSBzcGVjaWZpZWQgcmFuZ2UuCisgICAq
IFVubGlrZSB0aGUgc3Vic3RyaW5nIGNvbnN0cnVjdG9yIGFuZCBzZXRUbygpIGZ1bmN0aW9ucywK
KyAgICogdGhlIG9iamVjdCByZXR1cm5lZCBoZXJlIHdpbGwgYmUgYSByZWFkLW9ubHkgYWxpYXMg
KHVzaW5nIGdldEJ1ZmZlcigpKQorICAgKiByYXRoZXIgdGhhbiBjb3B5aW5nIHRoZSB0ZXh0Lgor
ICAgKiBBcyBhIHJlc3VsdCwgdGhpcyBzdWJzdHJpbmcgb3BlcmF0aW9uIGlzIG11Y2ggZmFzdGVy
IGJ1dCByZXF1aXJlcworICAgKiB0aGF0IHRoZSBvcmlnaW5hbCBzdHJpbmcgbm90IGJlIG1vZGlm
aWVkIG9yIGRlbGV0ZWQgZHVyaW5nIHRoZSBsaWZldGltZQorICAgKiBvZiB0aGUgcmV0dXJuZWQg
c3Vic3RyaW5nIG9iamVjdC4KKyAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjdGVyIHZpc2libGUgaW4gdGhlIHN1YnN0cmluZworICAgKiBAcGFyYW0gbGVuZ3RoIGxl
bmd0aCBvZiB0aGUgc3Vic3RyaW5nCisgICAqIEByZXR1cm4gYSByZWFkLW9ubHkgYWxpYXMgVW5p
Y29kZVN0cmluZyBvYmplY3QgZm9yIHRoZSBzdWJzdHJpbmcKKyAgICogQHN0YWJsZSBJQ1UgNC40
CisgICAqLworICBVbmljb2RlU3RyaW5nIHRlbXBTdWJTdHJpbmcoaW50MzJfdCBzdGFydD0wLCBp
bnQzMl90IGxlbmd0aD1JTlQzMl9NQVgpIGNvbnN0OworCisgIC8qKgorICAgKiBDcmVhdGUgYSB0
ZW1wb3Jhcnkgc3Vic3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIHJhbmdlLgorICAgKiBTYW1lIGFz
IHRlbXBTdWJTdHJpbmcoc3RhcnQsIGxlbmd0aCkgZXhjZXB0IHRoYXQgdGhlIHN1YnN0cmluZyBy
YW5nZQorICAgKiBpcyBzcGVjaWZpZWQgYXMgYSAoc3RhcnQsIGxpbWl0KSBwYWlyICh3aXRoIGFu
IGV4Y2x1c2l2ZSBsaW1pdCBpbmRleCkKKyAgICogcmF0aGVyIHRoYW4gYSAoc3RhcnQsIGxlbmd0
aCkgcGFpci4KKyAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVy
IHZpc2libGUgaW4gdGhlIHN1YnN0cmluZworICAgKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVk
aWF0ZWx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgdmlzaWJsZSBpbiB0aGUgc3Vic3Ry
aW5nCisgICAqIEByZXR1cm4gYSByZWFkLW9ubHkgYWxpYXMgVW5pY29kZVN0cmluZyBvYmplY3Qg
Zm9yIHRoZSBzdWJzdHJpbmcKKyAgICogQHN0YWJsZSBJQ1UgNC40CisgICAqLworICBpbmxpbmUg
VW5pY29kZVN0cmluZyB0ZW1wU3ViU3RyaW5nQmV0d2VlbihpbnQzMl90IHN0YXJ0LCBpbnQzMl90
IGxpbWl0PUlOVDMyX01BWCkgY29uc3Q7CisKKyAgLyoqCisgICAqIENvbnZlcnQgdGhlIFVuaWNv
ZGVTdHJpbmcgdG8gVVRGLTggYW5kIHdyaXRlIHRoZSByZXN1bHQKKyAgICogdG8gYSBCeXRlU2lu
ay4gVGhpcyBpcyBjYWxsZWQgYnkgdG9VVEY4U3RyaW5nKCkuCisgICAqIFVucGFpcmVkIHN1cnJv
Z2F0ZXMgYXJlIHJlcGxhY2VkIHdpdGggVStGRkZELgorICAgKiBDYWxscyB1X3N0clRvVVRGOFdp
dGhTdWIoKS4KKyAgICoKKyAgICogQHBhcmFtIHNpbmsgQSBCeXRlU2luayB0byB3aGljaCB0aGUg
VVRGLTggdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGlzIHdyaXR0ZW4uCisgICAqICAgICAgICAgICAg
IHNpbmsuRmx1c2goKSBpcyBjYWxsZWQgYXQgdGhlIGVuZC4KKyAgICogQHN0YWJsZSBJQ1UgNC4y
CisgICAqIEBzZWUgdG9VVEY4U3RyaW5nCisgICAqLworICB2b2lkIHRvVVRGOChCeXRlU2luayAm
c2luaykgY29uc3Q7CisKKyNpZiBVX0hBVkVfU1REX1NUUklORworCisgIC8qKgorICAgKiBDb252
ZXJ0IHRoZSBVbmljb2RlU3RyaW5nIHRvIFVURi04IGFuZCBhcHBlbmQgdGhlIHJlc3VsdAorICAg
KiB0byBhIHN0YW5kYXJkIHN0cmluZy4KKyAgICogVW5wYWlyZWQgc3Vycm9nYXRlcyBhcmUgcmVw
bGFjZWQgd2l0aCBVK0ZGRkQuCisgICAqIENhbGxzIHRvVVRGOCgpLgorICAgKgorICAgKiBAcGFy
YW0gcmVzdWx0IEEgc3RhbmRhcmQgc3RyaW5nIChvciBhIGNvbXBhdGlibGUgb2JqZWN0KQorICAg
KiAgICAgICAgdG8gd2hpY2ggdGhlIFVURi04IHZlcnNpb24gb2YgdGhlIHN0cmluZyBpcyBhcHBl
bmRlZC4KKyAgICogQHJldHVybiBUaGUgc3RyaW5nIG9iamVjdC4KKyAgICogQHN0YWJsZSBJQ1Ug
NC4yCisgICAqIEBzZWUgdG9VVEY4CisgICAqLworICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcz4KKyAgU3RyaW5nQ2xhc3MgJnRvVVRGOFN0cmluZyhTdHJpbmdDbGFzcyAmcmVzdWx0KSBj
b25zdCB7CisgICAgU3RyaW5nQnl0ZVNpbms8U3RyaW5nQ2xhc3M+IHNicygmcmVzdWx0KTsKKyAg
ICB0b1VURjgoc2JzKTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyNlbmRpZgorCisgIC8q
KgorICAgKiBDb252ZXJ0IHRoZSBVbmljb2RlU3RyaW5nIHRvIFVURi0zMi4KKyAgICogVW5wYWly
ZWQgc3Vycm9nYXRlcyBhcmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQuCisgICAqIENhbGxzIHVfc3Ry
VG9VVEYzMldpdGhTdWIoKS4KKyAgICoKKyAgICogQHBhcmFtIHV0ZjMyIGRlc3RpbmF0aW9uIHN0
cmluZyBidWZmZXIsIGNhbiBiZSBOVUxMIGlmIGNhcGFjaXR5PT0wCisgICAqIEBwYXJhbSBjYXBh
Y2l0eSB0aGUgbnVtYmVyIG9mIFVDaGFyMzJzIGF2YWlsYWJsZSBhdCB1dGYzMgorICAgKiBAcGFy
YW0gZXJyb3JDb2RlIFN0YW5kYXJkIElDVSBlcnJvciBjb2RlLiBJdHMgaW5wdXQgdmFsdWUgbXVz
dAorICAgKiAgICAgICAgICAgICAgICAgIHBhc3MgdGhlIFVfU1VDQ0VTUygpIHRlc3QsIG9yIGVs
c2UgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAgICogICAgICAgICAgICAgICAgICBpbW1lZGlhdGVs
eS4gQ2hlY2sgZm9yIFVfRkFJTFVSRSgpIG9uIG91dHB1dCBvciB1c2Ugd2l0aAorICAgKiAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIGNoYWluaW5nLiAoU2VlIFVzZXIgR3VpZGUgZm9yIGRldGFp
bHMuKQorICAgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIFVURi0zMiBzdHJpbmcuCisgICAq
IEBzZWUgZnJvbVVURjMyCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgaW50MzJfdCB0
b1VURjMyKFVDaGFyMzIgKnV0ZjMyLCBpbnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICZlcnJv
ckNvZGUpIGNvbnN0OworCisgIC8qIExlbmd0aCBvcGVyYXRpb25zICovCisKKyAgLyoqCisgICAq
IFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAgICogVGhl
IGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIFVDaGFyIGNvZGUgdW5pdHMgYXJlIGluIHRoZSBVbmlj
b2RlU3RyaW5nLgorICAgKiBJZiB5b3Ugd2FudCB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzLCBw
bGVhc2UgdXNlIGNvdW50Q2hhcjMyKCkuCisgICAqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUg
VW5pY29kZVN0cmluZyBvYmplY3QKKyAgICogQHNlZSBjb3VudENoYXIzMgorICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGxlbmd0aCh2b2lkKSBjb25zdDsKKwor
ICAvKioKKyAgICogQ291bnQgVW5pY29kZSBjb2RlIHBvaW50cyBpbiB0aGUgbGVuZ3RoIFVDaGFy
IGNvZGUgdW5pdHMgb2YgdGhlIHN0cmluZy4KKyAgICogQSBjb2RlIHBvaW50IG1heSBvY2N1cHkg
ZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAgICogQ291bnRpbmcgY29kZSBw
b2ludHMgaW52b2x2ZXMgcmVhZGluZyBhbGwgY29kZSB1bml0cy4KKyAgICoKKyAgICogVGhpcyBm
dW5jdGlvbnMgaXMgYmFzaWNhbGx5IHRoZSBpbnZlcnNlIG9mIG1vdmVJbmRleDMyKCkuCisgICAq
CisgICAqIEBwYXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvZGUgdW5pdCB0byBj
aGVjaworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgVUNoYXIgY29kZSB1bml0cyB0
byBjaGVjaworICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIHNw
ZWNpZmllZCBjb2RlIHVuaXRzCisgICAqIEBzZWUgbGVuZ3RoCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW50MzJfdAorICBjb3VudENoYXIzMihpbnQzMl90IHN0YXJ0PTAsIGludDMy
X3QgbGVuZ3RoPUlOVDMyX01BWCkgY29uc3Q7CisKKyAgLyoqCisgICAqIENoZWNrIGlmIHRoZSBs
ZW5ndGggVUNoYXIgY29kZSB1bml0cyBvZiB0aGUgc3RyaW5nCisgICAqIGNvbnRhaW4gbW9yZSBV
bmljb2RlIGNvZGUgcG9pbnRzIHRoYW4gYSBjZXJ0YWluIG51bWJlci4KKyAgICogVGhpcyBpcyBt
b3JlIGVmZmljaWVudCB0aGFuIGNvdW50aW5nIGFsbCBjb2RlIHBvaW50cyBpbiB0aGlzIHBhcnQg
b2YgdGhlIHN0cmluZworICAgKiBhbmQgY29tcGFyaW5nIHRoYXQgbnVtYmVyIHdpdGggYSB0aHJl
c2hvbGQuCisgICAqIFRoaXMgZnVuY3Rpb24gbWF5IG5vdCBuZWVkIHRvIHNjYW4gdGhlIHN0cmlu
ZyBhdCBhbGwgaWYgdGhlIGxlbmd0aAorICAgKiBmYWxscyB3aXRoaW4gYSBjZXJ0YWluIHJhbmdl
LCBhbmQKKyAgICogbmV2ZXIgbmVlZHMgdG8gY291bnQgbW9yZSB0aGFuICdudW1iZXIrMScgY29k
ZSBwb2ludHMuCisgICAqIExvZ2ljYWxseSBlcXVpdmFsZW50IHRvIChjb3VudENoYXIzMihzdGFy
dCwgbGVuZ3RoKT5udW1iZXIpLgorICAgKiBBIFVuaWNvZGUgY29kZSBwb2ludCBtYXkgb2NjdXB5
IGVpdGhlciBvbmUgb3IgdHdvIFVDaGFyIGNvZGUgdW5pdHMuCisgICAqCisgICAqIEBwYXJhbSBz
dGFydCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvZGUgdW5pdCB0byBjaGVjayAoMCBmb3IgdGhl
IGVudGlyZSBzdHJpbmcpCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBVQ2hhciBj
b2RlIHVuaXRzIHRvIGNoZWNrCisgICAqICAgICAgICAgICAgICAgKHVzZSBJTlQzMl9NQVggZm9y
IHRoZSBlbnRpcmUgc3RyaW5nOyByZW1lbWJlciB0aGF0IHN0YXJ0L2xlbmd0aAorICAgKiAgICAg
ICAgICAgICAgICB2YWx1ZXMgYXJlIHBpbm5lZCkKKyAgICogQHBhcmFtIG51bWJlciBUaGUgbnVt
YmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSAoc3ViKXN0cmluZyBpcyBjb21wYXJlZCBhZ2FpbnN0
CisgICAqICAgICAgICAgICAgICAgdGhlICdudW1iZXInIHBhcmFtZXRlci4KKyAgICogQHJldHVy
biBCb29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIHRoZSBzdHJpbmcgY29udGFpbnMgbW9yZSBVbmlj
b2RlIGNvZGUgcG9pbnRzCisgICAqICAgICAgICAgdGhhbiAnbnVtYmVyJy4gU2FtZSBhcyAodV9j
b3VudENoYXIzMihzLCBsZW5ndGgpPm51bWJlcikuCisgICAqIEBzZWUgY291bnRDaGFyMzIKKyAg
ICogQHNlZSB1X3N0ckhhc01vcmVDaGFyMzJUaGFuCisgICAqIEBzdGFibGUgSUNVIDIuNAorICAg
Ki8KKyAgVUJvb2wKKyAgaGFzTW9yZUNoYXIzMlRoYW4oaW50MzJfdCBzdGFydCwgaW50MzJfdCBs
ZW5ndGgsIGludDMyX3QgbnVtYmVyKSBjb25zdDsKKworICAvKioKKyAgICogRGV0ZXJtaW5lIGlm
IHRoaXMgc3RyaW5nIGlzIGVtcHR5LgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhpcyBzdHJpbmcg
Y29udGFpbnMgMCBjaGFyYWN0ZXJzLCBGQUxTRSBvdGhlcndpc2UuCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIGlzRW1wdHkodm9pZCkgY29uc3Q7CisKKyAgLyoq
CisgICAqIFJldHVybiB0aGUgY2FwYWNpdHkgb2YgdGhlIGludGVybmFsIGJ1ZmZlciBvZiB0aGUg
VW5pY29kZVN0cmluZyBvYmplY3QuCisgICAqIFRoaXMgaXMgdXNlZnVsIHRvZ2V0aGVyIHdpdGgg
dGhlIGdldEJ1ZmZlciBmdW5jdGlvbnMuCisgICAqIFNlZSB0aGVyZSBmb3IgZGV0YWlscy4KKyAg
ICoKKyAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIFVDaGFycyBhdmFpbGFibGUgaW4gdGhlIGlu
dGVybmFsIGJ1ZmZlcgorICAgKiBAc2VlIGdldEJ1ZmZlcgorICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIGlubGluZSBpbnQzMl90IGdldENhcGFjaXR5KHZvaWQpIGNvbnN0OworCisgIC8q
IE90aGVyIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogR2VuZXJhdGUgYSBoYXNoIGNvZGUg
Zm9yIHRoaXMgb2JqZWN0LgorICAgKiBAcmV0dXJuIFRoZSBoYXNoIGNvZGUgb2YgdGhpcyBVbmlj
b2RlU3RyaW5nLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90
IGhhc2hDb2RlKHZvaWQpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBv
YmplY3QgY29udGFpbnMgYSB2YWxpZCBzdHJpbmcuCisgICAqIEEgYm9ndXMgc3RyaW5nIGhhcyBu
byB2YWx1ZS4gSXQgaXMgZGlmZmVyZW50IGZyb20gYW4gZW1wdHkgc3RyaW5nLAorICAgKiBhbHRo
b3VnaCBpbiBib3RoIGNhc2VzIGlzRW1wdHkoKSByZXR1cm5zIFRSVUUgYW5kIGxlbmd0aCgpIHJl
dHVybnMgMC4KKyAgICogc2V0VG9Cb2d1cygpIGFuZCBpc0JvZ3VzKCkgY2FuIGJlIHVzZWQgdG8g
aW5kaWNhdGUgdGhhdCBubyBzdHJpbmcgdmFsdWUgaXMgYXZhaWxhYmxlLgorICAgKiBGb3IgYSBi
b2d1cyBzdHJpbmcsIGdldEJ1ZmZlcigpIGFuZCBnZXRUZXJtaW5hdGVkQnVmZmVyKCkgcmV0dXJu
IE5VTEwsIGFuZAorICAgKiBsZW5ndGgoKSByZXR1cm5zIDAuCisgICAqCisgICAqIEByZXR1cm4g
VFJVRSBpZiB0aGUgc3RyaW5nIGlzIHZhbGlkLCBGQUxTRSBvdGhlcndpc2UKKyAgICogQHNlZSBz
ZXRUb0JvZ3VzKCkKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wg
aXNCb2d1cyh2b2lkKSBjb25zdDsKKworCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorICAvLyBXcml0ZSBvcGVyYXRpb25zCisgIC8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIC8qIEFzc2lnbm1lbnQgb3BlcmF0aW9ucyAq
LworCisgIC8qKgorICAgKiBBc3NpZ25tZW50IG9wZXJhdG9yLiAgUmVwbGFjZSB0aGUgY2hhcmFj
dGVycyBpbiB0aGlzIFVuaWNvZGVTdHJpbmcKKyAgICogd2l0aCB0aGUgY2hhcmFjdGVycyBmcm9t
IDxUVD5zcmNUZXh0PC9UVD4uCisgICAqIEBwYXJhbSBzcmNUZXh0IFRoZSB0ZXh0IGNvbnRhaW5p
bmcgdGhlIGNoYXJhY3RlcnMgdG8gcmVwbGFjZQorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRv
IHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nICZvcGVy
YXRvcj0oY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCk7CisKKyAgLyoqCisgICAqIEFsbW9z
dCB0aGUgc2FtZSBhcyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICogUmVwbGFjZSB0aGUg
Y2hhcmFjdGVycyBpbiB0aGlzIFVuaWNvZGVTdHJpbmcKKyAgICogd2l0aCB0aGUgY2hhcmFjdGVy
cyBmcm9tIDxjb2RlPnNyY1RleHQ8L2NvZGU+LgorICAgKgorICAgKiBUaGlzIGZ1bmN0aW9uIHdv
cmtzIHRoZSBzYW1lIGZvciBhbGwgc3RyaW5ncyBleGNlcHQgZm9yIG9uZXMgdGhhdAorICAgKiBh
cmUgcmVhZG9ubHkgYWxpYXNlcy4KKyAgICogU3RhcnRpbmcgd2l0aCBJQ1UgMi40LCB0aGUgYXNz
aWdubWVudCBvcGVyYXRvciBhbmQgdGhlIGNvcHkgY29uc3RydWN0b3IKKyAgICogYWxsb2NhdGUg
YSBuZXcgYnVmZmVyIGFuZCBjb3B5IHRoZSBidWZmZXIgY29udGVudHMgZXZlbiBmb3IgcmVhZG9u
bHkgYWxpYXNlcy4KKyAgICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBvbGQsIG1vcmUg
ZWZmaWNpZW50IGJ1dCBsZXNzIHNhZmUgYmVoYXZpb3IKKyAgICogb2YgbWFraW5nIHRoaXMgc3Ry
aW5nIGFsc28gYSByZWFkb25seSBhbGlhcyB0byB0aGUgc2FtZSBidWZmZXIuCisgICAqIFRoZSBm
YXN0Q29weUZyb20gZnVuY3Rpb24gbXVzdCBiZSB1c2VkIG9ubHkgaWYgaXQgaXMga25vd24gdGhh
dCB0aGUgbGlmZXRpbWUgb2YKKyAgICogdGhpcyBVbmljb2RlU3RyaW5nIGlzIGF0IGxlYXN0IGFz
IGxvbmcgYXMgdGhlIGxpZmV0aW1lIG9mIHRoZSBhbGlhc2VkIGJ1ZmZlcgorICAgKiBpbmNsdWRp
bmcgaXRzIGNvbnRlbnRzLCBmb3IgZXhhbXBsZSBmb3Igc3RyaW5ncyBmcm9tIHJlc291cmNlIGJ1
bmRsZXMKKyAgICogb3IgYWxpYXNlcyB0byBzdHJpbmcgY29udGVudHMuCisgICAqCisgICAqIEBw
YXJhbSBzcmMgVGhlIHRleHQgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyB0byByZXBsYWNlLgor
ICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi40Cisg
ICAqLworICBVbmljb2RlU3RyaW5nICZmYXN0Q29weUZyb20oY29uc3QgVW5pY29kZVN0cmluZyAm
c3JjKTsKKworICAvKioKKyAgICogQXNzaWdubWVudCBvcGVyYXRvci4gIFJlcGxhY2UgdGhlIGNo
YXJhY3RlcnMgaW4gdGhpcyBVbmljb2RlU3RyaW5nCisgICAqIHdpdGggdGhlIGNvZGUgdW5pdCA8
VFQ+Y2g8L1RUPi4KKyAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHVuaXQgdG8gcmVwbGFjZQorICAg
KiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgb3BlcmF0b3I9IChVQ2hhciBjaCk7CisKKyAgLyoq
CisgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3IuICBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGluIHRo
aXMgVW5pY29kZVN0cmluZworICAgKiB3aXRoIHRoZSBjb2RlIHBvaW50IDxUVD5jaDwvVFQ+Lgor
ICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgdG8gcmVwbGFjZQorICAgKiBAcmV0dXJuIGEg
cmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUg
VW5pY29kZVN0cmluZyYgb3BlcmF0b3I9IChVQ2hhcjMyIGNoKTsKKworICAvKioKKyAgICogU2V0
IHRoZSB0ZXh0IGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY2hhcmFjdGVycwor
ICAgKiBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0
PC9UVD4sIDxUVD5zcmNUZXh0Lmxlbmd0aCgpPC9UVD4pLgorICAgKiA8VFQ+c3JjVGV4dDwvVFQ+
IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhl
IG5ldyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPFRU
PnNyY1RleHQ8L1RUPiB3aGVyZSBuZXcgY2hhcmFjdGVycworICAgKiB3aWxsIGJlIG9idGFpbmVk
CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjIK
KyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5n
JiBzcmNUZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCk7CisKKyAgLyoqCisg
ICAqIFNldCB0aGUgdGV4dCBpbiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QgdG8gdGhlIGNoYXJh
Y3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5z
cmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikuCisgICAqIDxUVD5z
cmNUZXh0PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291
cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZz
ZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IHdoZXJlIG5ldyBjaGFyYWN0ZXJzCisgICAqIHdpbGwg
YmUgb2J0YWluZWQKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUKKyAgICogcmVwbGFjZSBzdHJpbmcuCisgICAq
IEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgIGlu
dDMyX3Qgc3JjTGVuZ3RoKTsKKworICAvKioKKyAgICogU2V0IHRoZSB0ZXh0IGluIHRoZSBVbmlj
b2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY2hhcmFjdGVycyBpbgorICAgKiA8VFQ+c3JjVGV4dDwv
VFQ+LgorICAgKiA8VFQ+c3JjVGV4dDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFt
IHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAqIEByZXR1cm4g
YSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KTsKKwor
ICAvKioKKyAgICogU2V0IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVj
dCB0byB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8VFQ+c3JjQ2hhcnM8L1RUPi4gPFRUPnNyY0No
YXJzPC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgdGhlIHNvdXJj
ZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJl
ciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gc3JjQ2hhcnMuCisgICAqIEByZXR1cm4gYSByZWZl
cmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmlj
b2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICBp
bnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFNldCB0aGUgY2hhcmFjdGVycyBpbiB0
aGUgVW5pY29kZVN0cmluZyBvYmplY3QgdG8gdGhlIGNvZGUgdW5pdAorICAgKiA8VFQ+c3JjQ2hh
cjwvVFQ+LgorICAgKiBAcGFyYW0gc3JjQ2hhciB0aGUgY29kZSB1bml0IHdoaWNoIGJlY29tZXMg
dGhlIFVuaWNvZGVTdHJpbmcncyBjaGFyYWN0ZXIKKyAgICogY29udGVudAorICAgKiBAcmV0dXJu
IGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmlj
b2RlU3RyaW5nJiBzZXRUbyhVQ2hhciBzcmNDaGFyKTsKKworICAvKioKKyAgICogU2V0IHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY29kZSBwb2ludAor
ICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3JjQ2hhciB0aGUgY29kZSBwb2lu
dCB3aGljaCBiZWNvbWVzIHRoZSBVbmljb2RlU3RyaW5nJ3MgY2hhcmFjdGVyCisgICAqIGNvbnRl
bnQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgVW5pY29kZVN0cmluZyYgc2V0VG8oVUNoYXIzMiBzcmNDaGFyKTsKKworICAv
KioKKyAgICogQWxpYXNpbmcgc2V0VG8oKSBmdW5jdGlvbiwgYW5hbG9nb3VzIHRvIHRoZSByZWFk
b25seS1hbGlhc2luZyBVQ2hhciogY29uc3RydWN0b3IuCisgICAqIFRoZSB0ZXh0IHdpbGwgYmUg
dXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LCBidXQKKyAgICogaXQgd2lsbCBub3Qg
YmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5pY29kZVN0cmluZyBpcyBkZXN0cm95ZWQuCisgICAqIFRo
aXMgaGFzIGNvcHktb24td3JpdGUgc2VtYW50aWNzOgorICAgKiBXaGVuIHRoZSBzdHJpbmcgaXMg
bW9kaWZpZWQsIHRoZW4gdGhlIGJ1ZmZlciBpcyBmaXJzdCBjb3BpZWQgaW50bworICAgKiBuZXds
eSBhbGxvY2F0ZWQgbWVtb3J5LgorICAgKiBUaGUgYWxpYXNlZCBidWZmZXIgaXMgbmV2ZXIgbW9k
aWZpZWQuCisgICAqIEluIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhlciBVbmljb2RlU3RyaW5nLCB0
aGUgdGV4dCB3aWxsIGJlIGFsaWFzZWQgYWdhaW4sCisgICAqIHNvIHRoYXQgYm90aCBzdHJpbmdz
IHRoZW4gYWxpYXMgdGhlIHNhbWUgcmVhZG9ubHktdGV4dC4KKyAgICoKKyAgICogQHBhcmFtIGlz
VGVybWluYXRlZCBzcGVjaWZpZXMgaWYgPGNvZGU+dGV4dDwvY29kZT4gaXMgPGNvZGU+TlVMPC9j
b2RlPi10ZXJtaW5hdGVkLgorICAgKiAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSB0
cnVlIGlmIDxjb2RlPnRleHRMZW5ndGg9PS0xPC9jb2RlPi4KKyAgICogQHBhcmFtIHRleHQgVGhl
IGNoYXJhY3RlcnMgdG8gYWxpYXMgZm9yIHRoZSBVbmljb2RlU3RyaW5nLgorICAgKiBAcGFyYW0g
dGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0
PC9jb2RlPiB0byBhbGlhcy4KKyAgICogICAgICAgICAgICAgICAgICAgSWYgLTEsIHRoZW4gdGhp
cyBjb25zdHJ1Y3RvciB3aWxsIGRldGVybWluZSB0aGUgbGVuZ3RoCisgICAqICAgICAgICAgICAg
ICAgICAgIGJ5IGNhbGxpbmcgPGNvZGU+dV9zdHJsZW4oKTwvY29kZT4uCisgICAqIEByZXR1cm4g
YSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNv
ZGVTdHJpbmcgJnNldFRvKFVCb29sIGlzVGVybWluYXRlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVUNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdGV4
dExlbmd0aCk7CisKKyAgLyoqCisgICAqIEFsaWFzaW5nIHNldFRvKCkgZnVuY3Rpb24sIGFuYWxv
Z291cyB0byB0aGUgd3JpdGFibGUtYWxpYXNpbmcgVUNoYXIqIGNvbnN0cnVjdG9yLgorICAgKiBU
aGUgdGV4dCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCwgYnV0Cisg
ICAqIGl0IHdpbGwgbm90IGJlIHJlbGVhc2VkIHdoZW4gdGhlIFVuaWNvZGVTdHJpbmcgaXMgZGVz
dHJveWVkLgorICAgKiBUaGlzIGhhcyB3cml0ZS10aHJvdWdoIHNlbWFudGljczoKKyAgICogRm9y
IGFzIGxvbmcgYXMgdGhlIGNhcGFjaXR5IG9mIHRoZSBidWZmZXIgaXMgc3VmZmljaWVudCwgd3Jp
dGUgb3BlcmF0aW9ucworICAgKiB3aWxsIGRpcmVjdGx5IGFmZmVjdCB0aGUgYnVmZmVyLiBXaGVu
IG1vcmUgY2FwYWNpdHkgaXMgbmVjZXNzYXJ5LCB0aGVuCisgICAqIGEgbmV3IGJ1ZmZlciB3aWxs
IGJlIGFsbG9jYXRlZCBhbmQgdGhlIGNvbnRlbnRzIGNvcGllZCBhcyB3aXRoIHJlZ3VsYXJseQor
ICAgKiBjb25zdHJ1Y3RlZCBzdHJpbmdzLgorICAgKiBJbiBhbiBhc3NpZ25tZW50IHRvIGFub3Ro
ZXIgVW5pY29kZVN0cmluZywgdGhlIGJ1ZmZlciB3aWxsIGJlIGNvcGllZC4KKyAgICogVGhlIGV4
dHJhY3QoVUNoYXIgKmRzdCkgZnVuY3Rpb24gZGV0ZWN0cyB3aGV0aGVyIHRoZSBkc3QgcG9pbnRl
ciBpcyB0aGUgc2FtZQorICAgKiBhcyB0aGUgc3RyaW5nIGJ1ZmZlciBpdHNlbGYgYW5kIHdpbGwg
aW4gdGhpcyBjYXNlIG5vdCBjb3B5IHRoZSBjb250ZW50cy4KKyAgICoKKyAgICogQHBhcmFtIGJ1
ZmZlciBUaGUgY2hhcmFjdGVycyB0byBhbGlhcyBmb3IgdGhlIFVuaWNvZGVTdHJpbmcuCisgICAq
IEBwYXJhbSBidWZmTGVuZ3RoIFRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGluIDxj
b2RlPmJ1ZmZlcjwvY29kZT4gdG8gYWxpYXMuCisgICAqIEBwYXJhbSBidWZmQ2FwYWNpdHkgVGhl
IHNpemUgb2YgPGNvZGU+YnVmZmVyPC9jb2RlPiBpbiBVQ2hhcnMuCisgICAqIEByZXR1cm4gYSBy
ZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVT
dHJpbmcgJnNldFRvKFVDaGFyICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgYnVmZkxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBidWZmQ2FwYWNp
dHkpOworCisgIC8qKgorICAgKiBNYWtlIHRoaXMgVW5pY29kZVN0cmluZyBvYmplY3QgaW52YWxp
ZC4KKyAgICogVGhlIHN0cmluZyB3aWxsIHRlc3QgVFJVRSB3aXRoIGlzQm9ndXMoKS4KKyAgICoK
KyAgICogQSBib2d1cyBzdHJpbmcgaGFzIG5vIHZhbHVlLiBJdCBpcyBkaWZmZXJlbnQgZnJvbSBh
biBlbXB0eSBzdHJpbmcuCisgICAqIEl0IGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgbm8g
c3RyaW5nIHZhbHVlIGlzIGF2YWlsYWJsZS4KKyAgICogZ2V0QnVmZmVyKCkgYW5kIGdldFRlcm1p
bmF0ZWRCdWZmZXIoKSByZXR1cm4gTlVMTCwgYW5kCisgICAqIGxlbmd0aCgpIHJldHVybnMgMC4K
KyAgICoKKyAgICogVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGlzIHVzZWQgdGhyb3VnaG91dCB0aGUg
VW5pY29kZVN0cmluZworICAgKiBpbXBsZW1lbnRhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IGEgVW5p
Y29kZVN0cmluZyBvcGVyYXRpb24gZmFpbGVkLAorICAgKiBhbmQgbWF5IGJlIHVzZWQgaW4gb3Ro
ZXIgZnVuY3Rpb25zLAorICAgKiBlc3BlY2lhbGx5IGJ1dCBub3QgZXhjbHVzaXZlbHkgd2hlbiBz
dWNoIGZ1bmN0aW9ucyBkbyBub3QKKyAgICogdGFrZSBhIFVFcnJvckNvZGUgZm9yIHNpbXBsaWNp
dHkuCisgICAqCisgICAqIFRoZSBmb2xsb3dpbmcgbWV0aG9kcywgYW5kIG5vIG90aGVycywgd2ls
bCBjbGVhciBhIHN0cmluZyBvYmplY3QncyBib2d1cyBmbGFnOgorICAgKiAtIHJlbW92ZSgpCisg
ICAqIC0gcmVtb3ZlKDAsIElOVDMyX01BWCkKKyAgICogLSB0cnVuY2F0ZSgwKQorICAgKiAtIG9w
ZXJhdG9yPSgpIChhc3NpZ25tZW50IG9wZXJhdG9yKQorICAgKiAtIHNldFRvKC4uLikKKyAgICoK
KyAgICogVGhlIHNpbXBsZXN0IHdheXMgdG8gdHVybiBhIGJvZ3VzIHN0cmluZyBpbnRvIGFuIGVt
cHR5IG9uZQorICAgKiBpcyB0byB1c2UgdGhlIHJlbW92ZSgpIGZ1bmN0aW9uLgorICAgKiBFeGFt
cGxlcyBmb3Igb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGVxdWl2YWxlbnQgdG8gInNldCB0byBl
bXB0eSBzdHJpbmciOgorICAgKiBcY29kZQorICAgKiBpZihzLmlzQm9ndXMoKSkgeworICAgKiAg
IHMucmVtb3ZlKCk7ICAgICAgICAgICAvLyBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIChyZW1vdmUg
YWxsKSwgb3IKKyAgICogICBzLnJlbW92ZSgwLCBJTlQzMl9NQVgpOyAvLyBzZXQgdG8gYW4gZW1w
dHkgc3RyaW5nIChyZW1vdmUgYWxsKSwgb3IKKyAgICogICBzLnRydW5jYXRlKDApOyAgICAgICAg
Ly8gc2V0IHRvIGFuIGVtcHR5IHN0cmluZyAoY29tcGxldGUgdHJ1bmNhdGlvbiksIG9yCisgICAq
ICAgcz1Vbmljb2RlU3RyaW5nKCk7ICAgIC8vIGFzc2lnbiBhbiBlbXB0eSBzdHJpbmcsIG9yCisg
ICAqICAgcy5zZXRUbygoVUNoYXIzMiktMSk7IC8vIHNldCB0byBhIHBzZXVkbyBjb2RlIHBvaW50
IHRoYXQgaXMgb3V0IG9mIHJhbmdlLCBvcgorICAgKiAgIHN0YXRpYyBjb25zdCBVQ2hhciBudWw9
MDsKKyAgICogICBzLnNldFRvKCZudWwsIDApOyAgICAgLy8gc2V0IHRvIGFuIGVtcHR5IEMgVW5p
Y29kZSBzdHJpbmcKKyAgICogfQorICAgKiBcZW5kY29kZQorICAgKgorICAgKiBAc2VlIGlzQm9n
dXMoKQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZvaWQgc2V0VG9Cb2d1cygpOwor
CisgIC8qKgorICAgKiBTZXQgdGhlIGNoYXJhY3RlciBhdCB0aGUgc3BlY2lmaWVkIG9mZnNldCB0
byB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci4KKyAgICogQHBhcmFtIG9mZnNldCBBIHZhbGlkIG9m
ZnNldCBpbnRvIHRoZSB0ZXh0IG9mIHRoZSBjaGFyYWN0ZXIgdG8gc2V0CisgICAqIEBwYXJhbSBj
aCBUaGUgbmV3IGNoYXJhY3RlcgorICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIHRoaXMKKyAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiBzZXRDaGFyQXQoaW50
MzJfdCBvZmZzZXQsCisgICAgICAgICAgICAgICBVQ2hhciBjaCk7CisKKworICAvKiBBcHBlbmQg
b3BlcmF0aW9ucyAqLworCisgIC8qKgorICAgKiBBcHBlbmQgb3BlcmF0b3IuIEFwcGVuZCB0aGUg
Y29kZSB1bml0IDxUVD5jaDwvVFQ+IHRvIHRoZSBVbmljb2RlU3RyaW5nCisgICAqIG9iamVjdC4K
KyAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHVuaXQgdG8gYmUgYXBwZW5kZWQKKyAgICogQHJldHVy
biBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyBpbmxp
bmUgIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9yKz0gKFVDaGFyIGNoKTsKKworICAvKioKKyAgICog
QXBwZW5kIG9wZXJhdG9yLiBBcHBlbmQgdGhlIGNvZGUgcG9pbnQgPFRUPmNoPC9UVD4gdG8gdGhl
IFVuaWNvZGVTdHJpbmcKKyAgICogb2JqZWN0LgorICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9p
bnQgdG8gYmUgYXBwZW5kZWQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyBpbmxpbmUgIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9y
Kz0gKFVDaGFyMzIgY2gpOworCisgIC8qKgorICAgKiBBcHBlbmQgb3BlcmF0b3IuIEFwcGVuZCB0
aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IHRvIHRoZQorICAgKiBVbmljb2RlU3Ry
aW5nIG9iamVjdCBhdCBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxUVD5zcmNUZXh0PC9UVD4gaXMK
KyAgICogbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0
aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9y
Kz0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpOworCisgIC8qKgorICAgKiBBcHBlbmQg
dGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAg
ICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikgdG8g
dGhlCisgICAqIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4g
PFRUPnNyY1RleHQ8L1RUPgorICAgKiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzcmNU
ZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3Rh
cnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMK
KyAgICogd2lsbCBiZSBvYnRhaW5lZAorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluCisgICAqIHRoZSBhcHBlbmQgc3Ry
aW5nCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVW5pY29kZVN0
cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIEFwcGVuZCB0aGUgY2hhcmFjdGVy
cyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IHRvIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCBhdAorICAg
KiBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxUVD5zcmNUZXh0PC9UVD4gaXMgbm90IG1vZGlmaWVk
LgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMK
KyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChjb25zdCBVbmljb2RlU3RyaW5n
JiBzcmNUZXh0KTsKKworICAvKioKKyAgICogQXBwZW5kIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5z
cmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5z
cmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KSB0byB0aGUgVW5pY29kZVN0cmluZworICAgKiBvYmpl
Y3QgYXQgb2Zmc2V0CisgICAqIDxUVD5zdGFydDwvVFQ+LiA8VFQ+c3JjQ2hhcnM8L1RUPiBpcyBu
b3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3
IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3Jj
Q2hhcnM8L1RUPiB3aGVyZSBuZXcgY2hhcmFjdGVycworICAgKiB3aWxsIGJlIG9idGFpbmVkCisg
ICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmND
aGFyczwvVFQ+IGluCisgICAqIHRoZSBhcHBlbmQgc3RyaW5nCisgICAqIEByZXR1cm4gYSByZWZl
cmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmlj
b2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKKworICAvKioK
KyAgICogQXBwZW5kIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IHRvIHRoZSBV
bmljb2RlU3RyaW5nIG9iamVjdAorICAgKiBhdCBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxUVD5z
cmNDaGFyczwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0NoYXJzIHRoZSBz
b3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBu
dW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+CisgICAqIEBy
ZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAg
ICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgorICAgKiBBcHBlbmQgdGhlIGNv
ZGUgdW5pdCA8VFQ+c3JjQ2hhcjwvVFQ+IHRvIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAg
ICogQHBhcmFtIHNyY0NoYXIgdGhlIGNvZGUgdW5pdCB0byBhcHBlbmQKKyAgICogQHJldHVybiBh
IHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5l
IFVuaWNvZGVTdHJpbmcmIGFwcGVuZChVQ2hhciBzcmNDaGFyKTsKKworICAvKioKKyAgICogQXBw
ZW5kIHRoZSBjb2RlIHBvaW50IDxUVD5zcmNDaGFyPC9UVD4gdG8gdGhlIFVuaWNvZGVTdHJpbmcg
b2JqZWN0LgorICAgKiBAcGFyYW0gc3JjQ2hhciB0aGUgY29kZSBwb2ludCB0byBhcHBlbmQKKyAg
ICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChVQ2hhcjMyIHNyY0NoYXIpOworCisK
KyAgLyogSW5zZXJ0IG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogSW5zZXJ0IHRoZSBjaGFy
YWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3JjU3Rh
cnQ8L1RUPiwgPFRUPnNyY1N0YXJ0ICsgc3JjTGVuZ3RoPC9UVD4pIGludG8gdGhlIFVuaWNvZGVT
dHJpbmcKKyAgICogb2JqZWN0IGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4gPFRUPnNyY1RleHQ8
L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IHdoZXJl
IHRoZSBpbnNlcnRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9y
IHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRv
IDxUVD5zcmNUZXh0PC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBvYnRh
aW5lZAorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8
VFQ+c3JjVGV4dDwvVFQ+IGluCisgICAqIHRoZSBpbnNlcnQgc3RyaW5nCisgICAqIEByZXR1cm4g
YSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBVbmljb2RlU3RyaW5nJiBpbnNlcnQoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgIGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAor
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgorICAgKiBJbnNlcnQgdGhl
IGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbnRvIHRoZSBVbmljb2RlU3RyaW5nIG9i
amVjdAorICAgKiBhdCBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxUVD5zcmNUZXh0PC9UVD4gaXMg
bm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCB3aGVyZSB0aGUgaW5z
ZXJ0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3
IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFi
bGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQzMl90
IHN0YXJ0LAorICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCk7CisKKyAg
LyoqCisgICAqIEluc2VydCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiBpbiB0
aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5n
dGg8L1RUPikgaW50byB0aGUgVW5pY29kZVN0cmluZworICAgKiAgb2JqZWN0IGF0IG9mZnNldCA8
VFQ+c3RhcnQ8L1RUPi4gPFRUPnNyY0NoYXJzPC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBA
cGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgaW5zZXJ0aW9uIGJlZ2lucworICAg
KiBAcGFyYW0gc3JjQ2hhcnMgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAq
IEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPFRUPnNyY0NoYXJzPC9UVD4gd2hlcmUg
bmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBvYnRhaW5lZAorICAgKiBAcGFyYW0gc3JjTGVu
Z3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPgorICAgKiBp
biB0aGUgaW5zZXJ0IHN0cmluZworICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgaW5zZXJ0
KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgp
OworCisgIC8qKgorICAgKiBJbnNlcnQgdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9U
VD4gaW50byB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QKKyAgICogYXQgb2Zmc2V0IDxUVD5zdGFy
dDwvVFQ+LiA8VFQ+c3JjQ2hhcnM8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBz
dGFydCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBz
cmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNy
Y0xlbmd0aCB0aGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycyBpbiBzcmNDaGFycy4KKyAg
ICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpOworCisgIC8qKgorICAgKiBJbnNlcnQgdGhlIGNvZGUgdW5pdCA8VFQ+c3JjQ2hhcjwvVFQ+
IGludG8gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0CisgICAqIG9mZnNldCA8VFQ+c3RhcnQ8
L1RUPi4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIGluc2VydGlv
biBvY2N1cnMKKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIGNvZGUgdW5pdCB0byBpbnNlcnQKKyAg
ICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgVUNoYXIgc3JjQ2hhcik7CisKKyAgLyoqCisgICAqIEluc2VydCB0aGUgY29kZSBwb2lu
dCA8VFQ+c3JjQ2hhcjwvVFQ+IGludG8gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0CisgICAq
IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQg
d2hpY2ggdGhlIGluc2VydGlvbiBvY2N1cnMKKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIGNvZGUg
cG9pbnQgdG8gaW5zZXJ0CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBpbnNlcnQoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgICAgIFVDaGFyMzIgc3JjQ2hhcik7CisKKworICAvKiBSZXBs
YWNlIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBp
biB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RU
Pikgd2l0aCB0aGUgY2hhcmFjdGVycyBpbgorICAgKiA8VFQ+c3JjVGV4dDwvVFQ+IGluIHRoZSBy
YW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwv
VFQ+KS4KKyAgICogPFRUPnNyY1RleHQ8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJh
bSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMK
KyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gcmVwbGFjZS4g
VGhlIGNoYXJhY3RlciBhdAorICAgKiA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPiBpcyBub3QgbW9k
aWZpZWQuCisgICAqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFj
dGVycworICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9U
VD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBvYnRhaW5lZAorICAgKiBAcGFy
YW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+
IGluCisgICAqIHRoZSByZXBsYWNlIHN0cmluZworICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRv
IHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiByZXBs
YWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAg
ICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAorICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKKworICAvKioKKyAg
ICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFydDwv
VFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikKKyAgICogd2l0aCB0aGUgY2hhcmFjdGVycyBp
biA8VFQ+c3JjVGV4dDwvVFQ+LiAgPFRUPnNyY1RleHQ8L1RUPiBpcworICAgKiAgbm90IG1vZGlm
aWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBv
cGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0
ZXJzIHRvIHJlcGxhY2UuIFRoZSBjaGFyYWN0ZXIgYXQKKyAgICogPFRUPnN0YXJ0ICsgbGVuZ3Ro
PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZv
ciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyYgcmVwbGFjZShpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgIGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpOworCisgIC8qKgorICAgKiBSZXBsYWNlIHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCAr
IGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIDxUVD5zcmNDaGFyczwv
VFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCAr
IHNyY0xlbmd0aDwvVFQ+KS4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaXMgbm90IG1vZGlmaWVk
LgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVy
YXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IHRvIHJlcGxhY2UuICBUaGUgY2hhcmFjdGVyIGF0CisgICAqIDxUVD5zdGFydCArIGxlbmd0aDwv
VFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0NoYXJzIHRoZSBzb3VyY2UgZm9y
IHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRv
IDxUVD5zcmNDaGFyczwvVFQ+IHdoZXJlIG5ldyBjaGFyYWN0ZXJzCisgICAqIHdpbGwgYmUgb2J0
YWluZWQKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4g
PFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4gdGhlIHJlcGxhY2Ugc3RyaW5nCisgICAqIEByZXR1
cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVu
aWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICBpbnQzMl90
IGxlbmd0aCwKKyAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAg
ICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisK
KyAgLyoqCisgICAqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCisgICAqIFs8
VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhlIGNoYXJhY3Rl
cnMgaW4KKyAgICogPFRUPnNyY0NoYXJzPC9UVD4uICA8VFQ+c3JjQ2hhcnM8L1RUPiBpcyBub3Qg
bW9kaWZpZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBs
YWNlIG9wZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFtIGxlbmd0aCBudW1iZXIgb2YgY2hhcmFj
dGVycyB0byByZXBsYWNlLiAgVGhlIGNoYXJhY3RlciBhdAorICAgKiA8VFQ+c3RhcnQgKyBsZW5n
dGg8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUgc291cmNl
IGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVy
IG9mIFVuaWNvZGUgY2hhcmFjdGVycyBpbiBzcmNDaGFycworICAgKiBAcmV0dXJuIGEgcmVmZXJl
bmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5pY29k
ZVN0cmluZyYgcmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICBp
bnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMg
aW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9U
VD4pIHdpdGggdGhlIGNvZGUgdW5pdAorICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFy
YW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5z
CisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2Uu
ICBUaGUgY2hhcmFjdGVyIGF0CisgICAqIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+IGlzIG5vdCBt
b2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIG5ldyBjb2RlIHVuaXQKKyAgICogQHJl
dHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAg
aW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAg
ICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICBVQ2hhciBzcmNDaGFyKTsKKworICAvKioK
KyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFy
dDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgd2l0aCB0aGUgY29kZSBwb2ludAorICAg
KiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGlj
aCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuICBUaGUgY2hhcmFjdGVyIGF0CisgICAqIDxU
VD5zdGFydCArIGxlbmd0aDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0No
YXIgdGhlIG5ldyBjb2RlIHBvaW50CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcwor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBs
YWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAg
ICAgICAgVUNoYXIzMiBzcmNDaGFyKTsKKworICAvKioKKyAgICogUmVwbGFjZSB0aGUgY2hhcmFj
dGVycyBpbiB0aGUgcmFuZ2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+bGltaXQ8L1RUPikKKyAgICog
d2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+LiA8VFQ+c3JjVGV4dDwvVFQ+
IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2gg
dGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNl
dCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIHJlcGxhY2UgcmFuZ2UKKyAgICogQHBhcmFtIHNy
Y1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAqIEByZXR1cm4gYSBy
ZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBV
bmljb2RlU3RyaW5nJiByZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAg
ICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYg
c3JjVGV4dCk7CisKKyAgLyoqCisgICAqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJh
bmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPmxpbWl0PC9UVD4pCisgICAqIHdpdGggdGhlIGNoYXJh
Y3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFy
dDwvVFQ+LCA8VFQ+c3JjTGltaXQ8L1RUPikuIDxUVD5zcmNUZXh0PC9UVD4gaXMgbm90IG1vZGlm
aWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBv
cGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsaW1pdCB0aGUgb2Zmc2V0IGltbWVkaWF0ZWx5
IGZvbGxvd2luZyB0aGUgcmVwbGFjZSByYW5nZQorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291
cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZz
ZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiB3aGVyZSBuZXcgY2hhcmFjdGVycworICAgKiB3aWxs
IGJlIG9idGFpbmVkCisgICAqIEBwYXJhbSBzcmNMaW1pdCB0aGUgb2Zmc2V0IGltbWVkaWF0ZWx5
IGZvbGxvd2luZyB0aGUgcmFuZ2UgdG8gY29weQorICAgKiBpbiA8VFQ+c3JjVGV4dDwvVFQ+Cisg
ICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0YXJ0
LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgICAgY29uc3Qg
VW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0
LAorICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGltaXQpOworCisgIC8qKgorICAgKiBSZXBs
YWNlIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHRleHQuCisgICAq
IEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0g
c3RhcnQKKyAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgKiBAcGFyYW0gbGltaXQgdGhlIGVuZGlu
ZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1pdAorICAgKiA8PSBsZW5ndGgo
KTwvY29kZT4uCisgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRvIHJlcGxhY2UgY2hhcmFjdGVy
cyA8Y29kZT5zdGFydDwvY29kZT4KKyAgICogdG8gPGNvZGU+bGltaXQgLSAxPC9jb2RlPgorICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZpcnR1YWwgdm9pZCBoYW5kbGVSZXBsYWNlQmV0
d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHRleHQpOworCisgIC8qKgorICAgKiBSZXBsYWNlYWJsZSBBUEkKKyAg
ICogQHJldHVybiBUUlVFIGlmIGl0IGhhcyBNZXRhRGF0YQorICAgKiBAc3RhYmxlIElDVSAyLjQK
KyAgICovCisgIHZpcnR1YWwgVUJvb2wgaGFzTWV0YURhdGEoKSBjb25zdDsKKworICAvKioKKyAg
ICogQ29weSBhIHN1YnN0cmluZyBvZiB0aGlzIG9iamVjdCwgcmV0YWluaW5nIGF0dHJpYnV0ZSAo
b3V0LW9mLWJhbmQpCisgICAqIGluZm9ybWF0aW9uLiAgVGhpcyBtZXRob2QgaXMgdXNlZCB0byBk
dXBsaWNhdGUgb3IgcmVvcmRlciBzdWJzdHJpbmdzLgorICAgKiBUaGUgZGVzdGluYXRpb24gaW5k
ZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICAgKgorICAgKiBAcGFyYW0g
c3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9
CisgICAqIGxpbWl0PC9jb2RlPi4KKyAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5kZXgs
IGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQgPD0KKyAgICogbGVuZ3RoKCk8L2NvZGU+
LgorICAgKiBAcGFyYW0gZGVzdCB0aGUgZGVzdGluYXRpb24gaW5kZXguICBUaGUgY2hhcmFjdGVy
cyBmcm9tCisgICAqIDxjb2RlPnN0YXJ0Li5saW1pdC0xPC9jb2RlPiB3aWxsIGJlIGNvcGllZCB0
byA8Y29kZT5kZXN0PC9jb2RlPi4KKyAgICogSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9k
IG1heSBhc3N1bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8CisgICAqIGRlc3QgPj0gbGlt
aXQ8L2NvZGU+LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZpcnR1YWwgdm9pZCBj
b3B5KGludDMyX3Qgc3RhcnQsIGludDMyX3QgbGltaXQsIGludDMyX3QgZGVzdCk7CisKKyAgLyog
U2VhcmNoIGFuZCByZXBsYWNlIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogUmVwbGFjZSBh
bGwgb2NjdXJyZW5jZXMgb2YgY2hhcmFjdGVycyBpbiBvbGRUZXh0IHdpdGggdGhlIGNoYXJhY3Rl
cnMKKyAgICogaW4gbmV3VGV4dAorICAgKiBAcGFyYW0gb2xkVGV4dCB0aGUgdGV4dCBjb250YWlu
aW5nIHRoZSBzZWFyY2ggdGV4dAorICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCBjb250YWlu
aW5nIHRoZSByZXBsYWNlbWVudCB0ZXh0CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhp
cworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBm
aW5kQW5kUmVwbGFjZShjb25zdCBVbmljb2RlU3RyaW5nJiBvbGRUZXh0LAorICAgICAgICAgICAg
ICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5ld1RleHQpOworCisgIC8qKgorICAgKiBSZXBsYWNl
IGFsbCBvY2N1cnJlbmNlcyBvZiBjaGFyYWN0ZXJzIGluIG9sZFRleHQgd2l0aCBjaGFyYWN0ZXJz
CisgICAqIGluIG5ld1RleHQKKyAgICogaW4gdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRU
PnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIHN0YXJ0IG9mIHRo
ZSByYW5nZSBpbiB3aGljaCByZXBsYWNlIHdpbGwgcGVyZm9ybWVkCisgICAqIEBwYXJhbSBsZW5n
dGggdGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2UgaW4gd2hpY2ggcmVwbGFjZSB3aWxsIGJlIHBlcmZv
cm1lZAorICAgKiBAcGFyYW0gb2xkVGV4dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSBzZWFyY2gg
dGV4dAorICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSByZXBsYWNl
bWVudCB0ZXh0CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBmaW5kQW5kUmVwbGFjZShp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisgICAgICAgICAgICAgICAgY29u
c3QgVW5pY29kZVN0cmluZyYgbmV3VGV4dCk7CisKKyAgLyoqCisgICAqIFJlcGxhY2UgYWxsIG9j
Y3VycmVuY2VzIG9mIGNoYXJhY3RlcnMgaW4gb2xkVGV4dCBpbiB0aGUgcmFuZ2UKKyAgICogWzxU
VD5vbGRTdGFydDwvVFQ+LCA8VFQ+b2xkU3RhcnQgKyBvbGRMZW5ndGg8L1RUPikgd2l0aCB0aGUg
Y2hhcmFjdGVycworICAgKiBpbiBuZXdUZXh0IGluIHRoZSByYW5nZQorICAgKiBbPFRUPm5ld1N0
YXJ0PC9UVD4sIDxUVD5uZXdTdGFydCArIG5ld0xlbmd0aDwvVFQ+KQorICAgKiBpbiB0aGUgcmFu
Z2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikuCisgICAqIEBwYXJh
bSBzdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGluIHdoaWNoIHJlcGxhY2Ugd2lsbCBwZXJm
b3JtZWQKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSByYW5nZSBpbiB3aGlj
aCByZXBsYWNlIHdpbGwgYmUgcGVyZm9ybWVkCisgICAqIEBwYXJhbSBvbGRUZXh0IHRoZSB0ZXh0
IGNvbnRhaW5pbmcgdGhlIHNlYXJjaCB0ZXh0CisgICAqIEBwYXJhbSBvbGRTdGFydCB0aGUgc3Rh
cnQgb2YgdGhlIHNlYXJjaCByYW5nZSBpbiA8VFQ+b2xkVGV4dDwvVFQ+CisgICAqIEBwYXJhbSBv
bGRMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgc2VhcmNoIHJhbmdlIGluIDxUVD5vbGRUZXh0PC9U
VD4KKyAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgY29udGFpbmluZyB0aGUgcmVwbGFjZW1l
bnQgdGV4dAorICAgKiBAcGFyYW0gbmV3U3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSByZXBsYWNlbWVu
dCByYW5nZSBpbiA8VFQ+bmV3VGV4dDwvVFQ+CisgICAqIEBwYXJhbSBuZXdMZW5ndGggdGhlIGxl
bmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgcmFuZ2UgaW4gPFRUPm5ld1RleHQ8L1RUPgorICAgKiBA
cmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBVbmljb2RlU3RyaW5nJiBmaW5kQW5kUmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJp
bmcmIG9sZFRleHQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBvbGRTdGFydCwKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IG9sZExlbmd0aCwKKyAgICAgICAgICAgICAgICBjb25zdCBVbmljb2Rl
U3RyaW5nJiBuZXdUZXh0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbmV3U3RhcnQsCisgICAg
ICAgICAgICAgICAgaW50MzJfdCBuZXdMZW5ndGgpOworCisKKyAgLyogUmVtb3ZlIG9wZXJhdGlv
bnMgKi8KKworICAvKioKKyAgICogUmVtb3ZlIGFsbCBjaGFyYWN0ZXJzIGZyb20gdGhlIFVuaWNv
ZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICog
QHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgcmVtb3ZlKHZv
aWQpOworCisgIC8qKgorICAgKiBSZW1vdmUgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCisg
ICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIGZyb20gdGhlIFVu
aWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBvZiB0aGUg
Zmlyc3QgY2hhcmFjdGVyIHRvIHJlbW92ZQorICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyB0byByZW1vdmUKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlz
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJl
bW92ZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgbGVuZ3RoID0gKGludDMyX3QpSU5UMzJfTUFYKTsKKworICAvKioKKyAgICogUmVtb3ZlIHRo
ZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5saW1p
dDwvVFQ+KSBmcm9tIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAgICogQHBhcmFtIHN0YXJ0
IHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byByZW1vdmUKKyAgICogQHBhcmFt
IGxpbWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSByYW5nZSB0byByZW1v
dmUKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlbW92ZUJldHdlZW4oaW50MzJfdCBz
dGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1p
dCA9IChpbnQzMl90KUlOVDMyX01BWCk7CisKKyAgLyoqCisgICAqIFJldGFpbiBvbmx5IHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5s
aW1pdDwvY29kZT4pIGZyb20gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBSZW1vdmVz
IGNoYXJhY3RlcnMgYmVmb3JlIDxjb2RlPnN0YXJ0PC9jb2RlPiBhbmQgYXQgYW5kIGFmdGVyIDxj
b2RlPmxpbWl0PC9jb2RlPi4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgb2YgdGhlIGZp
cnN0IGNoYXJhY3RlciB0byByZXRhaW4KKyAgICogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgaW1t
ZWRpYXRlbHkgZm9sbG93aW5nIHRoZSByYW5nZSB0byByZXRhaW4KKyAgICogQHJldHVybiBhIHJl
ZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDQuNAorICAgKi8KKyAgaW5saW5lIFVu
aWNvZGVTdHJpbmcgJnJldGFpbkJldHdlZW4oaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCA9
IElOVDMyX01BWCk7CisKKyAgLyogTGVuZ3RoIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICog
UGFkIHRoZSBzdGFydCBvZiB0aGlzIFVuaWNvZGVTdHJpbmcgd2l0aCB0aGUgY2hhcmFjdGVyIDxU
VD5wYWRDaGFyPC9UVD4uCisgICAqIElmIHRoZSBsZW5ndGggb2YgdGhpcyBVbmljb2RlU3RyaW5n
IGlzIGxlc3MgdGhhbiB0YXJnZXRMZW5ndGgsCisgICAqIGxlbmd0aCgpIC0gdGFyZ2V0TGVuZ3Ro
IGNvcGllcyBvZiBwYWRDaGFyIHdpbGwgYmUgYWRkZWQgdG8gdGhlCisgICAqIGJlZ2lubmluZyBv
ZiB0aGlzIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSB0YXJnZXRMZW5ndGggdGhlIGRlc2ly
ZWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcKKyAgICogQHBhcmFtIHBhZENoYXIgdGhlIGNoYXJhY3Rl
ciB0byB1c2UgZm9yIHBhZGRpbmcuIERlZmF1bHRzIHRvCisgICAqIHNwYWNlIChVKzAwMjApCisg
ICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCB3YXMgcGFkZGVkLCBGQUxTRSBvdGhlcndpc2Uu
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVUJvb2wgcGFkTGVhZGluZyhpbnQzMl90
IHRhcmdldExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgVUNoYXIgcGFkQ2hhciA9IDB4MDAy
MCk7CisKKyAgLyoqCisgICAqIFBhZCB0aGUgZW5kIG9mIHRoaXMgVW5pY29kZVN0cmluZyB3aXRo
IHRoZSBjaGFyYWN0ZXIgPFRUPnBhZENoYXI8L1RUPi4KKyAgICogSWYgdGhlIGxlbmd0aCBvZiB0
aGlzIFVuaWNvZGVTdHJpbmcgaXMgbGVzcyB0aGFuIHRhcmdldExlbmd0aCwKKyAgICogbGVuZ3Ro
KCkgLSB0YXJnZXRMZW5ndGggY29waWVzIG9mIHBhZENoYXIgd2lsbCBiZSBhZGRlZCB0byB0aGUK
KyAgICogZW5kIG9mIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICogQHBhcmFtIHRhcmdldExlbmd0
aCB0aGUgZGVzaXJlZCBsZW5ndGggb2YgdGhlIHN0cmluZworICAgKiBAcGFyYW0gcGFkQ2hhciB0
aGUgY2hhcmFjdGVyIHRvIHVzZSBmb3IgcGFkZGluZy4gRGVmYXVsdHMgdG8KKyAgICogc3BhY2Ug
KFUrMDAyMCkKKyAgICogQHJldHVybiBUUlVFIGlmIHRoZSB0ZXh0IHdhcyBwYWRkZWQsIEZBTFNF
IG90aGVyd2lzZS4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVQm9vbCBwYWRUcmFp
bGluZyhpbnQzMl90IHRhcmdldExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgIFVDaGFyIHBh
ZENoYXIgPSAweDAwMjApOworCisgIC8qKgorICAgKiBUcnVuY2F0ZSB0aGlzIFVuaWNvZGVTdHJp
bmcgdG8gdGhlIDxUVD50YXJnZXRMZW5ndGg8L1RUPi4KKyAgICogQHBhcmFtIHRhcmdldExlbmd0
aCB0aGUgZGVzaXJlZCBsZW5ndGggb2YgdGhpcyBVbmljb2RlU3RyaW5nLgorICAgKiBAcmV0dXJu
IFRSVUUgaWYgdGhlIHRleHQgd2FzIHRydW5jYXRlZCwgRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIHRydW5jYXRlKGludDMyX3QgdGFy
Z2V0TGVuZ3RoKTsKKworICAvKioKKyAgICogVHJpbXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hp
dGVzcGFjZSBmcm9tIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICogQHJldHVybiBhIHJlZmVyZW5j
ZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyYg
dHJpbSh2b2lkKTsKKworCisgIC8qIE1pc2NlbGxhbmVvdXMgb3BlcmF0aW9ucyAqLworCisgIC8q
KgorICAgKiBSZXZlcnNlIHRoaXMgVW5pY29kZVN0cmluZyBpbiBwbGFjZS4KKyAgICogQHJldHVy
biBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5s
aW5lIFVuaWNvZGVTdHJpbmcmIHJldmVyc2Uodm9pZCk7CisKKyAgLyoqCisgICAqIFJldmVyc2Ug
dGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIGluCisg
ICAqIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBzdGFydCBvZiB0
aGUgcmFuZ2UgdG8gcmV2ZXJzZQorICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyB0byB0byByZXZlcnNlCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcwor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXZl
cnNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpOworCisgIC8q
KgorICAgKiBDb252ZXJ0IHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gVVBQRVIgQ0FTRSBmb2xs
b3dpbmcgdGhlIGNvbnZlbnRpb25zIG9mCisgICAqIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICog
QHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIFVuaWNvZGVTdHJpbmcmIHRvVXBwZXIodm9pZCk7CisKKyAgLyoqCisgICAqIENvbnZlcnQg
dGhlIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBVUFBFUiBDQVNFIGZvbGxvd2luZyB0aGUgY29udmVu
dGlvbnMgb2YKKyAgICogYSBzcGVjaWZpYyBsb2NhbGUuCisgICAqIEBwYXJhbSBsb2NhbGUgVGhl
IGxvY2FsZSBjb250YWluaW5nIHRoZSBjb252ZW50aW9ucyB0byB1c2UuCisgICAqIEByZXR1cm4g
QSByZWZlcmVuY2UgdG8gdGhpcy4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmlj
b2RlU3RyaW5nJiB0b1VwcGVyKGNvbnN0IExvY2FsZSYgbG9jYWxlKTsKKworICAvKioKKyAgICog
Q29udmVydCB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIHRvIGxvd2VyIGNhc2UgZm9sbG93aW5nIHRo
ZSBjb252ZW50aW9ucyBvZgorICAgKiB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAqIEByZXR1cm4g
QSByZWZlcmVuY2UgdG8gdGhpcy4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmlj
b2RlU3RyaW5nJiB0b0xvd2VyKHZvaWQpOworCisgIC8qKgorICAgKiBDb252ZXJ0IHRoZSBjaGFy
YWN0ZXJzIGluIHRoaXMgdG8gbG93ZXIgY2FzZSBmb2xsb3dpbmcgdGhlIGNvbnZlbnRpb25zIG9m
CisgICAqIGEgc3BlY2lmaWMgbG9jYWxlLgorICAgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUg
Y29udGFpbmluZyB0aGUgY29udmVudGlvbnMgdG8gdXNlLgorICAgKiBAcmV0dXJuIEEgcmVmZXJl
bmNlIHRvIHRoaXMuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmlu
ZyYgdG9Mb3dlcihjb25zdCBMb2NhbGUmIGxvY2FsZSk7CisKKyNpZiAhVUNPTkZJR19OT19CUkVB
S19JVEVSQVRJT04KKworICAvKioKKyAgICogVGl0bGVjYXNlIHRoaXMgc3RyaW5nLCBjb252ZW5p
ZW5jZSBmdW5jdGlvbiB1c2luZyB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAqCisgICAqIENhc2lu
ZyBpcyBsb2NhbGUtZGVwZW5kZW50IGFuZCBjb250ZXh0LXNlbnNpdGl2ZS4KKyAgICogVGl0bGVj
YXNpbmcgdXNlcyBhIGJyZWFrIGl0ZXJhdG9yIHRvIGZpbmQgdGhlIGZpcnN0IGNoYXJhY3RlcnMg
b2Ygd29yZHMKKyAgICogdGhhdCBhcmUgdG8gYmUgdGl0bGVjYXNlZC4gSXQgdGl0bGVjYXNlcyB0
aG9zZSBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2VzCisgICAqIGFsbCBvdGhlcnMuCisgICAqCisg
ICAqIFRoZSB0aXRsZWNhc2UgYnJlYWsgaXRlcmF0b3IgY2FuIGJlIHByb3ZpZGVkIHRvIGN1c3Rv
bWl6ZSBmb3IgYXJiaXRyYXJ5CisgICAqIHN0eWxlcywgdXNpbmcgcnVsZXMgYW5kIGRpY3Rpb25h
cmllcyBiZXlvbmQgdGhlIHN0YW5kYXJkIGl0ZXJhdG9ycy4KKyAgICogSXQgbWF5IGJlIG1vcmUg
ZWZmaWNpZW50IHRvIGFsd2F5cyBwcm92aWRlIGFuIGl0ZXJhdG9yIHRvIGF2b2lkCisgICAqIG9w
ZW5pbmcgYW5kIGNsb3Npbmcgb25lIGZvciBlYWNoIHN0cmluZy4KKyAgICogVGhlIHN0YW5kYXJk
IHRpdGxlY2FzZSBpdGVyYXRvciBmb3IgdGhlIHJvb3QgbG9jYWxlIGltcGxlbWVudHMgdGhlCisg
ICAqIGFsZ29yaXRobSBvZiBVbmljb2RlIFRSIDIxLgorICAgKgorICAgKiBUaGlzIGZ1bmN0aW9u
IHVzZXMgb25seSB0aGUgc2V0VGV4dCgpLCBmaXJzdCgpIGFuZCBuZXh0KCkgbWV0aG9kcyBvZiB0
aGUKKyAgICogcHJvdmlkZWQgYnJlYWsgaXRlcmF0b3IuCisgICAqCisgICAqIEBwYXJhbSB0aXRs
ZUl0ZXIgQSBicmVhayBpdGVyYXRvciB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIHdv
cmRzCisgICAqICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgdG8gYmUgdGl0bGVjYXNlZC4KKyAg
ICogICAgICAgICAgICAgICAgICBJZiBub25lIGlzIHByb3ZpZGVkICgwKSwgdGhlbiBhIHN0YW5k
YXJkIHRpdGxlY2FzZQorICAgKiAgICAgICAgICAgICAgICAgIGJyZWFrIGl0ZXJhdG9yIGlzIG9w
ZW5lZC4KKyAgICogICAgICAgICAgICAgICAgICBPdGhlcndpc2UgdGhlIHByb3ZpZGVkIGl0ZXJh
dG9yIGlzIHNldCB0byB0aGUgc3RyaW5nJ3MgdGV4dC4KKyAgICogQHJldHVybiBBIHJlZmVyZW5j
ZSB0byB0aGlzLgorICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICovCisgIFVuaWNvZGVTdHJpbmcg
JnRvVGl0bGUoQnJlYWtJdGVyYXRvciAqdGl0bGVJdGVyKTsKKworICAvKioKKyAgICogVGl0bGVj
YXNlIHRoaXMgc3RyaW5nLgorICAgKgorICAgKiBDYXNpbmcgaXMgbG9jYWxlLWRlcGVuZGVudCBh
bmQgY29udGV4dC1zZW5zaXRpdmUuCisgICAqIFRpdGxlY2FzaW5nIHVzZXMgYSBicmVhayBpdGVy
YXRvciB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIHdvcmRzCisgICAqIHRoYXQgYXJl
IHRvIGJlIHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhvc2UgY2hhcmFjdGVycyBhbmQgbG93
ZXJjYXNlcworICAgKiBhbGwgb3RoZXJzLgorICAgKgorICAgKiBUaGUgdGl0bGVjYXNlIGJyZWFr
IGl0ZXJhdG9yIGNhbiBiZSBwcm92aWRlZCB0byBjdXN0b21pemUgZm9yIGFyYml0cmFyeQorICAg
KiBzdHlsZXMsIHVzaW5nIHJ1bGVzIGFuZCBkaWN0aW9uYXJpZXMgYmV5b25kIHRoZSBzdGFuZGFy
ZCBpdGVyYXRvcnMuCisgICAqIEl0IG1heSBiZSBtb3JlIGVmZmljaWVudCB0byBhbHdheXMgcHJv
dmlkZSBhbiBpdGVyYXRvciB0byBhdm9pZAorICAgKiBvcGVuaW5nIGFuZCBjbG9zaW5nIG9uZSBm
b3IgZWFjaCBzdHJpbmcuCisgICAqIFRoZSBzdGFuZGFyZCB0aXRsZWNhc2UgaXRlcmF0b3IgZm9y
IHRoZSByb290IGxvY2FsZSBpbXBsZW1lbnRzIHRoZQorICAgKiBhbGdvcml0aG0gb2YgVW5pY29k
ZSBUUiAyMS4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiB1c2VzIG9ubHkgdGhlIHNldFRleHQo
KSwgZmlyc3QoKSBhbmQgbmV4dCgpIG1ldGhvZHMgb2YgdGhlCisgICAqIHByb3ZpZGVkIGJyZWFr
IGl0ZXJhdG9yLgorICAgKgorICAgKiBAcGFyYW0gdGl0bGVJdGVyIEEgYnJlYWsgaXRlcmF0b3Ig
dG8gZmluZCB0aGUgZmlyc3QgY2hhcmFjdGVycyBvZiB3b3JkcworICAgKiAgICAgICAgICAgICAg
ICAgIHRoYXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuCisgICAqICAgICAgICAgICAgICAgICAgSWYg
bm9uZSBpcyBwcm92aWRlZCAoMCksIHRoZW4gYSBzdGFuZGFyZCB0aXRsZWNhc2UKKyAgICogICAg
ICAgICAgICAgICAgICBicmVhayBpdGVyYXRvciBpcyBvcGVuZWQuCisgICAqICAgICAgICAgICAg
ICAgICAgT3RoZXJ3aXNlIHRoZSBwcm92aWRlZCBpdGVyYXRvciBpcyBzZXQgdG8gdGhlIHN0cmlu
ZydzIHRleHQuCisgICAqIEBwYXJhbSBsb2NhbGUgICAgVGhlIGxvY2FsZSB0byBjb25zaWRlci4K
KyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3RhYmxlIElDVSAyLjEK
KyAgICovCisgIFVuaWNvZGVTdHJpbmcgJnRvVGl0bGUoQnJlYWtJdGVyYXRvciAqdGl0bGVJdGVy
LCBjb25zdCBMb2NhbGUgJmxvY2FsZSk7CisKKyAgLyoqCisgICAqIFRpdGxlY2FzZSB0aGlzIHN0
cmluZywgd2l0aCBvcHRpb25zLgorICAgKgorICAgKiBDYXNpbmcgaXMgbG9jYWxlLWRlcGVuZGVu
dCBhbmQgY29udGV4dC1zZW5zaXRpdmUuCisgICAqIFRpdGxlY2FzaW5nIHVzZXMgYSBicmVhayBp
dGVyYXRvciB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIHdvcmRzCisgICAqIHRoYXQg
YXJlIHRvIGJlIHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhvc2UgY2hhcmFjdGVycyBhbmQg
bG93ZXJjYXNlcworICAgKiBhbGwgb3RoZXJzLiAoVGhpcyBjYW4gYmUgbW9kaWZpZWQgd2l0aCBv
cHRpb25zLikKKyAgICoKKyAgICogVGhlIHRpdGxlY2FzZSBicmVhayBpdGVyYXRvciBjYW4gYmUg
cHJvdmlkZWQgdG8gY3VzdG9taXplIGZvciBhcmJpdHJhcnkKKyAgICogc3R5bGVzLCB1c2luZyBy
dWxlcyBhbmQgZGljdGlvbmFyaWVzIGJleW9uZCB0aGUgc3RhbmRhcmQgaXRlcmF0b3JzLgorICAg
KiBJdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQgdG8gYWx3YXlzIHByb3ZpZGUgYW4gaXRlcmF0b3Ig
dG8gYXZvaWQKKyAgICogb3BlbmluZyBhbmQgY2xvc2luZyBvbmUgZm9yIGVhY2ggc3RyaW5nLgor
ICAgKiBUaGUgc3RhbmRhcmQgdGl0bGVjYXNlIGl0ZXJhdG9yIGZvciB0aGUgcm9vdCBsb2NhbGUg
aW1wbGVtZW50cyB0aGUKKyAgICogYWxnb3JpdGhtIG9mIFVuaWNvZGUgVFIgMjEuCisgICAqCisg
ICAqIFRoaXMgZnVuY3Rpb24gdXNlcyBvbmx5IHRoZSBzZXRUZXh0KCksIGZpcnN0KCkgYW5kIG5l
eHQoKSBtZXRob2RzIG9mIHRoZQorICAgKiBwcm92aWRlZCBicmVhayBpdGVyYXRvci4KKyAgICoK
KyAgICogQHBhcmFtIHRpdGxlSXRlciBBIGJyZWFrIGl0ZXJhdG9yIHRvIGZpbmQgdGhlIGZpcnN0
IGNoYXJhY3RlcnMgb2Ygd29yZHMKKyAgICogICAgICAgICAgICAgICAgICB0aGF0IGFyZSB0byBi
ZSB0aXRsZWNhc2VkLgorICAgKiAgICAgICAgICAgICAgICAgIElmIG5vbmUgaXMgcHJvdmlkZWQg
KDApLCB0aGVuIGEgc3RhbmRhcmQgdGl0bGVjYXNlCisgICAqICAgICAgICAgICAgICAgICAgYnJl
YWsgaXRlcmF0b3IgaXMgb3BlbmVkLgorICAgKiAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0
aGUgcHJvdmlkZWQgaXRlcmF0b3IgaXMgc2V0IHRvIHRoZSBzdHJpbmcncyB0ZXh0LgorICAgKiBA
cGFyYW0gbG9jYWxlICAgIFRoZSBsb2NhbGUgdG8gY29uc2lkZXIuCisgICAqIEBwYXJhbSBvcHRp
b25zIE9wdGlvbnMgYml0IHNldCwgc2VlIHVjYXNlbWFwX29wZW4oKS4KKyAgICogQHJldHVybiBB
IHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc2VlIFVfVElUTEVDQVNFX05PX0xPV0VSQ0FTRQor
ICAgKiBAc2VlIFVfVElUTEVDQVNFX05PX0JSRUFLX0FESlVTVE1FTlQKKyAgICogQHNlZSB1Y2Fz
ZW1hcF9vcGVuCisgICAqIEBzdGFibGUgSUNVIDMuOAorICAgKi8KKyAgVW5pY29kZVN0cmluZyAm
dG9UaXRsZShCcmVha0l0ZXJhdG9yICp0aXRsZUl0ZXIsIGNvbnN0IExvY2FsZSAmbG9jYWxlLCB1
aW50MzJfdCBvcHRpb25zKTsKKworI2VuZGlmCisKKyAgLyoqCisgICAqIENhc2UtZm9sZCB0aGUg
Y2hhcmFjdGVycyBpbiB0aGlzIHN0cmluZy4KKyAgICogQ2FzZS1mb2xkaW5nIGlzIGxvY2FsZS1p
bmRlcGVuZGVudCBhbmQgbm90IGNvbnRleHQtc2Vuc2l0aXZlLAorICAgKiBidXQgdGhlcmUgaXMg
YW4gb3B0aW9uIGZvciB3aGV0aGVyIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSBtYXBwaW5ncyBmb3Ig
ZG90dGVkIEkKKyAgICogYW5kIGRvdGxlc3MgaSB0aGF0IGFyZSBtYXJrZWQgd2l0aCAnSScgaW4g
Q2FzZUZvbGRpbmcudHh0LgorICAgKiBUaGUgcmVzdWx0IG1heSBiZSBsb25nZXIgb3Igc2hvcnRl
ciB0aGFuIHRoZSBvcmlnaW5hbC4KKyAgICoKKyAgICogQHBhcmFtIG9wdGlvbnMgRWl0aGVyIFVf
Rk9MRF9DQVNFX0RFRkFVTFQgb3IgVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICog
QHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIFVuaWNvZGVTdHJpbmcgJmZvbGRDYXNlKHVpbnQzMl90IG9wdGlvbnM9MCAvKlVfRk9MRF9D
QVNFX0RFRkFVTFQqLyk7CisKKyAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisgIC8vIEFjY2VzcyB0byB0aGUgaW50ZXJuYWwgYnVmZmVyCisgIC8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIC8qKgorICAgKiBHZXQgYSByZWFk
L3dyaXRlIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4KKyAgICogVGhlIGJ1ZmZlciBp
cyBndWFyYW50ZWVkIHRvIGJlIGxhcmdlIGVub3VnaCBmb3IgYXQgbGVhc3QgbWluQ2FwYWNpdHkg
VUNoYXJzLAorICAgKiB3cml0YWJsZSwgYW5kIGlzIHN0aWxsIG93bmVkIGJ5IHRoZSBVbmljb2Rl
U3RyaW5nIG9iamVjdC4KKyAgICogQ2FsbHMgdG8gZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KSBtdXN0
IG5vdCBiZSBuZXN0ZWQsIGFuZAorICAgKiBtdXN0IGJlIG1hdGNoZWQgd2l0aCBjYWxscyB0byBy
ZWxlYXNlQnVmZmVyKG5ld0xlbmd0aCkuCisgICAqIElmIHRoZSBzdHJpbmcgYnVmZmVyIHdhcyBy
ZWFkLW9ubHkgb3Igc2hhcmVkLAorICAgKiB0aGVuIGl0IHdpbGwgYmUgcmVhbGxvY2F0ZWQgYW5k
IGNvcGllZC4KKyAgICoKKyAgICogQW4gYXR0ZW1wdGVkIG5lc3RlZCBjYWxsIHdpbGwgcmV0dXJu
IDAsIGFuZCB3aWxsIG5vdCBmdXJ0aGVyIG1vZGlmeSB0aGUKKyAgICogc3RhdGUgb2YgdGhlIFVu
aWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBJdCBhbHNvIHJldHVybnMgMCBpZiB0aGUgc3RyaW5n
IGlzIGJvZ3VzLgorICAgKgorICAgKiBUaGUgYWN0dWFsIGNhcGFjaXR5IG9mIHRoZSBzdHJpbmcg
YnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBtaW5DYXBhY2l0eS4KKyAgICogZ2V0Q2FwYWNpdHko
KSByZXR1cm5zIHRoZSBhY3R1YWwgY2FwYWNpdHkuCisgICAqIEZvciBtYW55IG9wZXJhdGlvbnMs
IHRoZSBmdWxsIGNhcGFjaXR5IHNob3VsZCBiZSB1c2VkIHRvIGF2b2lkIHJlYWxsb2NhdGlvbnMu
CisgICAqCisgICAqIFdoaWxlIHRoZSBidWZmZXIgaXMgIm9wZW4iIGJldHdlZW4gZ2V0QnVmZmVy
KG1pbkNhcGFjaXR5KQorICAgKiBhbmQgcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpLCB0aGUgZm9s
bG93aW5nIGFwcGxpZXM6CisgICAqIC0gVGhlIHN0cmluZyBsZW5ndGggaXMgc2V0IHRvIDAuCisg
ICAqIC0gQW55IHJlYWQgQVBJIGNhbGwgb24gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0IHdpbGwg
YmVoYXZlIGxpa2Ugb24gYSAwLWxlbmd0aCBzdHJpbmcuCisgICAqIC0gQW55IHdyaXRlIEFQSSBj
YWxsIG9uIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCBpcyBkaXNhbGxvd2VkIGFuZCB3aWxsIGhh
dmUgbm8gZWZmZWN0LgorICAgKiAtIFlvdSBjYW4gcmVhZCBmcm9tIGFuZCB3cml0ZSB0byB0aGUg
cmV0dXJuZWQgYnVmZmVyLgorICAgKiAtIFRoZSBwcmV2aW91cyBzdHJpbmcgY29udGVudHMgd2ls
bCBzdGlsbCBiZSBpbiB0aGUgYnVmZmVyOworICAgKiAgIGlmIHlvdSB3YW50IHRvIHVzZSBpdCwg
dGhlbiB5b3UgbmVlZCB0byBjYWxsIGxlbmd0aCgpIGJlZm9yZSBnZXRCdWZmZXIobWluQ2FwYWNp
dHkpLgorICAgKiAgIElmIHRoZSBsZW5ndGgoKSB3YXMgZ3JlYXRlciB0aGFuIG1pbkNhcGFjaXR5
LCB0aGVuIGFueSBjb250ZW50cyBhZnRlciBtaW5DYXBhY2l0eQorICAgKiAgIG1heSBiZSBsb3N0
LgorICAgKiAgIFRoZSBidWZmZXIgY29udGVudHMgaXMgbm90IE5VTC10ZXJtaW5hdGVkIGJ5IGdl
dEJ1ZmZlcigpLgorICAgKiAgIElmIGxlbmd0aCgpPGdldENhcGFjaXR5KCkgdGhlbiB5b3UgY2Fu
IHRlcm1pbmF0ZSBpdCBieSB3cml0aW5nIGEgTlVMCisgICAqICAgYXQgaW5kZXggbGVuZ3RoKCku
CisgICAqIC0gWW91IG11c3QgY2FsbCByZWxlYXNlQnVmZmVyKG5ld0xlbmd0aCkgYmVmb3JlIGFu
ZCBpbiBvcmRlciB0bworICAgKiAgIHJldHVybiB0byBub3JtYWwgVW5pY29kZVN0cmluZyBvcGVy
YXRpb24uCisgICAqCisgICAqIEBwYXJhbSBtaW5DYXBhY2l0eSB0aGUgbWluaW11bSBudW1iZXIg
b2YgVUNoYXJzIHRoYXQgYXJlIHRvIGJlIGF2YWlsYWJsZQorICAgKiAgICAgICAgaW4gdGhlIGJ1
ZmZlciwgc3RhcnRpbmcgYXQgdGhlIHJldHVybmVkIHBvaW50ZXI7CisgICAqICAgICAgICBkZWZh
dWx0IHRvIHRoZSBjdXJyZW50IHN0cmluZyBjYXBhY2l0eSBpZiBtaW5DYXBhY2l0eT09LTEKKyAg
ICogQHJldHVybiBhIHdyaXRhYmxlIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIHN0cmluZyBidWZm
ZXIsCisgICAqICAgICAgICAgb3IgMCBpZiBhbiBlcnJvciBvY2N1cnMgKG5lc3RlZCBjYWxscywg
b3V0IG9mIG1lbW9yeSkKKyAgICoKKyAgICogQHNlZSByZWxlYXNlQnVmZmVyCisgICAqIEBzZWUg
Z2V0VGVybWluYXRlZEJ1ZmZlcigpCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVUNo
YXIgKmdldEJ1ZmZlcihpbnQzMl90IG1pbkNhcGFjaXR5KTsKKworICAvKioKKyAgICogUmVsZWFz
ZSBhIHJlYWQvd3JpdGUgYnVmZmVyIG9uIGEgVW5pY29kZVN0cmluZyBvYmplY3Qgd2l0aCBhbgor
ICAgKiAib3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KS4KKyAgICogVGhpcyBmdW5jdGlvbiBt
dXN0IGJlIGNhbGxlZCBpbiBhIG1hdGNoZWQgcGFpciB3aXRoIGdldEJ1ZmZlcihtaW5DYXBhY2l0
eSkuCisgICAqIHJlbGVhc2VCdWZmZXIobmV3TGVuZ3RoKSBtdXN0IGJlIGNhbGxlZCBpZiBhbmQg
b25seSBpZiBhIGdldEJ1ZmZlcihtaW5DYXBhY2l0eSkgaXMgIm9wZW4iLgorICAgKgorICAgKiBJ
dCB3aWxsIHNldCB0aGUgc3RyaW5nIGxlbmd0aCB0byBuZXdMZW5ndGgsIGF0IG1vc3QgdG8gdGhl
IGN1cnJlbnQgY2FwYWNpdHkuCisgICAqIElmIG5ld0xlbmd0aD09LTEgdGhlbiBpdCB3aWxsIHNl
dCB0aGUgbGVuZ3RoIGFjY29yZGluZyB0byB0aGUKKyAgICogZmlyc3QgTlVMIGluIHRoZSBidWZm
ZXIsIG9yIHRvIHRoZSBjYXBhY2l0eSBpZiB0aGVyZSBpcyBubyBOVUwuCisgICAqCisgICAqIEFm
dGVyIGNhbGxpbmcgcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpIHRoZSBVbmljb2RlU3RyaW5nIGlz
IGJhY2sgdG8gbm9ybWFsIG9wZXJhdGlvbi4KKyAgICoKKyAgICogQHBhcmFtIG5ld0xlbmd0aCB0
aGUgbmV3IGxlbmd0aCBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3Q7CisgICAqICAgICAgICBk
ZWZhdWx0cyB0byB0aGUgY3VycmVudCBjYXBhY2l0eSBpZiBuZXdMZW5ndGggaXMgZ3JlYXRlciB0
aGFuIHRoYXQ7CisgICAqICAgICAgICBpZiBuZXdMZW5ndGg9PS0xLCBpdCBkZWZhdWx0cyB0byB1
X3N0cmxlbihidWZmZXIpIGJ1dCBub3QgbW9yZSB0aGFuCisgICAqICAgICAgICB0aGUgY3VycmVu
dCBjYXBhY2l0eSBvZiB0aGUgc3RyaW5nCisgICAqCisgICAqIEBzZWUgZ2V0QnVmZmVyKGludDMy
X3QgbWluQ2FwYWNpdHkpCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgdm9pZCByZWxl
YXNlQnVmZmVyKGludDMyX3QgbmV3TGVuZ3RoPS0xKTsKKworICAvKioKKyAgICogR2V0IGEgcmVh
ZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4KKyAgICogVGhpcyBjYW4gYmUg
Y2FsbGVkIGF0IGFueSB0aW1lIG9uIGEgdmFsaWQgVW5pY29kZVN0cmluZy4KKyAgICoKKyAgICog
SXQgcmV0dXJucyAwIGlmIHRoZSBzdHJpbmcgaXMgYm9ndXMsIG9yCisgICAqIGR1cmluZyBhbiAi
b3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KS4KKyAgICoKKyAgICogSXQgY2FuIGJlIGNhbGxl
ZCBhcyBtYW55IHRpbWVzIGFzIGRlc2lyZWQuCisgICAqIFRoZSBwb2ludGVyIHRoYXQgaXQgcmV0
dXJucyB3aWxsIHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QgaXMg
bW9kaWZpZWQsCisgICAqIGF0IHdoaWNoIHRpbWUgdGhlIHBvaW50ZXIgaXMgc2VtYW50aWNhbGx5
IGludmFsaWRhdGVkIGFuZCBtdXN0IG5vdCBiZSB1c2VkIGFueSBtb3JlLgorICAgKgorICAgKiBU
aGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlciBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRoIGdldENhcGFj
aXR5KCkuCisgICAqIFRoZSBwYXJ0IGFmdGVyIGxlbmd0aCgpIG1heSBvciBtYXkgbm90IGJlIGlu
aXRpYWxpemVkIGFuZCB2YWxpZCwKKyAgICogZGVwZW5kaW5nIG9uIHRoZSBoaXN0b3J5IG9mIHRo
ZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAgICoKKyAgICogVGhlIGJ1ZmZlciBjb250ZW50cyBp
cyAocHJvYmFibHkpIG5vdCBOVUwtdGVybWluYXRlZC4KKyAgICogWW91IGNhbiBjaGVjayBpZiBp
dCBpcyB3aXRoCisgICAqIDxjb2RlPihzLmxlbmd0aCgpPHMuZ2V0Q2FwYWNpdHkoKSAmJiBidWZm
ZXJbcy5sZW5ndGgoKV09PTApPC9jb2RlPi4KKyAgICogKFNlZSBnZXRUZXJtaW5hdGVkQnVmZmVy
KCkuKQorICAgKgorICAgKiBUaGUgYnVmZmVyIG1heSByZXNpZGUgaW4gcmVhZC1vbmx5IG1lbW9y
eS4gSXRzIGNvbnRlbnRzIG11c3Qgbm90CisgICAqIGJlIG1vZGlmaWVkLgorICAgKgorICAgKiBA
cmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIHN0cmluZyBidWZmZXIs
CisgICAqICAgICAgICAgb3IgMCBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5IG9yIGJvZ3VzCisgICAq
CisgICAqIEBzZWUgZ2V0QnVmZmVyKGludDMyX3QgbWluQ2FwYWNpdHkpCisgICAqIEBzZWUgZ2V0
VGVybWluYXRlZEJ1ZmZlcigpCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5l
IGNvbnN0IFVDaGFyICpnZXRCdWZmZXIoKSBjb25zdDsKKworICAvKioKKyAgICogR2V0IGEgcmVh
ZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlciwKKyAgICogbWFraW5nIHN1cmUg
dGhhdCBpdCBpcyBOVUwtdGVybWluYXRlZC4KKyAgICogVGhpcyBjYW4gYmUgY2FsbGVkIGF0IGFu
eSB0aW1lIG9uIGEgdmFsaWQgVW5pY29kZVN0cmluZy4KKyAgICoKKyAgICogSXQgcmV0dXJucyAw
IGlmIHRoZSBzdHJpbmcgaXMgYm9ndXMsIG9yCisgICAqIGR1cmluZyBhbiAib3BlbiIgZ2V0QnVm
ZmVyKG1pbkNhcGFjaXR5KSwgb3IgaWYgdGhlIGJ1ZmZlciBjYW5ub3QKKyAgICogYmUgTlVMLXRl
cm1pbmF0ZWQgKGJlY2F1c2UgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkKS4KKyAgICoKKyAgICog
SXQgY2FuIGJlIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGRlc2lyZWQuCisgICAqIFRoZSBwb2lu
dGVyIHRoYXQgaXQgcmV0dXJucyB3aWxsIHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgVW5pY29kZVN0
cmluZyBvYmplY3QgaXMgbW9kaWZpZWQsCisgICAqIGF0IHdoaWNoIHRpbWUgdGhlIHBvaW50ZXIg
aXMgc2VtYW50aWNhbGx5IGludmFsaWRhdGVkIGFuZCBtdXN0IG5vdCBiZSB1c2VkIGFueSBtb3Jl
LgorICAgKgorICAgKiBUaGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlciBjYW4gYmUgZGV0ZXJtaW5l
ZCB3aXRoIGdldENhcGFjaXR5KCkuCisgICAqIFRoZSBwYXJ0IGFmdGVyIGxlbmd0aCgpKzEgbWF5
IG9yIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkLAorICAgKiBkZXBlbmRpbmcgb24g
dGhlIGhpc3Rvcnkgb2YgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKgorICAgKiBUaGUg
YnVmZmVyIGNvbnRlbnRzIGlzIGd1YXJhbnRlZWQgdG8gYmUgTlVMLXRlcm1pbmF0ZWQuCisgICAq
IGdldFRlcm1pbmF0ZWRCdWZmZXIoKSBtYXkgcmVhbGxvY2F0ZSB0aGUgYnVmZmVyIGlmIGEgdGVy
bWluYXRpbmcgTlVMCisgICAqIGlzIHdyaXR0ZW4uCisgICAqIEZvciB0aGlzIHJlYXNvbiwgdGhp
cyBmdW5jdGlvbiBpcyBub3QgY29uc3QsIHVubGlrZSBnZXRCdWZmZXIoKS4KKyAgICogTm90ZSB0
aGF0IGEgVW5pY29kZVN0cmluZyBtYXkgYWxzbyBjb250YWluIE5VTCBjaGFyYWN0ZXJzIGFzIHBh
cnQgb2YgaXRzIGNvbnRlbnRzLgorICAgKgorICAgKiBUaGUgYnVmZmVyIG1heSByZXNpZGUgaW4g
cmVhZC1vbmx5IG1lbW9yeS4gSXRzIGNvbnRlbnRzIG11c3Qgbm90CisgICAqIGJlIG1vZGlmaWVk
LgorICAgKgorICAgKiBAcmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFs
IHN0cmluZyBidWZmZXIsCisgICAqICAgICAgICAgb3IgMCBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5
IG9yIGJvZ3VzCisgICAqCisgICAqIEBzZWUgZ2V0QnVmZmVyKGludDMyX3QgbWluQ2FwYWNpdHkp
CisgICAqIEBzZWUgZ2V0QnVmZmVyKCkKKyAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAqLworICBp
bmxpbmUgY29uc3QgVUNoYXIgKmdldFRlcm1pbmF0ZWRCdWZmZXIoKTsKKworICAvLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgLy8gQ29uc3RydWN0b3JzCisgIC8v
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIC8qKiBDb25zdHJ1
Y3QgYW4gZW1wdHkgVW5pY29kZVN0cmluZy4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBVbmljb2RlU3RyaW5nKCk7CisKKyAgLyoqCisgICAqIENvbnN0cnVjdCBhIFVuaWNvZGVTdHJp
bmcgd2l0aCBjYXBhY2l0eSB0byBob2xkIDxUVD5jYXBhY2l0eTwvVFQ+IFVDaGFycworICAgKiBA
cGFyYW0gY2FwYWNpdHkgdGhlIG51bWJlciBvZiBVQ2hhcnMgdGhpcyBVbmljb2RlU3RyaW5nIHNo
b3VsZCBob2xkCisgICAqIGJlZm9yZSBhIHJlc2l6ZSBpcyBuZWNlc3Nhcnk7IGlmIGNvdW50IGlz
IGdyZWF0ZXIgdGhhbiAwIGFuZCBjb3VudAorICAgKiBjb2RlIHBvaW50cyBjIHRha2UgdXAgbW9y
ZSBzcGFjZSB0aGFuIGNhcGFjaXR5LCB0aGVuIGNhcGFjaXR5IGlzIGFkanVzdGVkCisgICAqIGFj
Y29yZGluZ2x5LgorICAgKiBAcGFyYW0gYyBpcyB1c2VkIHRvIGluaXRpYWxseSBmaWxsIHRoZSBz
dHJpbmcKKyAgICogQHBhcmFtIGNvdW50IHNwZWNpZmllcyBob3cgbWFueSBjb2RlIHBvaW50cyBj
IGFyZSB0byBiZSB3cml0dGVuIGluIHRoZQorICAgKiAgICAgICAgICAgICAgc3RyaW5nCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyhpbnQzMl90IGNhcGFjaXR5
LCBVQ2hhcjMyIGMsIGludDMyX3QgY291bnQpOworCisgIC8qKgorICAgKiBTaW5nbGUgVUNoYXIg
KGNvZGUgdW5pdCkgY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSBjaCB0aGUgY2hhcmFjdGVyIHRv
IHBsYWNlIGluIHRoZSBVbmljb2RlU3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8K
KyAgVW5pY29kZVN0cmluZyhVQ2hhciBjaCk7CisKKyAgLyoqCisgICAqIFNpbmdsZSBVQ2hhcjMy
IChjb2RlIHBvaW50KSBjb25zdHJ1Y3Rvci4KKyAgICogQHBhcmFtIGNoIHRoZSBjaGFyYWN0ZXIg
dG8gcGxhY2UgaW4gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBVbmljb2RlU3RyaW5nKFVDaGFyMzIgY2gpOworCisgIC8qKgorICAgKiBVQ2hhciogY29u
c3RydWN0b3IuCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBjaGFyYWN0ZXJzIHRvIHBsYWNlIGluIHRo
ZSBVbmljb2RlU3RyaW5nLiAgPFRUPnRleHQ8L1RUPgorICAgKiBtdXN0IGJlIE5VTEwgKFUrMDAw
MCkgdGVybWluYXRlZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3Ry
aW5nKGNvbnN0IFVDaGFyICp0ZXh0KTsKKworICAvKioKKyAgICogVUNoYXIqIGNvbnN0cnVjdG9y
LgorICAgKiBAcGFyYW0gdGV4dCBUaGUgY2hhcmFjdGVycyB0byBwbGFjZSBpbiB0aGUgVW5pY29k
ZVN0cmluZy4KKyAgICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51bWJlciBvZiBVbmljb2RlIGNo
YXJhY3RlcnMgaW4gPFRUPnRleHQ8L1RUPgorICAgKiB0byBjb3B5LgorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3QgVUNoYXIgKnRleHQsCisgICAgICAg
IGludDMyX3QgdGV4dExlbmd0aCk7CisKKyAgLyoqCisgICAqIFJlYWRvbmx5LWFsaWFzaW5nIFVD
aGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogVGhlIHRleHQgd2lsbCBiZSB1c2VkIGZvciB0aGUgVW5p
Y29kZVN0cmluZyBvYmplY3QsIGJ1dAorICAgKiBpdCB3aWxsIG5vdCBiZSByZWxlYXNlZCB3aGVu
IHRoZSBVbmljb2RlU3RyaW5nIGlzIGRlc3Ryb3llZC4KKyAgICogVGhpcyBoYXMgY29weS1vbi13
cml0ZSBzZW1hbnRpY3M6CisgICAqIFdoZW4gdGhlIHN0cmluZyBpcyBtb2RpZmllZCwgdGhlbiB0
aGUgYnVmZmVyIGlzIGZpcnN0IGNvcGllZCBpbnRvCisgICAqIG5ld2x5IGFsbG9jYXRlZCBtZW1v
cnkuCisgICAqIFRoZSBhbGlhc2VkIGJ1ZmZlciBpcyBuZXZlciBtb2RpZmllZC4KKyAgICogSW4g
YW4gYXNzaWdubWVudCB0byBhbm90aGVyIFVuaWNvZGVTdHJpbmcsIHRoZSB0ZXh0IHdpbGwgYmUg
YWxpYXNlZCBhZ2FpbiwKKyAgICogc28gdGhhdCBib3RoIHN0cmluZ3MgdGhlbiBhbGlhcyB0aGUg
c2FtZSByZWFkb25seS10ZXh0LgorICAgKgorICAgKiBAcGFyYW0gaXNUZXJtaW5hdGVkIHNwZWNp
ZmllcyBpZiA8Y29kZT50ZXh0PC9jb2RlPiBpcyA8Y29kZT5OVUw8L2NvZGU+LXRlcm1pbmF0ZWQu
CisgICAqICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIHRydWUgaWYgPGNvZGU+dGV4
dExlbmd0aD09LTE8L2NvZGU+LgorICAgKiBAcGFyYW0gdGV4dCBUaGUgY2hhcmFjdGVycyB0byBh
bGlhcyBmb3IgdGhlIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBu
dW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnRleHQ8L2NvZGU+IHRvIGFsaWFz
LgorICAgKiAgICAgICAgICAgICAgICAgICBJZiAtMSwgdGhlbiB0aGlzIGNvbnN0cnVjdG9yIHdp
bGwgZGV0ZXJtaW5lIHRoZSBsZW5ndGgKKyAgICogICAgICAgICAgICAgICAgICAgYnkgY2FsbGlu
ZyA8Y29kZT51X3N0cmxlbigpPC9jb2RlPi4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBVbmljb2RlU3RyaW5nKFVCb29sIGlzVGVybWluYXRlZCwKKyAgICAgICAgICAgICAgICBjb25z
dCBVQ2hhciAqdGV4dCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgpOworCisg
IC8qKgorICAgKiBXcml0YWJsZS1hbGlhc2luZyBVQ2hhciogY29uc3RydWN0b3IuCisgICAqIFRo
ZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LCBidXQKKyAg
ICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5pY29kZVN0cmluZyBpcyBkZXN0
cm95ZWQuCisgICAqIFRoaXMgaGFzIHdyaXRlLXRocm91Z2ggc2VtYW50aWNzOgorICAgKiBGb3Ig
YXMgbG9uZyBhcyB0aGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlciBpcyBzdWZmaWNpZW50LCB3cml0
ZSBvcGVyYXRpb25zCisgICAqIHdpbGwgZGlyZWN0bHkgYWZmZWN0IHRoZSBidWZmZXIuIFdoZW4g
bW9yZSBjYXBhY2l0eSBpcyBuZWNlc3NhcnksIHRoZW4KKyAgICogYSBuZXcgYnVmZmVyIHdpbGwg
YmUgYWxsb2NhdGVkIGFuZCB0aGUgY29udGVudHMgY29waWVkIGFzIHdpdGggcmVndWxhcmx5Cisg
ICAqIGNvbnN0cnVjdGVkIHN0cmluZ3MuCisgICAqIEluIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhl
ciBVbmljb2RlU3RyaW5nLCB0aGUgYnVmZmVyIHdpbGwgYmUgY29waWVkLgorICAgKiBUaGUgZXh0
cmFjdChVQ2hhciAqZHN0KSBmdW5jdGlvbiBkZXRlY3RzIHdoZXRoZXIgdGhlIGRzdCBwb2ludGVy
IGlzIHRoZSBzYW1lCisgICAqIGFzIHRoZSBzdHJpbmcgYnVmZmVyIGl0c2VsZiBhbmQgd2lsbCBp
biB0aGlzIGNhc2Ugbm90IGNvcHkgdGhlIGNvbnRlbnRzLgorICAgKgorICAgKiBAcGFyYW0gYnVm
ZmVyIFRoZSBjaGFyYWN0ZXJzIHRvIGFsaWFzIGZvciB0aGUgVW5pY29kZVN0cmluZy4KKyAgICog
QHBhcmFtIGJ1ZmZMZW5ndGggVGhlIG51bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gPGNv
ZGU+YnVmZmVyPC9jb2RlPiB0byBhbGlhcy4KKyAgICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBUaGUg
c2l6ZSBvZiA8Y29kZT5idWZmZXI8L2NvZGU+IGluIFVDaGFycy4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKFVDaGFyICpidWZmZXIsIGludDMyX3QgYnVmZkxl
bmd0aCwgaW50MzJfdCBidWZmQ2FwYWNpdHkpOworCisjaWYgVV9DSEFSU0VUX0lTX1VURjggfHwg
IVVDT05GSUdfTk9fQ09OVkVSU0lPTgorCisgIC8qKgorICAgKiBjaGFyKiBjb25zdHJ1Y3Rvci4K
KyAgICogQHBhcmFtIGNvZGVwYWdlRGF0YSBhbiBhcnJheSBvZiBieXRlcywgbnVsbC10ZXJtaW5h
dGVkLAorICAgKiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQg
Y29kZXBhZ2UuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyhj
b25zdCBjaGFyICpjb2RlcGFnZURhdGEpOworCisgIC8qKgorICAgKiBjaGFyKiBjb25zdHJ1Y3Rv
ci4KKyAgICogQHBhcmFtIGNvZGVwYWdlRGF0YSBhbiBhcnJheSBvZiBieXRlcyBpbiB0aGUgcGxh
dGZvcm0ncyBkZWZhdWx0IGNvZGVwYWdlLgorICAgKiBAcGFyYW0gZGF0YUxlbmd0aCBUaGUgbnVt
YmVyIG9mIGJ5dGVzIGluIDxUVD5jb2RlcGFnZURhdGE8L1RUPi4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKmNvZGVwYWdlRGF0YSwgaW50
MzJfdCBkYXRhTGVuZ3RoKTsKKworI2VuZGlmCisKKyNpZiAhVUNPTkZJR19OT19DT05WRVJTSU9O
CisKKyAgLyoqCisgICAqIGNoYXIqIGNvbnN0cnVjdG9yLgorICAgKiBAcGFyYW0gY29kZXBhZ2VE
YXRhIGFuIGFycmF5IG9mIGJ5dGVzLCBudWxsLXRlcm1pbmF0ZWQKKyAgICogQHBhcmFtIGNvZGVw
YWdlIHRoZSBlbmNvZGluZyBvZiA8VFQ+Y29kZXBhZ2VEYXRhPC9UVD4uICBUaGUgc3BlY2lhbAor
ICAgKiB2YWx1ZSAwIGZvciA8VFQ+Y29kZXBhZ2U8L1RUPiBpbmRpY2F0ZXMgdGhhdCB0aGUgdGV4
dCBpcyBpbiB0aGUKKyAgICogcGxhdGZvcm0ncyBkZWZhdWx0IGNvZGVwYWdlLgorICAgKgorICAg
KiBJZiA8Y29kZT5jb2RlcGFnZTwvY29kZT4gaXMgYW4gZW1wdHkgc3RyaW5nICg8Y29kZT4iIjwv
Y29kZT4pLAorICAgKiB0aGVuIGEgc2ltcGxlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIG9uIHRo
ZSBjb2RlcGFnZS1pbnZhcmlhbnQKKyAgICogc3Vic2V0ICgiaW52YXJpYW50IGNoYXJhY3RlcnMi
KSBvZiB0aGUgcGxhdGZvcm0gZW5jb2RpbmcuIFNlZSB1dHlwZXMuaC4KKyAgICogUmVjb21tZW5k
YXRpb246IEZvciBpbnZhcmlhbnQtY2hhcmFjdGVyIHN0cmluZ3MgdXNlIHRoZSBjb25zdHJ1Y3Rv
cgorICAgKiBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKnNyYywgaW50MzJfdCBsZW5ndGgsIGVu
dW0gRUludmFyaWFudCBpbnYpCisgICAqIGJlY2F1c2UgaXQgYXZvaWRzIG9iamVjdCBjb2RlIGRl
cGVuZGVuY2llcyBvZiBVbmljb2RlU3RyaW5nIG9uCisgICAqIHRoZSBjb252ZXJzaW9uIGNvZGUu
CisgICAqCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyhjb25z
dCBjaGFyICpjb2RlcGFnZURhdGEsIGNvbnN0IGNoYXIgKmNvZGVwYWdlKTsKKworICAvKioKKyAg
ICogY2hhciogY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSBjb2RlcGFnZURhdGEgYW4gYXJyYXkg
b2YgYnl0ZXMuCisgICAqIEBwYXJhbSBkYXRhTGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4g
PFRUPmNvZGVwYWdlRGF0YTwvVFQ+LgorICAgKiBAcGFyYW0gY29kZXBhZ2UgdGhlIGVuY29kaW5n
IG9mIDxUVD5jb2RlcGFnZURhdGE8L1RUPi4gIFRoZSBzcGVjaWFsCisgICAqIHZhbHVlIDAgZm9y
IDxUVD5jb2RlcGFnZTwvVFQ+IGluZGljYXRlcyB0aGF0IHRoZSB0ZXh0IGlzIGluIHRoZQorICAg
KiBwbGF0Zm9ybSdzIGRlZmF1bHQgY29kZXBhZ2UuCisgICAqIElmIDxjb2RlPmNvZGVwYWdlPC9j
b2RlPiBpcyBhbiBlbXB0eSBzdHJpbmcgKDxjb2RlPiIiPC9jb2RlPiksCisgICAqIHRoZW4gYSBz
aW1wbGUgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQgb24gdGhlIGNvZGVwYWdlLWludmFyaWFudAor
ICAgKiBzdWJzZXQgKCJpbnZhcmlhbnQgY2hhcmFjdGVycyIpIG9mIHRoZSBwbGF0Zm9ybSBlbmNv
ZGluZy4gU2VlIHV0eXBlcy5oLgorICAgKiBSZWNvbW1lbmRhdGlvbjogRm9yIGludmFyaWFudC1j
aGFyYWN0ZXIgc3RyaW5ncyB1c2UgdGhlIGNvbnN0cnVjdG9yCisgICAqIFVuaWNvZGVTdHJpbmco
Y29uc3QgY2hhciAqc3JjLCBpbnQzMl90IGxlbmd0aCwgZW51bSBFSW52YXJpYW50IGludikKKyAg
ICogYmVjYXVzZSBpdCBhdm9pZHMgb2JqZWN0IGNvZGUgZGVwZW5kZW5jaWVzIG9mIFVuaWNvZGVT
dHJpbmcgb24KKyAgICogdGhlIGNvbnZlcnNpb24gY29kZS4KKyAgICoKKyAgICogQHN0YWJsZSBJ
Q1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKmNvZGVwYWdlRGF0YSwg
aW50MzJfdCBkYXRhTGVuZ3RoLCBjb25zdCBjaGFyICpjb2RlcGFnZSk7CisKKyAgLyoqCisgICAq
IGNoYXIgKiAvIFVDb252ZXJ0ZXIgY29uc3RydWN0b3IuCisgICAqIFRoaXMgY29uc3RydWN0b3Ig
dXNlcyBhbiBleGlzdGluZyBVQ29udmVydGVyIG9iamVjdCB0bworICAgKiBjb252ZXJ0IHRoZSBj
b2RlcGFnZSBzdHJpbmcgdG8gVW5pY29kZSBhbmQgY29uc3RydWN0IGEgVW5pY29kZVN0cmluZwor
ICAgKiBmcm9tIHRoYXQuCisgICAqCisgICAqIFRoZSBjb252ZXJ0ZXIgaXMgcmVzZXQgYXQgZmly
c3QuCisgICAqIElmIHRoZSBlcnJvciBjb2RlIGluZGljYXRlcyBhIGZhaWx1cmUgYmVmb3JlIHRo
aXMgY29uc3RydWN0b3IgaXMgY2FsbGVkLAorICAgKiBvciBpZiBhbiBlcnJvciBvY2N1cnMgZHVy
aW5nIGNvbnZlcnNpb24gb3IgY29uc3RydWN0aW9uLAorICAgKiB0aGVuIHRoZSBzdHJpbmcgd2ls
bCBiZSBib2d1cy4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiBhdm9pZHMgdGhlIG92ZXJoZWFk
IG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBjb252ZXJ0ZXIgaWYKKyAgICogbXVsdGlwbGUgc3Ry
aW5ncyBhcmUgY29uc3RydWN0ZWQuCisgICAqCisgICAqIEBwYXJhbSBzcmMgaW5wdXQgY29kZXBh
Z2Ugc3RyaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggbGVuZ3RoIG9mIHRoZSBpbnB1dCBzdHJp
bmcsIGNhbiBiZSAtMSBmb3IgTlVMLXRlcm1pbmF0ZWQgc3RyaW5ncworICAgKiBAcGFyYW0gY252
IGNvbnZlcnRlciBvYmplY3QgKHVjbnZfcmVzZXRUb1VuaWNvZGUoKSB3aWxsIGJlIGNhbGxlZCks
CisgICAqICAgICAgICBjYW4gYmUgTlVMTCBmb3IgdGhlIGRlZmF1bHQgY29udmVydGVyCisgICAq
IEBwYXJhbSBlcnJvckNvZGUgbm9ybWFsIElDVSBlcnJvciBjb2RlCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZygKKyAgICAgICAgY29uc3QgY2hhciAqc3JjLCBp
bnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgVUNvbnZlcnRlciAqY252LAorICAgICAgICBVRXJy
b3JDb2RlICZlcnJvckNvZGUpOworCisjZW5kaWYKKworICAvKioKKyAgICogQ29uc3RydWN0cyBh
IFVuaWNvZGUgc3RyaW5nIGZyb20gYW4gaW52YXJpYW50LWNoYXJhY3RlciBjaGFyICogc3RyaW5n
LgorICAgKiBBYm91dCBpbnZhcmlhbnQgY2hhcmFjdGVycyBzZWUgdXR5cGVzLmguCisgICAqIFRo
aXMgY29uc3RydWN0b3IgaGFzIG5vIHJ1bnRpbWUgZGVwZW5kZW5jeSBvbiBjb252ZXJzaW9uIGNv
ZGUgYW5kIGlzCisgICAqIHRoZXJlZm9yZSByZWNvbW1lbmRlZCBvdmVyIG9uZXMgdGFraW5nIGEg
Y2hhcnNldCBuYW1lIHN0cmluZworICAgKiAod2hlcmUgdGhlIGVtcHR5IHN0cmluZyAiIiBpbmRp
Y2F0ZXMgaW52YXJpYW50LWNoYXJhY3RlciBjb252ZXJzaW9uKS4KKyAgICoKKyAgICogVXNlIHRo
ZSBtYWNybyBVU19JTlYgYXMgdGhlIHRoaXJkLCBzaWduYXR1cmUtZGlzdGluZ3Vpc2hpbmcgcGFy
YW1ldGVyLgorICAgKgorICAgKiBGb3IgZXhhbXBsZToKKyAgICogXGNvZGUKKyAgICogdm9pZCBm
bihjb25zdCBjaGFyICpzKSB7CisgICAqICAgVW5pY29kZVN0cmluZyB1c3RyKHMsIC0xLCBVU19J
TlYpOworICAgKiAgIC8vIHVzZSB1c3RyIC4uLgorICAgKiB9CisgICAqIFxlbmRjb2RlCisgICAq
CisgICAqIEBwYXJhbSBzcmMgU3RyaW5nIHVzaW5nIG9ubHkgaW52YXJpYW50IGNoYXJhY3RlcnMu
CisgICAqIEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIHNyYywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0
ZWQuCisgICAqIEBwYXJhbSBpbnYgU2lnbmF0dXJlLWRpc3Rpbmd1aXNoaW5nIHBhcmFtYXRlciwg
dXNlIFVTX0lOVi4KKyAgICoKKyAgICogQHNlZSBVU19JTlYKKyAgICogQHN0YWJsZSBJQ1UgMy4y
CisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKnNyYywgaW50MzJfdCBsZW5ndGgs
IGVudW0gRUludmFyaWFudCBpbnYpOworCisKKyAgLyoqCisgICAqIENvcHkgY29uc3RydWN0b3Iu
CisgICAqIEBwYXJhbSB0aGF0IFRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byBjb3B5LgorICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3QgVW5pY29kZVN0
cmluZyYgdGhhdCk7CisKKyAgLyoqCisgICAqICdTdWJzdHJpbmcnIGNvbnN0cnVjdG9yIGZyb20g
dGFpbCBvZiBzb3VyY2Ugc3RyaW5nLgorICAgKiBAcGFyYW0gc3JjIFRoZSBVbmljb2RlU3RyaW5n
IG9iamVjdCB0byBjb3B5LgorICAgKiBAcGFyYW0gc3JjU3RhcnQgVGhlIG9mZnNldCBpbnRvIDx0
dD5zcmM8L3R0PiBhdCB3aGljaCB0byBzdGFydCBjb3B5aW5nLgorICAgKiBAc3RhYmxlIElDVSAy
LjIKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjLCBpbnQz
Ml90IHNyY1N0YXJ0KTsKKworICAvKioKKyAgICogJ1N1YnN0cmluZycgY29uc3RydWN0b3IgZnJv
bSBzdWJyYW5nZSBvZiBzb3VyY2Ugc3RyaW5nLgorICAgKiBAcGFyYW0gc3JjIFRoZSBVbmljb2Rl
U3RyaW5nIG9iamVjdCB0byBjb3B5LgorICAgKiBAcGFyYW0gc3JjU3RhcnQgVGhlIG9mZnNldCBp
bnRvIDx0dD5zcmM8L3R0PiBhdCB3aGljaCB0byBzdGFydCBjb3B5aW5nLgorICAgKiBAcGFyYW0g
c3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBmcm9tIDx0dD5zcmM8L3R0PiB0byBj
b3B5LgorICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3Qg
VW5pY29kZVN0cmluZyYgc3JjLCBpbnQzMl90IHNyY1N0YXJ0LCBpbnQzMl90IHNyY0xlbmd0aCk7
CisKKyAgLyoqCisgICAqIENsb25lIHRoaXMgb2JqZWN0LCBhbiBpbnN0YW5jZSBvZiBhIHN1YmNs
YXNzIG9mIFJlcGxhY2VhYmxlLgorICAgKiBDbG9uZXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5
IGluIG11bHRpcGxlIHRocmVhZHMuCisgICAqIElmIGEgc3ViY2xhc3MgZG9lcyBub3QgaW1wbGVt
ZW50IGNsb25lKCksIG9yIGlmIGFuIGVycm9yIG9jY3VycywKKyAgICogdGhlbiBOVUxMIGlzIHJl
dHVybmVkLgorICAgKiBUaGUgY2xvbmUgZnVuY3Rpb25zIGluIGFsbCBzdWJjbGFzc2VzIHJldHVy
biBhIHBvaW50ZXIgdG8gYSBSZXBsYWNlYWJsZQorICAgKiBiZWNhdXNlIHNvbWUgY29tcGlsZXJz
IGRvIG5vdCBzdXBwb3J0IGNvdmFyaWFudCAoc2FtZS1hcy10aGlzKQorICAgKiByZXR1cm4gdHlw
ZXM7IGNhc3QgdG8gdGhlIGFwcHJvcHJpYXRlIHN1YmNsYXNzIGlmIG5lY2Vzc2FyeS4KKyAgICog
VGhlIGNhbGxlciBtdXN0IGRlbGV0ZSB0aGUgY2xvbmUuCisgICAqCisgICAqIEByZXR1cm4gYSBj
bG9uZSBvZiB0aGlzIG9iamVjdAorICAgKgorICAgKiBAc2VlIFJlcGxhY2VhYmxlOjpjbG9uZQor
ICAgKiBAc2VlIGdldER5bmFtaWNDbGFzc0lECisgICAqIEBzdGFibGUgSUNVIDIuNgorICAgKi8K
KyAgdmlydHVhbCBSZXBsYWNlYWJsZSAqY2xvbmUoKSBjb25zdDsKKworICAvKiogRGVzdHJ1Y3Rv
ci4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICB2aXJ0dWFsIH5Vbmljb2RlU3RyaW5n
KCk7CisKKyAgLyoqCisgICAqIENyZWF0ZSBhIFVuaWNvZGVTdHJpbmcgZnJvbSBhIFVURi04IHN0
cmluZy4KKyAgICogSWxsZWdhbCBpbnB1dCBpcyByZXBsYWNlZCB3aXRoIFUrRkZGRC4gT3RoZXJ3
aXNlLCBlcnJvcnMgcmVzdWx0IGluIGEgYm9ndXMgc3RyaW5nLgorICAgKiBDYWxscyB1X3N0ckZy
b21VVEY4V2l0aFN1YigpLgorICAgKgorICAgKiBAcGFyYW0gdXRmOCBVVEYtOCBpbnB1dCBzdHJp
bmcuCisgICAqICAgICAgICAgICAgIE5vdGUgdGhhdCBhIFN0cmluZ1BpZWNlIGNhbiBiZSBpbXBs
aWNpdGx5IGNvbnN0cnVjdGVkCisgICAqICAgICAgICAgICAgIGZyb20gYSBzdGQ6OnN0cmluZyBv
ciBhIE5VTC10ZXJtaW5hdGVkIGNvbnN0IGNoYXIgKiBzdHJpbmcuCisgICAqIEByZXR1cm4gQSBV
bmljb2RlU3RyaW5nIHdpdGggZXF1aXZhbGVudCBVVEYtMTYgY29udGVudHMuCisgICAqIEBzZWUg
dG9VVEY4CisgICAqIEBzZWUgdG9VVEY4U3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAg
Ki8KKyAgc3RhdGljIFVuaWNvZGVTdHJpbmcgZnJvbVVURjgoY29uc3QgU3RyaW5nUGllY2UgJnV0
ZjgpOworCisgIC8qKgorICAgKiBDcmVhdGUgYSBVbmljb2RlU3RyaW5nIGZyb20gYSBVVEYtMzIg
c3RyaW5nLgorICAgKiBJbGxlZ2FsIGlucHV0IGlzIHJlcGxhY2VkIHdpdGggVStGRkZELiBPdGhl
cndpc2UsIGVycm9ycyByZXN1bHQgaW4gYSBib2d1cyBzdHJpbmcuCisgICAqIENhbGxzIHVfc3Ry
RnJvbVVURjMyV2l0aFN1YigpLgorICAgKgorICAgKiBAcGFyYW0gdXRmMzIgVVRGLTMyIGlucHV0
IHN0cmluZy4gTXVzdCBub3QgYmUgTlVMTC4KKyAgICogQHBhcmFtIGxlbmd0aCBMZW5ndGggb2Yg
dGhlIGlucHV0IHN0cmluZywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgICAqIEByZXR1cm4g
QSBVbmljb2RlU3RyaW5nIHdpdGggZXF1aXZhbGVudCBVVEYtMTYgY29udGVudHMuCisgICAqIEBz
ZWUgdG9VVEYzMgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIHN0YXRpYyBVbmljb2Rl
U3RyaW5nIGZyb21VVEYzMihjb25zdCBVQ2hhcjMyICp1dGYzMiwgaW50MzJfdCBsZW5ndGgpOwor
CisgIC8qIE1pc2NlbGxhbmVvdXMgb3BlcmF0aW9ucyAqLworCisgIC8qKgorICAgKiBVbmVzY2Fw
ZSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZwor
ICAgKiB0aGUgcmVzdWx0LiAgVGhlIGZvbGxvd2luZyBlc2NhcGUgc2VxdWVuY2VzIGFyZSByZWNv
Z25pemVkOgorICAgKgorICAgKiBcXHVoaGhoICAgICAgIDQgaGV4IGRpZ2l0czsgaCBpbiBbMC05
QS1GYS1mXQorICAgKiBcXFVoaGhoaGhoaCAgIDggaGV4IGRpZ2l0cworICAgKiBcXHhoaCAgICAg
ICAgIDEtMiBoZXggZGlnaXRzCisgICAqIFxcb29vICAgICAgICAgMS0zIG9jdGFsIGRpZ2l0czsg
byBpbiBbMC03XQorICAgKiBcXGNYICAgICAgICAgIGNvbnRyb2wtWDsgWCBpcyBtYXNrZWQgd2l0
aCAweDFGCisgICAqCisgICAqIGFzIHdlbGwgYXMgdGhlIHN0YW5kYXJkIEFOU0kgQyBlc2NhcGVz
OgorICAgKgorICAgKiBcXGEgPT4gVSswMDA3LCBcXGIgPT4gVSswMDA4LCBcXHQgPT4gVSswMDA5
LCBcXG4gPT4gVSswMDBBLAorICAgKiBcXHYgPT4gVSswMDBCLCBcXGYgPT4gVSswMDBDLCBcXHIg
PT4gVSswMDBELCBcXGUgPT4gVSswMDFCLAorICAgKiBcXCZxdW90OyA9PiBVKzAwMjIsIFxcJyA9
PiBVKzAwMjcsIFxcPyA9PiBVKzAwM0YsIFxcXFwgPT4gVSswMDVDCisgICAqCisgICAqIEFueXRo
aW5nIGVsc2UgZm9sbG93aW5nIGEgYmFja3NsYXNoIGlzIGdlbmVyaWNhbGx5IGVzY2FwZWQuICBG
b3IKKyAgICogZXhhbXBsZSwgIlthXFwtel0iIHJldHVybnMgIlthLXpdIi4KKyAgICoKKyAgICog
SWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIGlsbC1mb3JtZWQsIHRoaXMgbWV0aG9kIHJldHVybnMg
YW4gZW1wdHkKKyAgICogc3RyaW5nLiAgQW4gZXhhbXBsZSBvZiBhbiBpbGwtZm9ybWVkIHNlcXVl
bmNlIGlzICJcXHUiIGZvbGxvd2VkIGJ5CisgICAqIGZld2VyIHRoYW4gNCBoZXggZGlnaXRzLgor
ICAgKgorICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gdV91bmVzY2FwZSgpIGJ1dCBu
b3QgaWRlbnRpY2FsIHRvIGl0LgorICAgKiBUaGUgbGF0dGVyIHRha2VzIGEgc291cmNlIGNoYXIq
LCBzbyBpdCBkb2VzIGVzY2FwZSByZWNvZ25pdGlvbgorICAgKiBhbmQgYWxzbyBpbnZhcmlhbnQg
Y29udmVyc2lvbi4KKyAgICoKKyAgICogQHJldHVybiBhIHN0cmluZyB3aXRoIGJhY2tzbGFzaCBl
c2NhcGVzIGludGVycHJldGVkLCBvciBhbgorICAgKiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCisg
ICAqIEBzZWUgVW5pY29kZVN0cmluZyN1bmVzY2FwZUF0KCkKKyAgICogQHNlZSB1X3VuZXNjYXBl
KCkKKyAgICogQHNlZSB1X3VuZXNjYXBlQXQoKQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIFVuaWNvZGVTdHJpbmcgdW5lc2NhcGUoKSBjb25zdDsKKworICAvKioKKyAgICogVW5lc2Nh
cGUgYSBzaW5nbGUgZXNjYXBlIHNlcXVlbmNlIGFuZCByZXR1cm4gdGhlIHJlcHJlc2VudGVkCisg
ICAqIGNoYXJhY3Rlci4gIFNlZSB1bmVzY2FwZSgpIGZvciBhIGxpc3Rpbmcgb2YgdGhlIHJlY29n
bml6ZWQgZXNjYXBlCisgICAqIHNlcXVlbmNlcy4gIFRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0LTEg
aXMgYXNzdW1lZCAod2l0aG91dAorICAgKiBjaGVja2luZykgdG8gYmUgYSBiYWNrc2xhc2guICBJ
ZiB0aGUgZXNjYXBlIHNlcXVlbmNlIGlzCisgICAqIGlsbC1mb3JtZWQsIG9yIHRoZSBvZmZzZXQg
aXMgb3V0IG9mIHJhbmdlLCAoVUNoYXIzMikweEZGRkZGRkZGIGlzCisgICAqIHJldHVybmVkLgor
ICAgKgorICAgKiBAcGFyYW0gb2Zmc2V0IGFuIGlucHV0IG91dHB1dCBwYXJhbWV0ZXIuICBPbiBp
bnB1dCwgaXQgaXMgdGhlCisgICAqIG9mZnNldCBpbnRvIHRoaXMgc3RyaW5nIHdoZXJlIHRoZSBl
c2NhcGUgc2VxdWVuY2UgaXMgbG9jYXRlZCwKKyAgICogYWZ0ZXIgdGhlIGluaXRpYWwgYmFja3Ns
YXNoLiAgT24gb3V0cHV0LCBpdCBpcyBhZHZhbmNlZCBhZnRlciB0aGUKKyAgICogbGFzdCBjaGFy
YWN0ZXIgcGFyc2VkLiAgT24gZXJyb3IsIGl0IGlzIG5vdCBhZHZhbmNlZCBhdCBhbGwuCisgICAq
IEByZXR1cm4gdGhlIGNoYXJhY3RlciByZXByZXNlbnRlZCBieSB0aGUgZXNjYXBlIHNlcXVlbmNl
IGF0CisgICAqIG9mZnNldCwgb3IgKFVDaGFyMzIpMHhGRkZGRkZGRiBvbiBlcnJvci4KKyAgICog
QHNlZSBVbmljb2RlU3RyaW5nI3VuZXNjYXBlKCkKKyAgICogQHNlZSB1X3VuZXNjYXBlKCkKKyAg
ICogQHNlZSB1X3VuZXNjYXBlQXQoKQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVD
aGFyMzIgdW5lc2NhcGVBdChpbnQzMl90ICZvZmZzZXQpIGNvbnN0OworCisgIC8qKgorICAgKiBJ
Q1UgInBvb3IgbWFuJ3MgUlRUSSIsIHJldHVybnMgYSBVQ2xhc3NJRCBmb3IgdGhpcyBjbGFzcy4K
KyAgICoKKyAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAqLworICBzdGF0aWMgVUNsYXNzSUQgVV9F
WFBPUlQyIGdldFN0YXRpY0NsYXNzSUQoKTsKKworICAvKioKKyAgICogSUNVICJwb29yIG1hbidz
IFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoZSBhY3R1YWwgY2xhc3MuCisgICAqCisg
ICAqIEBzdGFibGUgSUNVIDIuMgorICAgKi8KKyAgdmlydHVhbCBVQ2xhc3NJRCBnZXREeW5hbWlj
Q2xhc3NJRCgpIGNvbnN0OworCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorICAvLyBJbXBsZW1lbnRhdGlvbiBtZXRob2RzCisgIC8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwcm90ZWN0ZWQ6CisgIC8qKgorICAgKiBJbXBs
ZW1lbnQgUmVwbGFjZWFibGU6OmdldExlbmd0aCgpIChzZWUgaml0dGVyYnVnIDEwMjcpLgorICAg
KiBAc3RhYmxlIElDVSAyLjQKKyAgICovCisgIHZpcnR1YWwgaW50MzJfdCBnZXRMZW5ndGgoKSBj
b25zdDsKKworICAvKioKKyAgICogVGhlIGNoYW5nZSBpbiBSZXBsYWNlYWJsZSB0byB1c2Ugdmly
dHVhbCBnZXRDaGFyQXQoKSBhbGxvd3MKKyAgICogVW5pY29kZVN0cmluZzo6Y2hhckF0KCkgdG8g
YmUgaW5saW5lIGFnYWluIChzZWUgaml0dGVyYnVnIDcwOSkuCisgICAqIEBzdGFibGUgSUNVIDIu
NAorICAgKi8KKyAgdmlydHVhbCBVQ2hhciBnZXRDaGFyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0
OworCisgIC8qKgorICAgKiBUaGUgY2hhbmdlIGluIFJlcGxhY2VhYmxlIHRvIHVzZSB2aXJ0dWFs
IGdldENoYXIzMkF0KCkgYWxsb3dzCisgICAqIFVuaWNvZGVTdHJpbmc6OmNoYXIzMkF0KCkgdG8g
YmUgaW5saW5lIGFnYWluIChzZWUgaml0dGVyYnVnIDcwOSkuCisgICAqIEBzdGFibGUgSUNVIDIu
NAorICAgKi8KKyAgdmlydHVhbCBVQ2hhcjMyIGdldENoYXIzMkF0KGludDMyX3Qgb2Zmc2V0KSBj
b25zdDsKKworcHJpdmF0ZToKKyAgLy8gRm9yIGNoYXIqIGNvbnN0cnVjdG9ycy4gQ291bGQgYmUg
bWFkZSBwdWJsaWMuCisgIFVuaWNvZGVTdHJpbmcgJnNldFRvVVRGOChjb25zdCBTdHJpbmdQaWVj
ZSAmdXRmOCk7CisgIC8vIEZvciBleHRyYWN0KGNoYXIqKS4KKyAgLy8gV2UgY291bGQgbWFrZSBh
IHRvVVRGOCh0YXJnZXQsIGNhcGFjaXR5LCBlcnJvckNvZGUpIHB1YmxpYyBidXQgbm90CisgIC8v
IHRoaXMgdmVyc2lvbjogTmV3IEFQSSB3aWxsIGJlIGNsZWFuZXIgaWYgd2UgbWFrZSBjYWxsZXJz
IGNyZWF0ZSBzdWJzdHJpbmdzCisgIC8vIHJhdGhlciB0aGFuIGhhdmluZyBzdGFydCtsZW5ndGgg
b24gZXZlcnkgbWV0aG9kLAorICAvLyBhbmQgaXQgc2hvdWxkIHRha2UgYSBVRXJyb3JDb2RlJi4K
KyAgaW50MzJfdAorICB0b1VURjgoaW50MzJfdCBzdGFydCwgaW50MzJfdCBsZW4sCisgICAgICAg
ICBjaGFyICp0YXJnZXQsIGludDMyX3QgY2FwYWNpdHkpIGNvbnN0OworCisKKyAgaW5saW5lIGlu
dDhfdAorICBkb0NvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgsCisgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAg
IGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsK
KworICBpbnQ4X3QgZG9Db21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoLAorICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgIGlu
dDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKKwor
ICBpbmxpbmUgaW50OF90CisgIGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CisKKyAgaW50OF90IGRvQ29tcGFyZUNvZGVQb2lu
dE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCkgY29uc3Q7CisKKyAgaW5saW5lIGludDhfdAorICBkb0Nhc2VDb21wYXJlKGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAg
Y29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IHNy
Y1N0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAg
ICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIGludDhfdAorICBkb0Nhc2VDb21wYXJl
KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAg
ICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjU3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAg
ICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgaW50MzJfdCBkb0luZGV4T2YoVUNo
YXIgYywKKyAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCkgY29uc3Q7CisKKyAgaW50MzJfdCBkb0luZGV4T2YoVUNoYXIzMiBjLAorICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICBpbnQzMl90IGRvTGFzdEluZGV4T2YoVUNoYXIgYywK
KyAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoKSBjb25zdDsKKworICBpbnQzMl90IGRvTGFzdEluZGV4T2YoVUNoYXIzMiBjLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIHZvaWQgZG9FeHRyYWN0KGlu
dDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgIFVDaGFyICpk
c3QsCisgICAgICAgICBpbnQzMl90IGRzdFN0YXJ0KSBjb25zdDsKKworICBpbmxpbmUgdm9pZCBk
b0V4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAg
ICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdDsKKworICBpbmxpbmUgVUNoYXIgZG9DaGFy
QXQoaW50MzJfdCBvZmZzZXQpICBjb25zdDsKKworICBVbmljb2RlU3RyaW5nJiBkb1JlcGxhY2Uo
aW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgIGludDMy
X3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgVW5p
Y29kZVN0cmluZyYgZG9SZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQz
Ml90IGxlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAg
ICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCk7CisKKyAgVW5pY29kZVN0cmluZyYgZG9SZXZlcnNlKGludDMyX3Qgc3RhcnQsCisgICAg
ICAgICAgICAgICBpbnQzMl90IGxlbmd0aCk7CisKKyAgLy8gY2FsY3VsYXRlIGhhc2ggY29kZQor
ICBpbnQzMl90IGRvSGFzaENvZGUodm9pZCkgY29uc3Q7CisKKyAgLy8gZ2V0IHBvaW50ZXIgdG8g
c3RhcnQgb2YgYXJyYXkKKyAgLy8gdGhlc2UgZG8gbm90IGNoZWNrIGZvciBrT3BlbkdldEJ1ZmZl
ciwgdW5saWtlIHRoZSBwdWJsaWMgZ2V0QnVmZmVyKCkgZnVuY3Rpb24KKyAgaW5saW5lIFVDaGFy
KiBnZXRBcnJheVN0YXJ0KHZvaWQpOworICBpbmxpbmUgY29uc3QgVUNoYXIqIGdldEFycmF5U3Rh
cnQodm9pZCkgY29uc3Q7CisKKyAgLy8gQSBVbmljb2RlU3RyaW5nIG9iamVjdCAobm90IG5lY2Vz
c2FyaWx5IGl0cyBjdXJyZW50IGJ1ZmZlcikKKyAgLy8gaXMgd3JpdGFibGUgdW5sZXNzIGl0IGlz
Qm9ndXMoKSBvciBpdCBoYXMgYW4gIm9wZW4iIGdldEJ1ZmZlcihtaW5DYXBhY2l0eSkuCisgIGlu
bGluZSBVQm9vbCBpc1dyaXRhYmxlKCkgY29uc3Q7CisKKyAgLy8gSXMgdGhlIGN1cnJlbnQgYnVm
ZmVyIHdyaXRhYmxlPworICBpbmxpbmUgVUJvb2wgaXNCdWZmZXJXcml0YWJsZSgpIGNvbnN0Owor
CisgIC8vIE5vbmUgb2YgdGhlIGZvbGxvd2luZyBkb2VzIHJlbGVhc2VBcnJheSgpLgorICBpbmxp
bmUgdm9pZCBzZXRMZW5ndGgoaW50MzJfdCBsZW4pOyAgICAgICAgLy8gc2V0cyBvbmx5IGZTaG9y
dExlbmd0aCBhbmQgZkxlbmd0aAorICBpbmxpbmUgdm9pZCBzZXRUb0VtcHR5KCk7ICAgICAgICAg
ICAgICAgICAgLy8gc2V0cyBmRmxhZ3M9a1Nob3J0U3RyaW5nCisgIGlubGluZSB2b2lkIHNldEFy
cmF5KFVDaGFyICphcnJheSwgaW50MzJfdCBsZW4sIGludDMyX3QgY2FwYWNpdHkpOyAvLyBkb2Vz
IG5vdCBzZXQgZkZsYWdzCisKKyAgLy8gYWxsb2NhdGUgdGhlIGFycmF5OyByZXN1bHQgbWF5IGJl
IGZTdGFja0J1ZmZlcgorICAvLyBzZXRzIHJlZkNvdW50IHRvIDEgaWYgYXBwcm9wcmlhdGUKKyAg
Ly8gc2V0cyBmQXJyYXksIGZDYXBhY2l0eSwgYW5kIGZGbGFncworICAvLyByZXR1cm5zIGJvb2xl
YW4gZm9yIHN1Y2Nlc3Mgb3IgZmFpbHVyZQorICBVQm9vbCBhbGxvY2F0ZShpbnQzMl90IGNhcGFj
aXR5KTsKKworICAvLyByZWxlYXNlIHRoZSBhcnJheSBpZiBvd25lZAorICB2b2lkIHJlbGVhc2VB
cnJheSh2b2lkKTsKKworICAvLyB0dXJuIGEgYm9ndXMgc3RyaW5nIGludG8gYW4gZW1wdHkgb25l
CisgIHZvaWQgdW5Cb2d1cygpOworCisgIC8vIGltcGxlbWVudHMgYXNzaWdtZW50IG9wZXJhdG9y
LCBjb3B5IGNvbnN0cnVjdG9yLCBhbmQgZmFzdENvcHlGcm9tKCkKKyAgVW5pY29kZVN0cmluZyAm
Y29weUZyb20oY29uc3QgVW5pY29kZVN0cmluZyAmc3JjLCBVQm9vbCBmYXN0Q29weT1GQUxTRSk7
CisKKyAgLy8gUGluIHN0YXJ0IGFuZCBsaW1pdCB0byBhY2NlcHRhYmxlIHZhbHVlcy4KKyAgaW5s
aW5lIHZvaWQgcGluSW5kZXgoaW50MzJfdCYgc3RhcnQpIGNvbnN0OworICBpbmxpbmUgdm9pZCBw
aW5JbmRpY2VzKGludDMyX3QmIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QmIGxlbmd0aCkgY29uc3Q7CisKKyNpZiAhVUNPTkZJR19OT19DT05WRVJTSU9OCisKKyAgLyog
SW50ZXJuYWwgZXh0cmFjdCgpIHVzaW5nIFVDb252ZXJ0ZXIuICovCisgIGludDMyX3QgZG9FeHRy
YWN0KGludDMyX3Qgc3RhcnQsIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBj
aGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgVUNv
bnZlcnRlciAqY252LAorICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNvZGUp
IGNvbnN0OworCisgIC8qCisgICAqIFJlYWwgY29uc3RydWN0b3IgZm9yIGNvbnZlcnRpbmcgZnJv
bSBjb2RlcGFnZSBkYXRhLgorICAgKiBJdCBhc3N1bWVzIHRoYXQgaXQgaXMgY2FsbGVkIHdpdGgg
IWZSZWZDb3VudGVkLgorICAgKgorICAgKiBJZiA8Y29kZT5jb2RlcGFnZT09MDwvY29kZT4sIHRo
ZW4gdGhlIGRlZmF1bHQgY29udmVydGVyCisgICAqIGlzIHVzZWQgZm9yIHRoZSBwbGF0Zm9ybSBl
bmNvZGluZy4KKyAgICogSWYgPGNvZGU+Y29kZXBhZ2U8L2NvZGU+IGlzIGFuIGVtcHR5IHN0cmlu
ZyAoPGNvZGU+IiI8L2NvZGU+KSwKKyAgICogdGhlbiBhIHNpbXBsZSBjb252ZXJzaW9uIGlzIHBl
cmZvcm1lZCBvbiB0aGUgY29kZXBhZ2UtaW52YXJpYW50CisgICAqIHN1YnNldCAoImludmFyaWFu
dCBjaGFyYWN0ZXJzIikgb2YgdGhlIHBsYXRmb3JtIGVuY29kaW5nLiBTZWUgdXR5cGVzLmguCisg
ICAqLworICB2b2lkIGRvQ29kZXBhZ2VDcmVhdGUoY29uc3QgY2hhciAqY29kZXBhZ2VEYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkYXRhTGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZXBhZ2UpOworCisgIC8qCisgICAqIFdvcmtlciBm
dW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBVbmljb2RlU3RyaW5nIGZyb20KKyAgICogYSBjb2RlcGFn
ZSBzdHJpbmcgdXNpbmcgYSBVQ29udmVydGVyLgorICAgKi8KKyAgdm9pZAorICBkb0NvZGVwYWdl
Q3JlYXRlKGNvbnN0IGNoYXIgKmNvZGVwYWdlRGF0YSwKKyAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IGRhdGFMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlciAqY29udmVydGVy
LAorICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cyk7CisKKyNlbmRpZgorCisg
IC8qCisgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd3JpdGUgYWNjZXNzIHRvIHRo
ZSBhcnJheQorICAgKiBpcyBuZWNlc3NhcnkuCisgICAqCisgICAqIFdlIG5lZWQgdG8gbWFrZSBh
IGNvcHkgb2YgdGhlIGFycmF5IGlmCisgICAqIHRoZSBidWZmZXIgaXMgcmVhZC1vbmx5LCBvcgor
ICAgKiB0aGUgYnVmZmVyIGlzIHJlZkNvdW50ZWQgKHNoYXJlZCksIGFuZCByZWZDb3VudD4xLCBv
cgorICAgKiB0aGUgYnVmZmVyIGlzIHRvbyBzbWFsbC4KKyAgICoKKyAgICogUmV0dXJuIEZBTFNF
IGlmIG1lbW9yeSBjb3VsZCBub3QgYmUgYWxsb2NhdGVkLgorICAgKi8KKyAgVUJvb2wgY2xvbmVB
cnJheUlmTmVlZGVkKGludDMyX3QgbmV3Q2FwYWNpdHkgPSAtMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IGdyb3dDYXBhY2l0eSA9IC0xLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVCb29sIGRvQ29weUFycmF5ID0gVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90ICoqcEJ1ZmZlclRvRGVsZXRlID0gMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQm9vbCBmb3JjZUNsb25lID0gRkFMU0UpOworCisgIC8vIGNvbW1vbiBmdW5j
dGlvbiBmb3IgY2FzZSBtYXBwaW5ncworICBVbmljb2RlU3RyaW5nICYKKyAgY2FzZU1hcChCcmVh
a0l0ZXJhdG9yICp0aXRsZUl0ZXIsCisgICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxlLAorICAg
ICAgICAgIHVpbnQzMl90IG9wdGlvbnMsCisgICAgICAgICAgaW50MzJfdCB0b1doaWNoQ2FzZSk7
CisKKyAgLy8gcmVmIGNvdW50aW5nCisgIHZvaWQgYWRkUmVmKHZvaWQpOworICBpbnQzMl90IHJl
bW92ZVJlZih2b2lkKTsKKyAgaW50MzJfdCByZWZDb3VudCh2b2lkKSBjb25zdDsKKworICAvLyBj
b25zdGFudHMKKyAgZW51bSB7CisgICAgLy8gU2V0IHRoZSBzdGFjayBidWZmZXIgc2l6ZSBzbyB0
aGF0IHNpemVvZihVbmljb2RlU3RyaW5nKSBpcyBhIG11bHRpcGxlIG9mIHNpemVvZihwb2ludGVy
KToKKyAgICAvLyAzMi1iaXQgcG9pbnRlcnM6IDQrMSsxKzEzKjIgPSAzMiBieXRlcworICAgIC8v
IDY0LWJpdCBwb2ludGVyczogOCsxKzErMTUqMiA9IDQwIGJ5dGVzCisgICAgVVNfU1RBQ0tCVUZf
U0laRT0gc2l6ZW9mKHZvaWQgKik9PTQgPyAxMyA6IDE1LCAvLyBTaXplIG9mIHN0YWNrIGJ1ZmZl
ciBmb3Igc21hbGwgc3RyaW5ncworICAgIGtJbnZhbGlkVUNoYXI9MHhmZmZmLCAvLyBpbnZhbGlk
IFVDaGFyIGluZGV4CisgICAga0dyb3dTaXplPTEyOCwgLy8gZ3JvdyBzaXplIGZvciB0aGlzIGJ1
ZmZlcgorICAgIGtJbnZhbGlkSGFzaENvZGU9MCwgLy8gaW52YWxpZCBoYXNoIGNvZGUKKyAgICBr
RW1wdHlIYXNoQ29kZT0xLCAvLyBoYXNoIGNvZGUgZm9yIGVtcHR5IHN0cmluZworCisgICAgLy8g
Yml0IGZsYWcgdmFsdWVzIGZvciBmRmxhZ3MKKyAgICBrSXNCb2d1cz0xLCAgICAgICAgIC8vIHRo
aXMgc3RyaW5nIGlzIGJvZ3VzLCBpLmUuLCBub3QgdmFsaWQgb3IgTlVMTAorICAgIGtVc2luZ1N0
YWNrQnVmZmVyPTIsLy8gZkFycmF5PT1mU3RhY2tCdWZmZXIKKyAgICBrUmVmQ291bnRlZD00LCAg
ICAgIC8vIHRoZXJlIGlzIGEgcmVmQ291bnQgZmllbGQgYmVmb3JlIHRoZSBjaGFyYWN0ZXJzIGlu
IGZBcnJheQorICAgIGtCdWZmZXJJc1JlYWRvbmx5PTgsLy8gZG8gbm90IHdyaXRlIHRvIHRoaXMg
YnVmZmVyCisgICAga09wZW5HZXRCdWZmZXI9MTYsICAvLyBnZXRCdWZmZXIobWluQ2FwYWNpdHkp
IHdhcyBjYWxsZWQgKGlzICJvcGVuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQg
cmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpIG11c3QgYmUgY2FsbGVkCisKKyAgICAvLyBjb21iaW5l
ZCB2YWx1ZXMgZm9yIGNvbnZlbmllbmNlCisgICAga1Nob3J0U3RyaW5nPWtVc2luZ1N0YWNrQnVm
ZmVyLAorICAgIGtMb25nU3RyaW5nPWtSZWZDb3VudGVkLAorICAgIGtSZWFkb25seUFsaWFzPWtC
dWZmZXJJc1JlYWRvbmx5LAorICAgIGtXcml0YWJsZUFsaWFzPTAKKyAgfTsKKworICBmcmllbmQg
Y2xhc3MgU3RyaW5nVGhyZWFkVGVzdDsKKworICB1bmlvbiBTdGFja0J1ZmZlck9yRmllbGRzOyAg
ICAgICAgLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBuZWNlc3NhcnkgYmVmb3JlIGZyaWVuZCBkZWNs
YXJhdGlvbgorICBmcmllbmQgdW5pb24gU3RhY2tCdWZmZXJPckZpZWxkczsgLy8gbWFrZSBVU19T
VEFDS0JVRl9TSVpFIHZpc2libGUgaW5zaWRlIGZVbmlvbgorCisgIC8qCisgICAqIFRoZSBmb2xs
b3dpbmcgYXJlIGFsbCB0aGUgY2xhc3MgZmllbGRzIHRoYXQgYXJlIHN0b3JlZAorICAgKiBpbiBl
YWNoIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBOb3RlIHRoYXQgVW5pY29kZVN0cmluZyBo
YXMgdmlydHVhbCBmdW5jdGlvbnMsCisgICAqIHRoZXJlZm9yZSB0aGVyZSBpcyBhbiBpbXBsaWNp
dCB2dGFibGUgcG9pbnRlcgorICAgKiBhcyB0aGUgZmlyc3QgcmVhbCBmaWVsZC4KKyAgICogVGhl
IGZpZWxkcyBzaG91bGQgYmUgYWxpZ25lZCBzdWNoIHRoYXQgbm8gcGFkZGluZyBpcworICAgKiBu
ZWNlc3NhcnksIG1vc3RseSBieSBoYXZpbmcgbGFyZ2VyIHR5cGVzIGZpcnN0LgorICAgKiBPbiAz
Mi1iaXQgbWFjaGluZXMsIHRoZSBzaXplIHNob3VsZCBiZSAzMiBieXRlcywKKyAgICogb24gNjQt
Yml0IG1hY2hpbmVzICg4LWJ5dGUgcG9pbnRlcnMpLCBpdCBzaG91bGQgYmUgNDAgYnl0ZXMuCisg
ICAqLworICAvLyAoaW1wbGljaXQpICp2dGFibGU7CisgIGludDhfdCAgICBmU2hvcnRMZW5ndGg7
ICAgLy8gMC4uMTI3OiBsZW5ndGggIDwwOiByZWFsIGxlbmd0aCBpcyBpbiBmVW5pb24uZkZpZWxk
cy5mTGVuZ3RoCisgIHVpbnQ4X3QgICBmRmxhZ3M7ICAgICAgICAgLy8gYml0IGZsYWdzOiBzZWUg
Y29uc3RhbnRzIGFib3ZlCisgIHVuaW9uIFN0YWNrQnVmZmVyT3JGaWVsZHMgeworICAgIC8vIGZT
dGFja0J1ZmZlciBpcyB1c2VkIGlmZiAoZkZsYWdzJmtVc2luZ1N0YWNrQnVmZmVyKQorICAgIC8v
IGVsc2UgZkZpZWxkcyBpcyB1c2VkCisgICAgVUNoYXIgICAgIGZTdGFja0J1ZmZlciBbVVNfU1RB
Q0tCVUZfU0laRV07IC8vIGJ1ZmZlciBmb3Igc21hbGwgc3RyaW5ncworICAgIHN0cnVjdCB7Cisg
ICAgICB1aW50MTZfdCAgZlBhZGRpbmc7ICAgLy8gYWxpZ24gdGhlIGZvbGxvd2luZyBmaWVsZCBh
dCA4QiAoMzJiIHBvaW50ZXJzKSBvciAxMkIgKDY0YikKKyAgICAgIGludDMyX3QgICBmTGVuZ3Ro
OyAgICAvLyBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBmQXJyYXkgaWYgPjEyNzsgZWxzZSB1bmRl
ZmluZWQKKyAgICAgIFVDaGFyICAgICAqZkFycmF5OyAgICAvLyB0aGUgVW5pY29kZSBkYXRhIChh
bGlnbmVkIGF0IDEyQiAoMzJiIHBvaW50ZXJzKSBvciAxNkIgKDY0YikpCisgICAgICBpbnQzMl90
ICAgZkNhcGFjaXR5OyAgLy8gc2l6ZW9mIGZBcnJheQorICAgIH0gZkZpZWxkczsKKyAgfSBmVW5p
b247Cit9OworCisvKioKKyAqIENyZWF0ZSBhIG5ldyBVbmljb2RlU3RyaW5nIHdpdGggdGhlIGNv
bmNhdGVuYXRpb24gb2YgdHdvIG90aGVycy4KKyAqCisgKiBAcGFyYW0gczEgVGhlIGZpcnN0IHN0
cmluZyB0byBiZSBjb3BpZWQgdG8gdGhlIG5ldyBvbmUuCisgKiBAcGFyYW0gczIgVGhlIHNlY29u
ZCBzdHJpbmcgdG8gYmUgY29waWVkIHRvIHRoZSBuZXcgb25lLCBhZnRlciBzMS4KKyAqIEByZXR1
cm4gVW5pY29kZVN0cmluZyhzMSkuYXBwZW5kKHMyKQorICogQHN0YWJsZSBJQ1UgMi44CisgKi8K
K1VfQ09NTU9OX0FQSSBVbmljb2RlU3RyaW5nIFVfRVhQT1JUMgorb3BlcmF0b3IrIChjb25zdCBV
bmljb2RlU3RyaW5nICZzMSwgY29uc3QgVW5pY29kZVN0cmluZyAmczIpOworCisvLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIElubGluZSBtZW1iZXJzCisvLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBQcml2YXRlcworLy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2lubGluZSB2b2lkCitVbmljb2RlU3RyaW5n
OjpwaW5JbmRleChpbnQzMl90JiBzdGFydCkgY29uc3QKK3sKKyAgLy8gcGluIGluZGV4CisgIGlm
KHN0YXJ0IDwgMCkgeworICAgIHN0YXJ0ID0gMDsKKyAgfSBlbHNlIGlmKHN0YXJ0ID4gbGVuZ3Ro
KCkpIHsKKyAgICBzdGFydCA9IGxlbmd0aCgpOworICB9Cit9CisKK2lubGluZSB2b2lkCitVbmlj
b2RlU3RyaW5nOjpwaW5JbmRpY2VzKGludDMyX3QmIHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90JiBfbGVuZ3RoKSBjb25zdAoreworICAvLyBwaW4gaW5kaWNlcworICBp
bnQzMl90IGxlbiA9IGxlbmd0aCgpOworICBpZihzdGFydCA8IDApIHsKKyAgICBzdGFydCA9IDA7
CisgIH0gZWxzZSBpZihzdGFydCA+IGxlbikgeworICAgIHN0YXJ0ID0gbGVuOworICB9CisgIGlm
KF9sZW5ndGggPCAwKSB7CisgICAgX2xlbmd0aCA9IDA7CisgIH0gZWxzZSBpZihfbGVuZ3RoID4g
KGxlbiAtIHN0YXJ0KSkgeworICAgIF9sZW5ndGggPSAobGVuIC0gc3RhcnQpOworICB9Cit9CisK
K2lubGluZSBVQ2hhcioKK1VuaWNvZGVTdHJpbmc6OmdldEFycmF5U3RhcnQoKQoreyByZXR1cm4g
KGZGbGFncyZrVXNpbmdTdGFja0J1ZmZlcikgPyBmVW5pb24uZlN0YWNrQnVmZmVyIDogZlVuaW9u
LmZGaWVsZHMuZkFycmF5OyB9CisKK2lubGluZSBjb25zdCBVQ2hhcioKK1VuaWNvZGVTdHJpbmc6
OmdldEFycmF5U3RhcnQoKSBjb25zdAoreyByZXR1cm4gKGZGbGFncyZrVXNpbmdTdGFja0J1ZmZl
cikgPyBmVW5pb24uZlN0YWNrQnVmZmVyIDogZlVuaW9uLmZGaWVsZHMuZkFycmF5OyB9CisKKy8v
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gUmVhZC1vbmx5IGlt
cGxlbWVudGF0aW9uIG1ldGhvZHMKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQoraW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxlbmd0aCgpIGNvbnN0Cit7
IHJldHVybiBmU2hvcnRMZW5ndGg+PTAgPyBmU2hvcnRMZW5ndGggOiBmVW5pb24uZkZpZWxkcy5m
TGVuZ3RoOyB9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpnZXRDYXBhY2l0eSgp
IGNvbnN0Cit7IHJldHVybiAoZkZsYWdzJmtVc2luZ1N0YWNrQnVmZmVyKSA/IFVTX1NUQUNLQlVG
X1NJWkUgOiBmVW5pb24uZkZpZWxkcy5mQ2FwYWNpdHk7IH0KKworaW5saW5lIGludDMyX3QKK1Vu
aWNvZGVTdHJpbmc6Omhhc2hDb2RlKCkgY29uc3QKK3sgcmV0dXJuIGRvSGFzaENvZGUoKTsgfQor
CitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OmlzQm9ndXMoKSBjb25zdAoreyByZXR1cm4g
KFVCb29sKShmRmxhZ3MgJiBrSXNCb2d1cyk7IH0KKworaW5saW5lIFVCb29sCitVbmljb2RlU3Ry
aW5nOjppc1dyaXRhYmxlKCkgY29uc3QKK3sgcmV0dXJuIChVQm9vbCkhKGZGbGFncyYoa09wZW5H
ZXRCdWZmZXJ8a0lzQm9ndXMpKTsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6Omlz
QnVmZmVyV3JpdGFibGUoKSBjb25zdAoreworICByZXR1cm4gKFVCb29sKSgKKyAgICAgICEoZkZs
YWdzJihrT3BlbkdldEJ1ZmZlcnxrSXNCb2d1c3xrQnVmZmVySXNSZWFkb25seSkpICYmCisgICAg
ICAoIShmRmxhZ3Mma1JlZkNvdW50ZWQpIHx8IHJlZkNvdW50KCk9PTEpKTsKK30KKworaW5saW5l
IGNvbnN0IFVDaGFyICoKK1VuaWNvZGVTdHJpbmc6OmdldEJ1ZmZlcigpIGNvbnN0IHsKKyAgaWYo
ZkZsYWdzJihrSXNCb2d1c3xrT3BlbkdldEJ1ZmZlcikpIHsKKyAgICByZXR1cm4gMDsKKyAgfSBl
bHNlIGlmKGZGbGFncyZrVXNpbmdTdGFja0J1ZmZlcikgeworICAgIHJldHVybiBmVW5pb24uZlN0
YWNrQnVmZmVyOworICB9IGVsc2UgeworICAgIHJldHVybiBmVW5pb24uZkZpZWxkcy5mQXJyYXk7
CisgIH0KK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisv
LyBSZWFkLW9ubHkgYWxpYXMgbWV0aG9kcworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CitpbmxpbmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpkb0NvbXBhcmUoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCB0aGlzTGVuZ3RoLAorICAgICAgICAg
ICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sKKyAg
aWYoc3JjVGV4dC5pc0JvZ3VzKCkpIHsKKyAgICByZXR1cm4gKGludDhfdCkhaXNCb2d1cygpOyAv
LyAwIGlmIGJvdGggYXJlIGJvZ3VzLCAxIG90aGVyd2lzZQorICB9IGVsc2UgeworICAgIHNyY1Rl
eHQucGluSW5kaWNlcyhzcmNTdGFydCwgc3JjTGVuZ3RoKTsKKyAgICByZXR1cm4gZG9Db21wYXJl
KHN0YXJ0LCB0aGlzTGVuZ3RoLCBzcmNUZXh0LmdldEFycmF5U3RhcnQoKSwgc3JjU3RhcnQsIHNy
Y0xlbmd0aCk7CisgIH0KK30KKworaW5saW5lIFVCb29sCitVbmljb2RlU3RyaW5nOjpvcGVyYXRv
cj09IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreworICBpZihpc0JvZ3VzKCkp
IHsKKyAgICByZXR1cm4gdGV4dC5pc0JvZ3VzKCk7CisgIH0gZWxzZSB7CisgICAgaW50MzJfdCBs
ZW4gPSBsZW5ndGgoKSwgdGV4dExlbmd0aCA9IHRleHQubGVuZ3RoKCk7CisgICAgcmV0dXJuCisg
ICAgICAhdGV4dC5pc0JvZ3VzKCkgJiYKKyAgICAgIGxlbiA9PSB0ZXh0TGVuZ3RoICYmCisgICAg
ICBkb0NvbXBhcmUoMCwgbGVuLCB0ZXh0LCAwLCB0ZXh0TGVuZ3RoKSA9PSAwOworICB9Cit9CisK
K2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3BlcmF0b3IhPSAoY29uc3QgVW5pY29kZVN0
cmluZyYgdGV4dCkgY29uc3QKK3sgcmV0dXJuICghIG9wZXJhdG9yPT0odGV4dCkpOyB9CisKK2lu
bGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3BlcmF0b3I+IChjb25zdCBVbmljb2RlU3RyaW5n
JiB0ZXh0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlKDAsIGxlbmd0aCgpLCB0ZXh0LCAwLCB0
ZXh0Lmxlbmd0aCgpKSA9PSAxOyB9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3Bl
cmF0b3I8IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreyByZXR1cm4gZG9Db21w
YXJlKDAsIGxlbmd0aCgpLCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpKSA9PSAtMTsgfQorCitpbmxp
bmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6Om9wZXJhdG9yPj0gKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHRleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVuZ3RoKCksIHRleHQsIDAsIHRl
eHQubGVuZ3RoKCkpICE9IC0xOyB9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3Bl
cmF0b3I8PSAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3QKK3sgcmV0dXJuIGRvQ29t
cGFyZSgwLCBsZW5ndGgoKSwgdGV4dCwgMCwgdGV4dC5sZW5ndGgoKSkgIT0gMTsgfQorCitpbmxp
bmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpjb21wYXJlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRl
eHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVuZ3RoKCksIHRleHQsIDAsIHRleHQu
bGVuZ3RoKCkpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAg
ICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBh
cmUoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIDAsIHNyY1RleHQubGVuZ3RoKCkpOyB9CisKK2lu
bGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7IHJldHVybiBkb0Nv
bXBhcmUoMCwgbGVuZ3RoKCksIHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBp
bnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAg
ICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUoc3RhcnQsIF9s
ZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QK
K1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGlu
dDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycykgY29u
c3QKK3sgcmV0dXJuIGRvQ29tcGFyZShzdGFydCwgX2xlbmd0aCwgc3JjQ2hhcnMsIDAsIF9sZW5n
dGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBz
dGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNv
bnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisg
ICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFy
ZShzdGFydCwgX2xlbmd0aCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisKK2lu
bGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmVCZXR3ZWVuKGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAgY29u
c3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdAoreyByZXR1
cm4gZG9Db21wYXJlKHN0YXJ0LCBsaW1pdCAtIHN0YXJ0LAorICAgICAgICAgICBzcmNUZXh0LCBz
cmNTdGFydCwgc3JjTGltaXQgLSBzcmNTdGFydCk7IH0KKworaW5saW5lIGludDhfdAorVW5pY29k
ZVN0cmluZzo6ZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdGhpc0xlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNy
Y1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNy
Y1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBz
cmNMZW5ndGgpIGNvbnN0Cit7CisgIGlmKHNyY1RleHQuaXNCb2d1cygpKSB7CisgICAgcmV0dXJu
IChpbnQ4X3QpIWlzQm9ndXMoKTsgLy8gMCBpZiBib3RoIGFyZSBib2d1cywgMSBvdGhlcndpc2UK
KyAgfSBlbHNlIHsKKyAgICBzcmNUZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7
CisgICAgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKHN0YXJ0LCB0aGlzTGVuZ3RoLCBz
cmNUZXh0LmdldEFycmF5U3RhcnQoKSwgc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgIH0KK30KKwor
aW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVyKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRP
cmRlcigwLCBsZW5ndGgoKSwgdGV4dCwgMCwgdGV4dC5sZW5ndGgoKSk7IH0KKworaW5saW5lIGlu
dDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcihzdGFydCwg
X2xlbmd0aCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7IH0KKworaW5saW5lIGludDhf
dAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVyKGNvbnN0IFVDaGFyICpzcmND
aGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKDAsIGxlbmd0aCgp
LCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgaW50OF90CitVbmljb2RlU3Ry
aW5nOjpjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdAor
eyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQs
IHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6
OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMpIGNvbnN0Cit7IHJldHVybiBk
b0NvbXBhcmVDb2RlUG9pbnRPcmRlcihzdGFydCwgX2xlbmd0aCwgc3JjQ2hhcnMsIDAsIF9sZW5n
dGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRP
cmRlcihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2ludE9y
ZGVyKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0KKwor
aW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVyQmV0d2Vl
bihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdAor
eyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIGxpbWl0IC0gc3RhcnQsCisg
ICAgICAgICAgIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMaW1pdCAtIHNyY1N0YXJ0KTsgfQorCitp
bmxpbmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpkb0Nhc2VDb21wYXJlKGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdGhpc0xlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0Cit7CisgIGlmKHNyY1RleHQuaXNCb2d1
cygpKSB7CisgICAgcmV0dXJuIChpbnQ4X3QpIWlzQm9ndXMoKTsgLy8gMCBpZiBib3RoIGFyZSBi
b2d1cywgMSBvdGhlcndpc2UKKyAgfSBlbHNlIHsKKyAgICBzcmNUZXh0LnBpbkluZGljZXMoc3Jj
U3RhcnQsIHNyY0xlbmd0aCk7CisgICAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUoc3RhcnQsIHRoaXNM
ZW5ndGgsIHNyY1RleHQuZ2V0QXJyYXlTdGFydCgpLCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBvcHRp
b25zKTsKKyAgfQorfQorCitpbmxpbmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpjYXNlQ29tcGFy
ZShjb25zdCBVbmljb2RlU3RyaW5nICZ0ZXh0LCB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7Cisg
IHJldHVybiBkb0Nhc2VDb21wYXJlKDAsIGxlbmd0aCgpLCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgp
LCBvcHRpb25zKTsKK30KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBh
cmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNy
Y1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25z
dCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNUZXh0LCAwLCBz
cmNUZXh0Lmxlbmd0aCgpLCBvcHRpb25zKTsKK30KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0
cmluZzo6Y2FzZUNvbXBhcmUoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKDAsIGxl
bmd0aCgpLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKK30KKworaW5saW5lIGlu
dDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNyY1RleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRp
b25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNU
ZXh0LCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKK30KKworaW5saW5lIGludDhfdAor
VW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IG9wdGlvbnMpIGNvbnN0IHsKKyAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUoc3RhcnQsIF9sZW5n
dGgsIHNyY0NoYXJzLCAwLCBfbGVuZ3RoLCBvcHRpb25zKTsKK30KKworaW5saW5lIGludDhfdAor
VW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0IHsK
KyAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJzLCBzcmNTdGFy
dCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKK30KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmlu
Zzo6Y2FzZUNvbXBhcmVCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nICZzcmNUZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJl
KHN0YXJ0LCBsaW1pdCAtIHN0YXJ0LCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGltaXQgLSBzcmNT
dGFydCwgb3B0aW9ucyk7Cit9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjppbmRl
eE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAg
ICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25z
dAoreworICBpZighc3JjVGV4dC5pc0JvZ3VzKCkpIHsKKyAgICBzcmNUZXh0LnBpbkluZGljZXMo
c3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgaWYoc3JjTGVuZ3RoID4gMCkgeworICAgICAgcmV0
dXJuIGluZGV4T2Yoc3JjVGV4dC5nZXRBcnJheVN0YXJ0KCksIHNyY1N0YXJ0LCBzcmNMZW5ndGgs
IHN0YXJ0LCBfbGVuZ3RoKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIC0xOworfQorCitpbmxpbmUg
aW50MzJfdAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0
KSBjb25zdAoreyByZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpLCAwLCBsZW5n
dGgoKSk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoY29uc3Qg
VW5pY29kZVN0cmluZyYgdGV4dCwKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0
IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICByZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxl
bmd0aCgpLCBzdGFydCwgbGVuZ3RoKCkgLSBzdGFydCk7Cit9CisKK2lubGluZSBpbnQzMl90CitV
bmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAg
ICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBj
b25zdAoreyByZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpLCBzdGFydCwgX2xl
bmd0aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoY29uc3Qg
VUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAg
ICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdCB7CisgIHBpbkluZGV4KHN0YXJ0KTsKKyAg
cmV0dXJuIGluZGV4T2Yoc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCwgc3RhcnQsIGxlbmd0aCgpIC0g
c3RhcnQpOworfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihjb25z
dCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAg
ICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5n
dGgpIGNvbnN0Cit7IHJldHVybiBpbmRleE9mKHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgsIHN0YXJ0
LCBfbGVuZ3RoKTsgfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihV
Q2hhciBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGlu
dDMyX3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhPZihjLCBzdGFydCwgX2xlbmd0
aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIzMiBj
LAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3Qg
X2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhPZihjLCBzdGFydCwgX2xlbmd0aCk7IH0K
KworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIgYykgY29uc3QK
K3sgcmV0dXJuIGRvSW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7IH0KKworaW5saW5lIGludDMyX3QK
K1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIzMiBjKSBjb25zdAoreyByZXR1cm4gaW5kZXhP
ZihjLCAwLCBsZW5ndGgoKSk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omlu
ZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0IHsKKyAg
cGluSW5kZXgoc3RhcnQpOworICByZXR1cm4gZG9JbmRleE9mKGMsIHN0YXJ0LCBsZW5ndGgoKSAt
IHN0YXJ0KTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNo
YXIzMiBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QgeworICBwaW5JbmRl
eChzdGFydCk7CisgIHJldHVybiBpbmRleE9mKGMsIHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsK
K30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNvbnN0IFVD
aGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAg
ICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkg
Y29uc3QKK3sgcmV0dXJuIGxhc3RJbmRleE9mKHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgsIHN0YXJ0
LCBfbGVuZ3RoKTsgfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0cmluZzo6bGFzdEluZGV4
T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdCB7CisgIHBpbkluZGV4KHN0
YXJ0KTsKKyAgcmV0dXJuIGxhc3RJbmRleE9mKHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgsIHN0YXJ0
LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6
Omxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisg
ICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVu
Z3RoKSBjb25zdAoreworICBpZighc3JjVGV4dC5pc0JvZ3VzKCkpIHsKKyAgICBzcmNUZXh0LnBp
bkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgaWYoc3JjTGVuZ3RoID4gMCkgewor
ICAgICAgcmV0dXJuIGxhc3RJbmRleE9mKHNyY1RleHQuZ2V0QXJyYXlTdGFydCgpLCBzcmNTdGFy
dCwgc3JjTGVuZ3RoLCBzdGFydCwgX2xlbmd0aCk7CisgICAgfQorICB9CisgIHJldHVybiAtMTsK
K30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNvbnN0IFVu
aWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAoreyByZXR1cm4gbGFzdEluZGV4T2YodGV4
dCwgMCwgdGV4dC5sZW5ndGgoKSwgc3RhcnQsIF9sZW5ndGgpOyB9CisKK2lubGluZSBpbnQzMl90
CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LAor
ICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QgeworICBwaW5JbmRleChzdGFydCk7
CisgIHJldHVybiBsYXN0SW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpLCBzdGFydCwgbGVu
Z3RoKCkgLSBzdGFydCk7Cit9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0
SW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreyByZXR1cm4gbGFzdElu
ZGV4T2YodGV4dCwgMCwgdGV4dC5sZW5ndGgoKSwgMCwgbGVuZ3RoKCkpOyB9CisKK2lubGluZSBp
bnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hhciBjLAorICAgICAgICAgICAg
ICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkgY29uc3QK
K3sgcmV0dXJuIGRvTGFzdEluZGV4T2YoYywgc3RhcnQsIF9sZW5ndGgpOyB9CisKK2lubGluZSBp
bnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hhcjMyIGMsCisgICAgICAgICAg
ICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25z
dCB7CisgIHJldHVybiBkb0xhc3RJbmRleE9mKGMsIHN0YXJ0LCBfbGVuZ3RoKTsKK30KKworaW5s
aW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyIGMpIGNvbnN0Cit7
IHJldHVybiBkb0xhc3RJbmRleE9mKGMsIDAsIGxlbmd0aCgpKTsgfQorCitpbmxpbmUgaW50MzJf
dAorVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoVUNoYXIzMiBjKSBjb25zdCB7CisgIHJldHVy
biBsYXN0SW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7Cit9CisKK2lubGluZSBpbnQzMl90CitVbmlj
b2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hhciBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBz
dGFydCkgY29uc3QgeworICBwaW5JbmRleChzdGFydCk7CisgIHJldHVybiBkb0xhc3RJbmRleE9m
KGMsIHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNv
ZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyMzIgYywKKyAgICAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICByZXR1cm4gbGFzdEluZGV4T2Yo
Yywgc3RhcnQsIGxlbmd0aCgpIC0gc3RhcnQpOworfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVT
dHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3QKK3sgcmV0
dXJuIGNvbXBhcmUoMCwgdGV4dC5sZW5ndGgoKSwgdGV4dCwgMCwgdGV4dC5sZW5ndGgoKSkgPT0g
MDsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVW5p
Y29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUo
MCwgc3JjTGVuZ3RoLCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwOyB9CisKK2lu
bGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6c3RhcnRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdAoreyByZXR1cm4gZG9D
b21wYXJlKDAsIHNyY0xlbmd0aCwgc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCkgPT0gMDsgfQorCitp
bmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVUNoYXIgKnNyY0No
YXJzLAorICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFyZSgwLCBzcmNMZW5ndGgsIHNy
Y0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwO30KKworaW5saW5lIFVCb29sCitVbmlj
b2RlU3RyaW5nOjplbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreyBy
ZXR1cm4gZG9Db21wYXJlKGxlbmd0aCgpIC0gdGV4dC5sZW5ndGgoKSwgdGV4dC5sZW5ndGgoKSwK
KyAgICAgICAgICAgdGV4dCwgMCwgdGV4dC5sZW5ndGgoKSkgPT0gMDsgfQorCitpbmxpbmUgVUJv
b2wKK1VuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQs
CisgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgpIGNvbnN0IHsKKyAgc3JjVGV4dC5waW5JbmRpY2VzKHNyY1N0YXJ0LCBzcmNMZW5ndGgp
OworICByZXR1cm4gZG9Db21wYXJlKGxlbmd0aCgpIC0gc3JjTGVuZ3RoLCBzcmNMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgc3JjVGV4dCwgc3JjU3RhcnQsIHNyY0xlbmd0aCkgPT0gMDsKK30K
KworaW5saW5lIFVCb29sCitVbmljb2RlU3RyaW5nOjplbmRzV2l0aChjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QgeworICBpZihzcmNM
ZW5ndGggPCAwKSB7CisgICAgc3JjTGVuZ3RoID0gdV9zdHJsZW4oc3JjQ2hhcnMpOworICB9Cisg
IHJldHVybiBkb0NvbXBhcmUobGVuZ3RoKCkgLSBzcmNMZW5ndGgsIHNyY0xlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKSA9PSAwOworfQorCitpbmxpbmUg
VUJvb2wKK1VuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAg
ICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCkgY29uc3QgeworICBpZihzcmNMZW5ndGggPCAwKSB7CisgICAgc3JjTGVuZ3RoID0gdV9zdHJs
ZW4oc3JjQ2hhcnMgKyBzcmNTdGFydCk7CisgIH0KKyAgcmV0dXJuIGRvQ29tcGFyZShsZW5ndGgo
KSAtIHNyY0xlbmd0aCwgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgIHNyY0NoYXJzLCBz
cmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKy8vIHJlcGxhY2UKKy8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQoraW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpy
ZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCisg
ICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KQoreyByZXR1cm4gZG9S
ZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsgfQor
CitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJlcGxhY2UoaW50MzJfdCBz
dGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxh
Y2Uoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6cmVwbGFjZShpbnQzMl90IHN0YXJ0
LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgICAgY29uc3Qg
VUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7IHJl
dHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgpOyB9
CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6cmVwbGFjZShpbnQzMl90
IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgICAg
Y29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreyByZXR1cm4gZG9SZXBsYWNlKHN0
YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0KKworaW5saW5l
IFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCisgICAgICAgICAgICAgICBVQ2hhciBzcmND
aGFyKQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCAmc3JjQ2hhciwgMCwgMSk7
IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpyZXBsYWNlKGludDMy
X3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCisgICAgICAgICAgICAg
ICBVQ2hhcjMyIHNyY0NoYXIpIHsKKyAgVUNoYXIgYnVmZmVyW1UxNl9NQVhfTEVOR1RIXTsKKyAg
aW50MzJfdCBjb3VudCA9IDA7CisgIFVCb29sIGlzRXJyb3IgPSBGQUxTRTsKKyAgVTE2X0FQUEVO
RChidWZmZXIsIGNvdW50LCBVMTZfTUFYX0xFTkdUSCwgc3JjQ2hhciwgaXNFcnJvcik7CisgIHJl
dHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIGJ1ZmZlciwgMCwgY291bnQpOworfQorCitp
bmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJlcGxhY2VCZXR3ZWVuKGludDMy
X3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAg
ICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKK3sgcmV0dXJuIGRvUmVwbGFjZShz
dGFydCwgbGltaXQgLSBzdGFydCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7IH0KKwor
aW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpyZXBsYWNlQmV0d2VlbihpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwKKyAgICAgICAgICAg
ICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICAgICBp
bnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMaW1pdCkKK3sg
cmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGltaXQgLSBzdGFydCwgc3JjVGV4dCwgc3JjU3RhcnQs
IHNyY0xpbWl0IC0gc3JjU3RhcnQpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29k
ZVN0cmluZzo6ZmluZEFuZFJlcGxhY2UoY29uc3QgVW5pY29kZVN0cmluZyYgb2xkVGV4dCwKKyAg
ICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5ld1RleHQpCit7IHJldHVybiBm
aW5kQW5kUmVwbGFjZSgwLCBsZW5ndGgoKSwgb2xkVGV4dCwgMCwgb2xkVGV4dC5sZW5ndGgoKSwK
KyAgICAgICAgICAgIG5ld1RleHQsIDAsIG5ld1RleHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBV
bmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6ZmluZEFuZFJlcGxhY2UoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisgICAgICAgICAgICAgICAgICBjb25zdCBV
bmljb2RlU3RyaW5nJiBuZXdUZXh0KQoreyByZXR1cm4gZmluZEFuZFJlcGxhY2Uoc3RhcnQsIF9s
ZW5ndGgsIG9sZFRleHQsIDAsIG9sZFRleHQubGVuZ3RoKCksCisgICAgICAgICAgICBuZXdUZXh0
LCAwLCBuZXdUZXh0Lmxlbmd0aCgpKTsgfQorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09CisvLyBleHRyYWN0CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmxpbmUg
dm9pZAorVW5pY29kZVN0cmluZzo6ZG9FeHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAg
ICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHRhcmdldCkg
Y29uc3QKK3sgdGFyZ2V0LnJlcGxhY2UoMCwgdGFyZ2V0Lmxlbmd0aCgpLCAqdGhpcywgc3RhcnQs
IF9sZW5ndGgpOyB9CisKK2lubGluZSB2b2lkCitVbmljb2RlU3RyaW5nOjpleHRyYWN0KGludDMy
X3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCisgICAgICAgICAgICAg
ICBVQ2hhciAqdGFyZ2V0LAorICAgICAgICAgICAgICAgaW50MzJfdCB0YXJnZXRTdGFydCkgY29u
c3QKK3sgZG9FeHRyYWN0KHN0YXJ0LCBfbGVuZ3RoLCB0YXJnZXQsIHRhcmdldFN0YXJ0KTsgfQor
CitpbmxpbmUgdm9pZAorVW5pY29kZVN0cmluZzo6ZXh0cmFjdChpbnQzMl90IHN0YXJ0LAorICAg
ICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgICAgVW5pY29kZVN0cmlu
ZyYgdGFyZ2V0KSBjb25zdAoreyBkb0V4dHJhY3Qoc3RhcnQsIF9sZW5ndGgsIHRhcmdldCk7IH0K
KworI2lmICFVQ09ORklHX05PX0NPTlZFUlNJT04KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVT
dHJpbmc6OmV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xl
bmd0aCwKKyAgICAgICAgICAgICAgIGNoYXIgKmRzdCwKKyAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmNvZGVwYWdlKSBjb25zdAorCit7CisgIC8vIFRoaXMgZHN0U2l6ZSB2YWx1ZSB3aWxsIGJl
IGNoZWNrZWQgZXhwbGljaXRseQorI2lmIGRlZmluZWQoX19HTlVDX18pCisgIC8vIFRpY2tldCAj
NzAzOTogQ2xpcCBsZW5ndGggdG8gdGhlIG1heGltdW0gdmFsaWQgbGVuZ3RoIHRvIHRoZSBlbmQg
b2YgYWRkcmVzc2FibGUgbWVtb3J5IGdpdmVuIHRoZSBzdGFydGluZyBhZGRyZXNzCisgIC8vIFRo
aXMgaXMgb25seSBhbiBpc3N1ZSB3aGVuIHVzaW5nIEdDQyBhbmQgY2VydGFpbiBvcHRpbWl6YXRp
b25zIGFyZSB0dXJuZWQgb24uCisgIHJldHVybiBleHRyYWN0KHN0YXJ0LCBfbGVuZ3RoLCBkc3Qs
IGRzdCE9MCA/ICgoZHN0ID49IChjaGFyKikoKHNpemVfdCktMSkgLSBVSU5UMzJfTUFYKSA/ICgo
KGNoYXIqKVVJTlQzMl9NQVgpIC0gZHN0KSA6IFVJTlQzMl9NQVgpIDogMCwgY29kZXBhZ2UpOwor
I2Vsc2UKKyAgcmV0dXJuIGV4dHJhY3Qoc3RhcnQsIF9sZW5ndGgsIGRzdCwgZHN0IT0wID8gMHhm
ZmZmZmZmZiA6IDAsIGNvZGVwYWdlKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworaW5saW5lIHZv
aWQKK1VuaWNvZGVTdHJpbmc6OmV4dHJhY3RCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAg
ICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAgVUNoYXIgKmRzdCwK
KyAgICAgICAgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgo
c3RhcnQpOworICBwaW5JbmRleChsaW1pdCk7CisgIGRvRXh0cmFjdChzdGFydCwgbGltaXQgLSBz
dGFydCwgZHN0LCBkc3RTdGFydCk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nCitVbmljb2Rl
U3RyaW5nOjp0ZW1wU3ViU3RyaW5nQmV0d2VlbihpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGxpbWl0
KSBjb25zdCB7CisgICAgcmV0dXJuIHRlbXBTdWJTdHJpbmcoc3RhcnQsIGxpbWl0IC0gc3RhcnQp
OworfQorCitpbmxpbmUgVUNoYXIKK1VuaWNvZGVTdHJpbmc6OmRvQ2hhckF0KGludDMyX3Qgb2Zm
c2V0KSBjb25zdAoreworICBpZigodWludDMyX3Qpb2Zmc2V0IDwgKHVpbnQzMl90KWxlbmd0aCgp
KSB7CisgICAgcmV0dXJuIGdldEFycmF5U3RhcnQoKVtvZmZzZXRdOworICB9IGVsc2UgeworICAg
IHJldHVybiBrSW52YWxpZFVDaGFyOworICB9Cit9CisKK2lubGluZSBVQ2hhcgorVW5pY29kZVN0
cmluZzo6Y2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreyByZXR1cm4gZG9DaGFyQXQob2Zm
c2V0KTsgfQorCitpbmxpbmUgVUNoYXIKK1VuaWNvZGVTdHJpbmc6Om9wZXJhdG9yW10gKGludDMy
X3Qgb2Zmc2V0KSBjb25zdAoreyByZXR1cm4gZG9DaGFyQXQob2Zmc2V0KTsgfQorCitpbmxpbmUg
VUNoYXIzMgorVW5pY29kZVN0cmluZzo6Y2hhcjMyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0Cit7
CisgIGludDMyX3QgbGVuID0gbGVuZ3RoKCk7CisgIGlmKCh1aW50MzJfdClvZmZzZXQgPCAodWlu
dDMyX3QpbGVuKSB7CisgICAgY29uc3QgVUNoYXIgKmFycmF5ID0gZ2V0QXJyYXlTdGFydCgpOwor
ICAgIFVDaGFyMzIgYzsKKyAgICBVMTZfR0VUKGFycmF5LCAwLCBvZmZzZXQsIGxlbiwgYyk7Cisg
ICAgcmV0dXJuIGM7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGtJbnZhbGlkVUNoYXI7CisgIH0K
K30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmdldENoYXIzMlN0YXJ0KGludDMy
X3Qgb2Zmc2V0KSBjb25zdCB7CisgIGlmKCh1aW50MzJfdClvZmZzZXQgPCAodWludDMyX3QpbGVu
Z3RoKCkpIHsKKyAgICBjb25zdCBVQ2hhciAqYXJyYXkgPSBnZXRBcnJheVN0YXJ0KCk7CisgICAg
VTE2X1NFVF9DUF9TVEFSVChhcnJheSwgMCwgb2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0Owor
ICB9IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2lubGluZSBpbnQzMl90CitVbmlj
b2RlU3RyaW5nOjpnZXRDaGFyMzJMaW1pdChpbnQzMl90IG9mZnNldCkgY29uc3QgeworICBpbnQz
Ml90IGxlbiA9IGxlbmd0aCgpOworICBpZigodWludDMyX3Qpb2Zmc2V0IDwgKHVpbnQzMl90KWxl
bikgeworICAgIGNvbnN0IFVDaGFyICphcnJheSA9IGdldEFycmF5U3RhcnQoKTsKKyAgICBVMTZf
U0VUX0NQX0xJTUlUKGFycmF5LCAwLCBvZmZzZXQsIGxlbik7CisgICAgcmV0dXJuIG9mZnNldDsK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbGVuOworICB9Cit9CisKK2lubGluZSBVQm9vbAorVW5p
Y29kZVN0cmluZzo6aXNFbXB0eSgpIGNvbnN0IHsKKyAgcmV0dXJuIGZTaG9ydExlbmd0aCA9PSAw
OworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFdy
aXRlIGltcGxlbWVudGF0aW9uIG1ldGhvZHMKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQoraW5saW5lIHZvaWQKK1VuaWNvZGVTdHJpbmc6OnNldExlbmd0aChpbnQz
Ml90IGxlbikgeworICBpZihsZW4gPD0gMTI3KSB7CisgICAgZlNob3J0TGVuZ3RoID0gKGludDhf
dClsZW47CisgIH0gZWxzZSB7CisgICAgZlNob3J0TGVuZ3RoID0gKGludDhfdCktMTsKKyAgICBm
VW5pb24uZkZpZWxkcy5mTGVuZ3RoID0gbGVuOworICB9Cit9CisKK2lubGluZSB2b2lkCitVbmlj
b2RlU3RyaW5nOjpzZXRUb0VtcHR5KCkgeworICBmU2hvcnRMZW5ndGggPSAwOworICBmRmxhZ3Mg
PSBrU2hvcnRTdHJpbmc7Cit9CisKK2lubGluZSB2b2lkCitVbmljb2RlU3RyaW5nOjpzZXRBcnJh
eShVQ2hhciAqYXJyYXksIGludDMyX3QgbGVuLCBpbnQzMl90IGNhcGFjaXR5KSB7CisgIHNldExl
bmd0aChsZW4pOworICBmVW5pb24uZkZpZWxkcy5mQXJyYXkgPSBhcnJheTsKKyAgZlVuaW9uLmZG
aWVsZHMuZkNhcGFjaXR5ID0gY2FwYWNpdHk7Cit9CisKK2lubGluZSBjb25zdCBVQ2hhciAqCitV
bmljb2RlU3RyaW5nOjpnZXRUZXJtaW5hdGVkQnVmZmVyKCkgeworICBpZighaXNXcml0YWJsZSgp
KSB7CisgICAgcmV0dXJuIDA7CisgIH0gZWxzZSB7CisgICAgVUNoYXIgKmFycmF5ID0gZ2V0QXJy
YXlTdGFydCgpOworICAgIGludDMyX3QgbGVuID0gbGVuZ3RoKCk7CisgICAgaWYobGVuIDwgZ2V0
Q2FwYWNpdHkoKSAmJiAoKGZGbGFncyZrUmVmQ291bnRlZCkgPT0gMCB8fCByZWZDb3VudCgpID09
IDEpKSB7CisgICAgICAvKgorICAgICAgICoga1JlZkNvdW50ZWQ6IERvIG5vdCB3cml0ZSB0aGUg
TlVMIGlmIHRoZSBidWZmZXIgaXMgc2hhcmVkLgorICAgICAgICogVGhhdCBpcyBtb3N0bHkgc2Fm
ZSwgZXhjZXB0IHdoZW4gdGhlIGxlbmd0aCBvZiBvbmUgY29weSB3YXMgbW9kaWZpZWQKKyAgICAg
ICAqIHdpdGhvdXQgY29weS1vbi13cml0ZSwgZS5nLiwgdmlhIHRydW5jYXRlKG5ld0xlbmd0aCkg
b3IgcmVtb3ZlKHZvaWQpLgorICAgICAgICogVGhlbiB0aGUgTlVMIHdvdWxkIGJlIHdyaXR0ZW4g
aW50byB0aGUgbWlkZGxlIG9mIGFub3RoZXIgY29weSdzIHN0cmluZy4KKyAgICAgICAqLworICAg
ICAgaWYoIShmRmxhZ3Mma0J1ZmZlcklzUmVhZG9ubHkpKSB7CisgICAgICAgIC8qCisgICAgICAg
ICAqIFdlIG11c3Qgbm90IHdyaXRlIHRvIGEgcmVhZG9ubHkgYnVmZmVyLCBidXQgaXQgaXMga25v
d24gdG8gYmUKKyAgICAgICAgICogTlVMLXRlcm1pbmF0ZWQgaWYgbGVuPGNhcGFjaXR5LgorICAg
ICAgICAgKiBBIHNoYXJlZCwgYWxsb2NhdGVkIGJ1ZmZlciAocmVmQ291bnQoKT4xKSBtdXN0IG5v
dCBoYXZlIGl0cyBjb250ZW50cworICAgICAgICAgKiBtb2RpZmllZCwgYnV0IHRoZSBOVUwgYXQg
W2xlbl0gaXMgYmV5b25kIHRoZSBzdHJpbmcgY29udGVudHMsCisgICAgICAgICAqIGFuZCBtdWx0
aXBsZSBzdHJpbmcgb2JqZWN0cyBhbmQgdGhyZWFkcyB3cml0aW5nIHRoZSBzYW1lIE5VTCBpbnRv
IHRoZQorICAgICAgICAgKiBzYW1lIGxvY2F0aW9uIGlzIGhhcm1sZXNzLgorICAgICAgICAgKiBJ
biBhbGwgb3RoZXIgY2FzZXMsIHRoZSBidWZmZXIgaXMgZnVsbHkgd3JpdGFibGUgYW5kIGl0IGlz
IGFueXdheSBzYWZlCisgICAgICAgICAqIHRvIHdyaXRlIHRoZSBOVUwuCisgICAgICAgICAqCisg
ICAgICAgICAqIE5vdGU6IEFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGlzIGNvZGUgdGVzdGVkIHdo
ZXRoZXIgdGhlcmUgaXMgYSBOVUwKKyAgICAgICAgICogYXQgW2xlbl0gYWxyZWFkeSwgYnV0LCB3
aGlsZSBzYWZlLCBpdCBnZW5lcmF0ZWQgbG90cyBvZiB3YXJuaW5ncyBmcm9tCisgICAgICAgICAq
IHRvb2xzIGxpa2UgdmFsZ3JpbmQgYW5kIFB1cmlmeS4KKyAgICAgICAgICovCisgICAgICAgIGFy
cmF5W2xlbl0gPSAwOworICAgICAgfQorICAgICAgcmV0dXJuIGFycmF5OworICAgIH0gZWxzZSBp
ZihjbG9uZUFycmF5SWZOZWVkZWQobGVuKzEpKSB7CisgICAgICBhcnJheSA9IGdldEFycmF5U3Rh
cnQoKTsKKyAgICAgIGFycmF5W2xlbl0gPSAwOworICAgICAgcmV0dXJuIGFycmF5OworICAgIH0g
ZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH0KK30KKworaW5saW5lIFVuaWNvZGVT
dHJpbmcmCitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcj0gKFVDaGFyIGNoKQoreyByZXR1cm4gZG9S
ZXBsYWNlKDAsIGxlbmd0aCgpLCAmY2gsIDAsIDEpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5n
JgorVW5pY29kZVN0cmluZzo6b3BlcmF0b3I9IChVQ2hhcjMyIGNoKQoreyByZXR1cm4gcmVwbGFj
ZSgwLCBsZW5ndGgoKSwgY2gpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0
cmluZzo6c2V0VG8oY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICBp
bnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreworICB1
bkJvZ3VzKCk7CisgIHJldHVybiBkb1JlcGxhY2UoMCwgbGVuZ3RoKCksIHNyY1RleHQsIHNyY1N0
YXJ0LCBzcmNMZW5ndGgpOworfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJp
bmc6OnNldFRvKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCkKK3sKKyAgdW5Cb2d1cygpOworICBzcmNUZXh0LnBpbkluZGV4KHNyY1N0
YXJ0KTsKKyAgcmV0dXJuIGRvUmVwbGFjZSgwLCBsZW5ndGgoKSwgc3JjVGV4dCwgc3JjU3RhcnQs
IHNyY1RleHQubGVuZ3RoKCkgLSBzcmNTdGFydCk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5n
JgorVW5pY29kZVN0cmluZzo6c2V0VG8oY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKK3sK
KyAgdW5Cb2d1cygpOworICByZXR1cm4gZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCBzcmNUZXh0LCAw
LCBzcmNUZXh0Lmxlbmd0aCgpKTsKK30KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2Rl
U3RyaW5nOjpzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpCit7CisgIHVuQm9ndXMoKTsKKyAgcmV0dXJuIGRvUmVwbGFjZSgwLCBsZW5n
dGgoKSwgc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5n
JgorVW5pY29kZVN0cmluZzo6c2V0VG8oVUNoYXIgc3JjQ2hhcikKK3sKKyAgdW5Cb2d1cygpOwor
ICByZXR1cm4gZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCAmc3JjQ2hhciwgMCwgMSk7Cit9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0VG8oVUNoYXIzMiBzcmNDaGFy
KQoreworICB1bkJvZ3VzKCk7CisgIHJldHVybiByZXBsYWNlKDAsIGxlbmd0aCgpLCBzcmNDaGFy
KTsKK30KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjphcHBlbmQoY29u
c3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFy
dCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxhY2Uo
bGVuZ3RoKCksIDAsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBV
bmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6YXBwZW5kKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQpCit7IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCksIDAsIHNyY1RleHQsIDAsIHNy
Y1RleHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmlu
Zzo6YXBwZW5kKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgaW50MzJfdCBz
cmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7IHJldHVybiBkb1Jl
cGxhY2UobGVuZ3RoKCksIDAsIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKTsgfQorCitp
bmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciAq
c3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreyByZXR1cm4gZG9S
ZXBsYWNlKGxlbmd0aCgpLCAwLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUg
VW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OmFwcGVuZChVQ2hhciBzcmNDaGFyKQoreyBy
ZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCAmc3JjQ2hhciwgMCwgMSk7IH0KKworaW5saW5l
IFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjphcHBlbmQoVUNoYXIzMiBzcmNDaGFyKSB7
CisgIFVDaGFyIGJ1ZmZlcltVMTZfTUFYX0xFTkdUSF07CisgIGludDMyX3QgX2xlbmd0aCA9IDA7
CisgIFVCb29sIGlzRXJyb3IgPSBGQUxTRTsKKyAgVTE2X0FQUEVORChidWZmZXIsIF9sZW5ndGgs
IFUxNl9NQVhfTEVOR1RILCBzcmNDaGFyLCBpc0Vycm9yKTsKKyAgcmV0dXJuIGRvUmVwbGFjZShs
ZW5ndGgoKSwgMCwgYnVmZmVyLCAwLCBfbGVuZ3RoKTsKK30KKworaW5saW5lIFVuaWNvZGVTdHJp
bmcmCitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcis9IChVQ2hhciBjaCkKK3sgcmV0dXJuIGRvUmVw
bGFjZShsZW5ndGgoKSwgMCwgJmNoLCAwLCAxKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYK
K1VuaWNvZGVTdHJpbmc6Om9wZXJhdG9yKz0gKFVDaGFyMzIgY2gpIHsKKyAgcmV0dXJuIGFwcGVu
ZChjaCk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6b3BlcmF0
b3IrPSAoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKK3sgcmV0dXJuIGRvUmVwbGFjZShs
ZW5ndGgoKSwgMCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7IH0KKworaW5saW5lIFVu
aWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjppbnNlcnQoaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7IHJldHVy
biBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisK
K2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6aW5zZXJ0KGludDMyX3Qgc3Rh
cnQsCisgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpCit7IHJldHVy
biBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIDAsIHNyY1RleHQubGVuZ3RoKCkpOyB9CisK
K2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6aW5zZXJ0KGludDMyX3Qgc3Rh
cnQsCisgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAg
aW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7IHJl
dHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKTsg
fQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6Omluc2VydChpbnQzMl90
IHN0YXJ0LAorICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCAwLCBzcmND
aGFycywgMCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVT
dHJpbmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBVQ2hhciBzcmNDaGFy
KQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCAwLCAmc3JjQ2hhciwgMCwgMSk7IH0KKworaW5s
aW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjppbnNlcnQoaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgICAgVUNoYXIzMiBzcmNDaGFyKQoreyByZXR1cm4gcmVwbGFjZShzdGFydCwg
MCwgc3JjQ2hhcik7IH0KKworCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6
OnJlbW92ZSgpCit7CisgIC8vIHJlbW92ZSgpIG9mIGEgYm9ndXMgc3RyaW5nIG1ha2VzIHRoZSBz
dHJpbmcgZW1wdHkgYW5kIG5vbi1ib2d1cworICAvLyB3ZSBhbHNvIHVuLWFsaWFzIGEgcmVhZC1v
bmx5IGFsaWFzIHRvIGRlYWwgd2l0aCBOVUwtdGVybWluYXRpb24KKyAgLy8gaXNzdWVzIHdpdGgg
Z2V0VGVybWluYXRlZEJ1ZmZlcigpCisgIGlmKGZGbGFncyAmIChrSXNCb2d1c3xrQnVmZmVySXNS
ZWFkb25seSkpIHsKKyAgICBzZXRUb0VtcHR5KCk7CisgIH0gZWxzZSB7CisgICAgZlNob3J0TGVu
Z3RoID0gMDsKKyAgfQorICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5n
JgorVW5pY29kZVN0cmluZzo6cmVtb3ZlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50
MzJfdCBfbGVuZ3RoKQoreworICAgIGlmKHN0YXJ0IDw9IDAgJiYgX2xlbmd0aCA9PSBJTlQzMl9N
QVgpIHsKKyAgICAgICAgLy8gcmVtb3ZlKGd1YXJhbnRlZWQgZXZlcnl0aGluZykgb2YgYSBib2d1
cyBzdHJpbmcgbWFrZXMgdGhlIHN0cmluZyBlbXB0eSBhbmQgbm9uLWJvZ3VzCisgICAgICAgIHJl
dHVybiByZW1vdmUoKTsKKyAgICB9CisgICAgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgX2xlbmd0
aCwgTlVMTCwgMCwgMCk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmlu
Zzo6cmVtb3ZlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qg
bGltaXQpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxpbWl0IC0gc3RhcnQsIE5VTEwsIDAs
IDApOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nICYKK1VuaWNvZGVTdHJpbmc6OnJldGFpbkJl
dHdlZW4oaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCkgeworICB0cnVuY2F0ZShsaW1pdCk7
CisgIHJldHVybiBkb1JlcGxhY2UoMCwgc3RhcnQsIE5VTEwsIDAsIDApOworfQorCitpbmxpbmUg
VUJvb2wKK1VuaWNvZGVTdHJpbmc6OnRydW5jYXRlKGludDMyX3QgdGFyZ2V0TGVuZ3RoKQorewor
ICBpZihpc0JvZ3VzKCkgJiYgdGFyZ2V0TGVuZ3RoID09IDApIHsKKyAgICAvLyB0cnVuY2F0ZSgw
KSBvZiBhIGJvZ3VzIHN0cmluZyBtYWtlcyB0aGUgc3RyaW5nIGVtcHR5IGFuZCBub24tYm9ndXMK
KyAgICB1bkJvZ3VzKCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9IGVsc2UgaWYoKHVpbnQzMl90
KXRhcmdldExlbmd0aCA8ICh1aW50MzJfdClsZW5ndGgoKSkgeworICAgIHNldExlbmd0aCh0YXJn
ZXRMZW5ndGgpOworICAgIGlmKGZGbGFncyZrQnVmZmVySXNSZWFkb25seSkgeworICAgICAgZlVu
aW9uLmZGaWVsZHMuZkNhcGFjaXR5ID0gdGFyZ2V0TGVuZ3RoOyAgLy8gbm90IE5VTC10ZXJtaW5h
dGVkIGFueSBtb3JlCisgICAgfQorICAgIHJldHVybiBUUlVFOworICB9IGVsc2UgeworICAgIHJl
dHVybiBGQUxTRTsKKyAgfQorfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJp
bmc6OnJldmVyc2UoKQoreyByZXR1cm4gZG9SZXZlcnNlKDAsIGxlbmd0aCgpKTsgfQorCitpbmxp
bmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJldmVyc2UoaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkKK3sgcmV0dXJuIGRvUmV2ZXJzZShzdGFy
dCwgX2xlbmd0aCk7IH0KKworVV9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3VudW0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pY3UvdW5pY29kZS91bnVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEwMmJhYjU4YjNkMWJiMmUy
YjIwODJjYjU1ODljNWRkZWZlOGNjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pY3UvdW5pY29kZS91bnVtLmgKQEAgLTAsMCArMSw5OTkgQEAKKy8qCisqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ny0yMDEwLCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCisqIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisqIE1vZGlmaWNhdGlvbiBIaXN0b3J5OgorKgorKiAgIERhdGUgICAgICAgIE5h
bWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMDYvMjQvOTkgICAgaGVsZW5hICAgICAgSW50ZWdy
YXRlZCBBbGFuJ3MgTkYgZW5oYW5jZW1lbnRzIGFuZCBKYXZhMiBidWcgZml4ZXMKKyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyovCisKKyNpZm5kZWYgX1VOVU0KKyNkZWZpbmUgX1VOVU0KKworI2lu
Y2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisKKyNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HCisK
KyNpbmNsdWRlICJ1bmljb2RlL2xvY2FscG9pbnRlci5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWxv
Yy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW1pc2MuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3BhcnNl
ZXJyLmgiCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IE51bWJlckZvcm1hdAorICoK
KyAqIDxoMj4gTnVtYmVyIEZvcm1hdCBDIEFQSSA8L2gyPgorICoKKyAqIE51bWJlciBGb3JtYXQg
QyBBUEkgIFByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IKKyAqIGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcg
YSBudW1iZXIuICBBbHNvIHByb3ZpZGVzIG1ldGhvZHMgZm9yCisgKiBkZXRlcm1pbmluZyB3aGlj
aCBsb2NhbGVzIGhhdmUgbnVtYmVyIGZvcm1hdHMsIGFuZCB3aGF0IHRoZWlyIG5hbWVzCisgKiBh
cmUuCisgKiA8UD4KKyAqIFVOdW1iZXJGb3JtYXQgaGVscHMgeW91IHRvIGZvcm1hdCBhbmQgcGFy
c2UgbnVtYmVycyBmb3IgYW55IGxvY2FsZS4KKyAqIFlvdXIgY29kZSBjYW4gYmUgY29tcGxldGVs
eSBpbmRlcGVuZGVudCBvZiB0aGUgbG9jYWxlIGNvbnZlbnRpb25zCisgKiBmb3IgZGVjaW1hbCBw
b2ludHMsIHRob3VzYW5kcy1zZXBhcmF0b3JzLCBvciBldmVuIHRoZSBwYXJ0aWN1bGFyCisgKiBk
ZWNpbWFsIGRpZ2l0cyB1c2VkLCBvciB3aGV0aGVyIHRoZSBudW1iZXIgZm9ybWF0IGlzIGV2ZW4g
ZGVjaW1hbC4KKyAqIFRoZXJlIGFyZSBkaWZmZXJlbnQgbnVtYmVyIGZvcm1hdCBzdHlsZXMgbGlr
ZSBkZWNpbWFsLCBjdXJyZW5jeSwKKyAqIHBlcmNlbnQgYW5kIHNwZWxsb3V0LgorICogPFA+Cisg
KiBUbyBmb3JtYXQgYSBudW1iZXIgZm9yIHRoZSBjdXJyZW50IExvY2FsZSwgdXNlIG9uZSBvZiB0
aGUgc3RhdGljCisgKiBmYWN0b3J5IG1ldGhvZHM6CisgKiA8cHJlPgorICogXGNvZGUKKyAqICAg
IFVDaGFyIG15U3RyaW5nWzIwXTsKKyAqICAgIGRvdWJsZSBteU51bWJlciA9IDcuMDsKKyAqICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogICAgVU51bWJlckZvcm1hdCog
bmYgPSB1bnVtX29wZW4oVU5VTV9ERUZBVUxULCBOVUxMLCAtMSwgTlVMTCwgTlVMTCwgJnN0YXR1
cyk7CisgKiAgICB1bnVtX2Zvcm1hdERvdWJsZShuZiwgbXlOdW1iZXIsIG15U3RyaW5nLCAyMCwg
TlVMTCwgJnN0YXR1cyk7CisgKiAgICBwcmludGYoIiBFeGFtcGxlIDE6ICVzXG4iLCBhdXN0cmR1
cChteVN0cmluZykgKTsgLy9hdXN0cmR1cCggYSBmdW5jdGlvbiB1c2VkIHRvIGNvbnZlcnQgVUNo
YXIqIHRvIGNoYXIqKQorICogXGVuZGNvZGUKKyAqIDwvcHJlPgorICogSWYgeW91IGFyZSBmb3Jt
YXR0aW5nIG11bHRpcGxlIG51bWJlcnMsIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGdldAorICog
dGhlIGZvcm1hdCBhbmQgdXNlIGl0IG11bHRpcGxlIHRpbWVzIHNvIHRoYXQgdGhlIHN5c3RlbSBk
b2Vzbid0CisgKiBoYXZlIHRvIGZldGNoIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYWwg
bGFuZ3VhZ2UgYW5kIGNvdW50cnkKKyAqIGNvbnZlbnRpb25zIG11bHRpcGxlIHRpbWVzLgorICog
PHByZT4KKyAqIFxjb2RlCisgKiB1aW50MzJfdCBpLCByZXN1bHRsZW5ndGgsIHJlc2xlbm5lZWRl
ZDsKKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogVUZpZWxkUG9zaXRp
b24gcG9zOworICogdWludDMyX3QgYVtdID0geyAxMjMsIDMzMzMsIC0xMjM0NTY3IH07CisgKiBj
b25zdCB1aW50MzJfdCBhX2xlbiA9IHNpemVvZihhKSAvIHNpemVvZihhWzBdKTsKKyAqIFVOdW1i
ZXJGb3JtYXQqIG5mOworICogVUNoYXIqIHJlc3VsdCA9IE5VTEw7CisgKgorICogbmYgPSB1bnVt
X29wZW4oVU5VTV9ERUZBVUxULCBOVUxMLCAtMSwgTlVMTCwgTlVMTCwgJnN0YXR1cyk7CisgKiBm
b3IgKGkgPSAwOyBpIDwgYV9sZW47IGkrKykgeworICogICAgcmVzdWx0bGVuZ3RoPTA7CisgKiAg
ICByZXNsZW5uZWVkZWQ9dW51bV9mb3JtYXQobmYsIGFbaV0sIE5VTEwsIHJlc3VsdGxlbmd0aCwg
JnBvcywgJnN0YXR1cyk7CisgKiAgICByZXN1bHQgPSBOVUxMOworICogICAgaWYoc3RhdHVzPT1V
X0JVRkZFUl9PVkVSRkxPV19FUlJPUil7CisgKiAgICAgICBzdGF0dXM9VV9aRVJPX0VSUk9SOwor
ICogICAgICAgcmVzdWx0bGVuZ3RoPXJlc2xlbm5lZWRlZCsxOworICogICAgICAgcmVzdWx0PShV
Q2hhciopbWFsbG9jKHNpemVvZihVQ2hhcikgKiByZXN1bHRsZW5ndGgpOworICogICAgICAgdW51
bV9mb3JtYXQobmYsIGFbaV0sIHJlc3VsdCwgcmVzdWx0bGVuZ3RoLCAmcG9zLCAmc3RhdHVzKTsK
KyAqICAgIH0KKyAqICAgIHByaW50ZiggIiBFeGFtcGxlIDI6ICVzXG4iLCBhdXN0cmR1cChyZXN1
bHQpKTsKKyAqICAgIGZyZWUocmVzdWx0KTsKKyAqIH0KKyAqIFxlbmRjb2RlCisgKiA8L3ByZT4K
KyAqIFRvIGZvcm1hdCBhIG51bWJlciBmb3IgYSBkaWZmZXJlbnQgTG9jYWxlLCBzcGVjaWZ5IGl0
IGluIHRoZQorICogY2FsbCB0byB1bnVtX29wZW4oKS4KKyAqIDxwcmU+CisgKiBcY29kZQorICog
ICAgIFVOdW1iZXJGb3JtYXQqIG5mID0gdW51bV9vcGVuKFVOVU1fREVGQVVMVCwgTlVMTCwgLTEs
ICJmcl9GUiIsIE5VTEwsICZzdWNjZXNzKQorICogXGVuZGNvZGUKKyAqIDwvcHJlPgorICogWW91
IGNhbiB1c2UgYSBOdW1iZXJGb3JtYXQgQVBJIHVudW1fcGFyc2UoKSB0byBwYXJzZS4KKyAqIDxw
cmU+CisgKiBcY29kZQorICogICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
KiAgICBpbnQzMl90IHBvcz0wOworICogICAgaW50MzJfdCBudW07CisgKiAgICBudW0gPSB1bnVt
X3BhcnNlKG5mLCBzdHIsIHVfc3RybGVuKHN0ciksICZwb3MsICZzdGF0dXMpOworICogXGVuZGNv
ZGUKKyAqIDwvcHJlPgorICogVXNlIFVOVU1fREVDSU1BTCB0byBnZXQgdGhlIG5vcm1hbCBudW1i
ZXIgZm9ybWF0IGZvciB0aGF0IGNvdW50cnkuCisgKiBUaGVyZSBhcmUgb3RoZXIgc3RhdGljIG9w
dGlvbnMgYXZhaWxhYmxlLiAgVXNlIFVOVU1fQ1VSUkVOQ1kKKyAqIHRvIGdldCB0aGUgY3VycmVu
Y3kgbnVtYmVyIGZvcm1hdCBmb3IgdGhhdCBjb3VudHJ5LiAgVXNlIFVOVU1fUEVSQ0VOVAorICog
dG8gZ2V0IGEgZm9ybWF0IGZvciBkaXNwbGF5aW5nIHBlcmNlbnRhZ2VzLiBXaXRoIHRoaXMgZm9y
bWF0LCBhCisgKiBmcmFjdGlvbiBmcm9tIDAuNTMgaXMgZGlzcGxheWVkIGFzIDUzJS4KKyAqIDxQ
PgorICogVXNlIGEgcGF0dGVybiB0byBjcmVhdGUgZWl0aGVyIGEgRGVjaW1hbEZvcm1hdCBvciBh
IFJ1bGVCYXNlZE51bWJlckZvcm1hdAorICogZm9ybWF0dGVyLiAgVGhlIHBhdHRlcm4gbXVzdCBj
b25mb3JtIHRvIHRoZSBzeW50YXggZGVmaW5lZCBmb3IgdGhvc2UKKyAqIGZvcm1hdHRlcnMuCisg
KiA8UD4KKyAqIFlvdSBjYW4gYWxzbyBjb250cm9sIHRoZSBkaXNwbGF5IG9mIG51bWJlcnMgd2l0
aCBzdWNoIGZ1bmN0aW9uIGFzCisgKiB1bnVtX2dldEF0dHJpYnVlcygpIGFuZCB1bnVtX3NldEF0
cmlidXRlcygpLCB3aGljaCBsZXQgeW91IHNldCB0aGUKKyAqIG1pbWludW0gZnJhY3Rpb24gZGln
aXRzLCBncm91cGluZywgZXRjLgorICogQHNlZSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlcyBmb3Ig
bW9yZSBkZXRhaWxzCisgKiA8UD4KKyAqIFlvdSBjYW4gYWxzbyB1c2UgZm9ybXMgb2YgdGhlIHBh
cnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCisgKiBQYXJzZVBvc2l0aW9uIGFuZCBVRmllbGRQ
b3NpdGlvbiB0byBhbGxvdyB5b3UgdG86CisgKiA8dWwgdHlwZT1yb3VuZD4KKyAqICAgPGxpPihh
KSBwcm9ncmVzc2l2ZWx5IHBhcnNlIHRocm91Z2ggcGllY2VzIG9mIGEgc3RyaW5nLgorICogICA8
bGk+KGIpIGFsaWduIHRoZSBkZWNpbWFsIHBvaW50IGFuZCBvdGhlciBhcmVhcy4KKyAqIDwvdWw+
CisgKiA8cD4KKyAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY2hhbmdlIG9yIHNldCB0aGUgc3lt
Ym9scyB1c2VkIGZvciBhIHBhcnRpY3VsYXIKKyAqIGxvY2FsZSBsaWtlIHRoZSBjdXJyZW5jeSBz
eW1ib2wsIHRoZSBncm91cGluZyBzZXBlcmF0b3IgLCBtb25ldGFyeSBzZXBlcmF0b3IKKyAqIGV0
YyBieSBtYWtpbmcgdXNlIG9mIGZ1bmN0aW9ucyB1bnVtX3NldFN5bWJvbHMoKSBhbmQgdW51bV9n
ZXRTeW1ib2xzKCkuCisgKi8KKworLyoqIEEgbnVtYmVyIGZvcm1hdHRlci4KKyAqICBGb3IgdXNh
Z2UgaW4gQyBwcm9ncmFtcy4KKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiB2b2lk
KiBVTnVtYmVyRm9ybWF0OworCisvKiogVGhlIHBvc3NpYmxlIG51bWJlciBmb3JtYXQgc3R5bGVz
LiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRT
dHlsZSB7CisgICAgLyoqCisgICAgICogRGVjaW1hbCBmb3JtYXQgZGVmaW5lZCBieSBwYXR0ZXJu
IAorICAgICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAqLworICAgIFVOVU1fUEFUVEVSTl9ERUNJ
TUFMPTAsCisgICAgLyoqIERlY2ltYWwgZm9ybWF0ICovCisgICAgVU5VTV9ERUNJTUFMPTEsCisg
ICAgLyoqIEN1cnJlbmN5IGZvcm1hdCAqLworICAgIFVOVU1fQ1VSUkVOQ1ksCisgICAgLyoqIFBl
cmNlbnQgZm9ybWF0ICovCisgICAgVU5VTV9QRVJDRU5ULAorICAgIC8qKiBTY2llbnRpZmljIGZv
cm1hdCAqLworICAgIFVOVU1fU0NJRU5USUZJQywKKyAgICAvKiogU3BlbGxvdXQgcnVsZS1iYXNl
ZCBmb3JtYXQgKi8KKyAgICBVTlVNX1NQRUxMT1VULAorICAgIC8qKiAKKyAgICAgKiBPcmRpbmFs
IHJ1bGUtYmFzZWQgZm9ybWF0IAorICAgICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAqLworICAg
IFVOVU1fT1JESU5BTCwKKyAgICAvKiogCisgICAgICogRHVyYXRpb24gcnVsZS1iYXNlZCBmb3Jt
YXQgCisgICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAgICovCisgICAgVU5VTV9EVVJBVElPTiwK
KyAgICAvKiogCisgICAgICogTnVtYmVyaW5nIHN5c3RlbSBydWxlLWJhc2VkIGZvcm1hdCAKKyAg
ICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICAgKi8KKyAgICBVTlVNX05VTUJFUklOR19TWVNURU0s
CisgICAgLyoqIAorICAgICAqIFJ1bGUtYmFzZWQgZm9ybWF0IGRlZmluZWQgYnkgcGF0dGVybiAK
KyAgICAgKiBAc3RhYmxlIElDVSAzLjAKKyAgICAgKi8KKyAgICBVTlVNX1BBVFRFUk5fUlVMRUJB
U0VELAorICAgIC8qKiBEZWZhdWx0IGZvcm1hdCAqLworICAgIFVOVU1fREVGQVVMVCA9IFVOVU1f
REVDSU1BTCwKKyAgICAvKiogKEFsaWFzIGZvciBVTlVNX1BBVFRFUk5fREVDSU1BTCkgKi8KKyAg
ICBVTlVNX0lHTk9SRSA9IFVOVU1fUEFUVEVSTl9ERUNJTUFMCit9IFVOdW1iZXJGb3JtYXRTdHls
ZTsKKworLyoqIFRoZSBwb3NzaWJsZSBudW1iZXIgZm9ybWF0IHJvdW5kaW5nIG1vZGVzLiAKKyAq
ICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRSb3VuZGlu
Z01vZGUgeworICAgIFVOVU1fUk9VTkRfQ0VJTElORywKKyAgICBVTlVNX1JPVU5EX0ZMT09SLAor
ICAgIFVOVU1fUk9VTkRfRE9XTiwKKyAgICBVTlVNX1JPVU5EX1VQLAorICAgIC8qKgorICAgICAq
IEhhbGYtZXZlbiByb3VuZGluZywgbWlzc3BlbGxlZCBuYW1lCisgICAgICogQGRlcHJlY2F0ZWQs
IElDVSAzLjgKKyAgICAgKi8KKyAgICBVTlVNX0ZPVU5EX0hBTEZFVkVOLAorICAgIFVOVU1fUk9V
TkRfSEFMRkRPV04sCisgICAgVU5VTV9ST1VORF9IQUxGVVAsCisgICAgLyoqCisgICAgICogSGFs
Zi1ldmVuIHJvdW5kaW5nCisgICAgICogQHN0YWJsZSwgSUNVIDMuOAorICAgICAqLworICAgIFVO
VU1fUk9VTkRfSEFMRkVWRU4gPSBVTlVNX0ZPVU5EX0hBTEZFVkVOCit9IFVOdW1iZXJGb3JtYXRS
b3VuZGluZ01vZGU7CisKKy8qKiBUaGUgcG9zc2libGUgbnVtYmVyIGZvcm1hdCBwYWQgcG9zaXRp
b25zLiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBlbnVtIFVOdW1iZXJGb3Jt
YXRQYWRQb3NpdGlvbiB7CisgICAgVU5VTV9QQURfQkVGT1JFX1BSRUZJWCwKKyAgICBVTlVNX1BB
RF9BRlRFUl9QUkVGSVgsCisgICAgVU5VTV9QQURfQkVGT1JFX1NVRkZJWCwKKyAgICBVTlVNX1BB
RF9BRlRFUl9TVUZGSVgKK30gVU51bWJlckZvcm1hdFBhZFBvc2l0aW9uOworCisvKioKKyAqIENy
ZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IFVOdW1iZXJGb3JtYXQgZm9yIGZvcm1hdHRpbmcgYW5kIHBh
cnNpbmcKKyAqIG51bWJlcnMuICBBIFVOdW1iZXJGb3JtYXQgbWF5IGJlIHVzZWQgdG8gZm9ybWF0
IG51bWJlcnMgYnkgY2FsbGluZworICoge0BsaW5rICN1bnVtX2Zvcm1hdCB9LCBhbmQgdG8gcGFy
c2UgbnVtYmVycyBieSBjYWxsaW5nIHtAbGluayAjdW51bV9wYXJzZSB9LgorICogVGhlIGNhbGxl
ciBtdXN0IGNhbGwge0BsaW5rICN1bnVtX2Nsb3NlIH0gd2hlbiBkb25lIHRvIHJlbGVhc2UgcmVz
b3VyY2VzCisgKiB1c2VkIGJ5IHRoaXMgb2JqZWN0LgorICogQHBhcmFtIHN0eWxlIFRoZSB0eXBl
IG9mIG51bWJlciBmb3JtYXQgdG8gb3Blbjogb25lIG9mCisgKiBVTlVNX0RFQ0lNQUwsIFVOVU1f
Q1VSUkVOQ1ksIFVOVU1fUEVSQ0VOVCwgVU5VTV9TQ0lFTlRJRklDLCBVTlVNX1NQRUxMT1VULAor
ICogVU5VTV9QQVRURVJOX0RFQ0lNQUwsIFVOVU1fUEFUVEVSTl9SVUxFQkFTRUQsIG9yIFVOVU1f
REVGQVVMVC4KKyAqIElmIFVOVU1fUEFUVEVSTl9ERUNJTUFMIG9yIFVOVU1fUEFUVEVSTl9SVUxF
QkFTRUQgaXMgcGFzc2VkIHRoZW4gdGhlCisgKiBudW1iZXIgZm9ybWF0IGlzIG9wZW5lZCB1c2lu
ZyB0aGUgZ2l2ZW4gcGF0dGVybiwgd2hpY2ggbXVzdCBjb25mb3JtCisgKiB0byB0aGUgc3ludGF4
IGRlc2NyaWJlZCBpbiBEZWNpbWFsRm9ybWF0IG9yIFJ1bGVCYXNlZE51bWJlckZvcm1hdCwKKyAq
IHJlc3BlY3RpdmVseS4KKyAqIEBwYXJhbSBwYXR0ZXJuIEEgcGF0dGVybiBzcGVjaWZ5aW5nIHRo
ZSBmb3JtYXQgdG8gdXNlLiAKKyAqIFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgdW5sZXNzIHRo
ZSBzdHlsZSBpcworICogVU5VTV9QQVRURVJOX0RFQ0lNQUwgb3IgVU5VTV9QQVRURVJOX1JVTEVC
QVNFRC4KKyAqIEBwYXJhbSBwYXR0ZXJuTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biB0aGUgcGF0dGVybiwgb3IgLTEKKyAqIGlmIG51bGwtdGVybWluYXRlZC4gVGhpcyBwYXJhbWV0
ZXIgaXMgaWdub3JlZCB1bmxlc3MgdGhlIHN0eWxlIGlzCisgKiBVTlVNX1BBVFRFUk4uCisgKiBA
cGFyYW0gbG9jYWxlIEEgbG9jYWxlIGlkZW50aWZpZXIgdG8gdXNlIHRvIGRldGVybWluZSBmb3Jt
YXR0aW5nCisgKiBhbmQgcGFyc2luZyBjb252ZW50aW9ucywgb3IgTlVMTCB0byB1c2UgdGhlIGRl
ZmF1bHQgbG9jYWxlLgorICogQHBhcmFtIHBhcnNlRXJyIEEgcG9pbnRlciB0byBhIFVQYXJzZUVy
cm9yIHN0cnVjdCB0byByZWNlaXZlIHRoZQorICogZGV0YWlscyBvZiBhbnkgcGFyc2luZyBlcnJv
cnMsIG9yIE5VTEwgaWYgbm8gcGFyc2luZyBlcnJvciBkZXRhaWxzCisgKiBhcmUgZGVzaXJlZC4K
KyAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIGlucHV0LW91dHB1dCBVRXJyb3JDb2Rl
LgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gYSBuZXdseSBjcmVhdGVkIFVOdW1iZXJGb3JtYXQs
IG9yIE5VTEwgaWYgYW4KKyAqIGVycm9yIG9jY3VycmVkLgorICogQHNlZSB1bnVtX2Nsb3NlCisg
KiBAc2VlIERlY2ltYWxGb3JtYXQKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBV
TnVtYmVyRm9ybWF0KiBVX0VYUE9SVDIgCit1bnVtX29wZW4oICBVTnVtYmVyRm9ybWF0U3R5bGUg
ICAgc3R5bGUsCisgICAgICAgICAgICBjb25zdCAgICBVQ2hhciogICAgcGF0dGVybiwKKyAgICAg
ICAgICAgIGludDMyX3QgICAgICAgICAgICBwYXR0ZXJuTGVuZ3RoLAorICAgICAgICAgICAgY29u
c3QgICAgY2hhciogICAgIGxvY2FsZSwKKyAgICAgICAgICAgIFVQYXJzZUVycm9yKiAgICAgICBw
YXJzZUVyciwKKyAgICAgICAgICAgIFVFcnJvckNvZGUqICAgICAgICBzdGF0dXMpOworCisKKy8q
KgorKiBDbG9zZSBhIFVOdW1iZXJGb3JtYXQuCisqIE9uY2UgY2xvc2VkLCBhIFVOdW1iZXJGb3Jt
YXQgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8g
Y2xvc2UuCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAor
dW51bV9jbG9zZShVTnVtYmVyRm9ybWF0KiBmbXQpOworCisjaWYgVV9TSE9XX0NQTFVTUExVU19B
UEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xhc3MgTG9jYWxVTnVtYmVyRm9y
bWF0UG9pbnRlcgorICogIlNtYXJ0IHBvaW50ZXIiIGNsYXNzLCBjbG9zZXMgYSBVTnVtYmVyRm9y
bWF0IHZpYSB1bnVtX2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQ
b2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICog
QHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NB
TF9PUEVOX1BPSU5URVIoTG9jYWxVTnVtYmVyRm9ybWF0UG9pbnRlciwgVU51bWJlckZvcm1hdCwg
dW51bV9jbG9zZSk7CisKK1VfTkFNRVNQQUNFX0VORAorCisjZW5kaWYKKworLyoqCisgKiBPcGVu
IGEgY29weSBvZiBhIFVOdW1iZXJGb3JtYXQuCisgKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEg
ZGVlcCBjb3B5LgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0IHRvIGNvcHkKKyAqIEBwYXJhbSBz
dGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgor
ICogQHJldHVybiBBIHBvaW50ZXIgdG8gYSBVTnVtYmVyRm9ybWF0IGlkZW50aWNhbCB0byBmbXQu
CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVU51bWJlckZvcm1hdCogVV9FWFBP
UlQyIAordW51bV9jbG9uZShjb25zdCBVTnVtYmVyRm9ybWF0ICpmbXQsCisgICAgICAgVUVycm9y
Q29kZSAqc3RhdHVzKTsKKworLyoqCisqIEZvcm1hdCBhbiBpbnRlZ2VyIHVzaW5nIGEgVU51bWJl
ckZvcm1hdC4KKyogVGhlIGludGVnZXIgd2lsbCBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRo
ZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8g
dXNlLgorKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9ybWF0LgorKiBAcGFyYW0gcmVz
dWx0IEEgcG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBmb3JtYXR0ZWQgbnVtYmVy
LgorKiBAcGFyYW0gcmVzdWx0TGVuZ3RoIFRoZSBtYXhpbXVtIHNpemUgb2YgcmVzdWx0LgorKiBA
cGFyYW0gcG9zICAgIEEgcG9pbnRlciB0byBhIFVGaWVsZFBvc2l0aW9uLiAgT24gaW5wdXQsIHBv
c2l0aW9uLT5maWVsZAorKiBpcyByZWFkLiAgT24gb3V0cHV0LCBwb3NpdGlvbi0+YmVnaW5JbmRl
eCBhbmQgcG9zaXRpb24tPmVuZEluZGV4IGluZGljYXRlCisqIHRoZSBiZWdpbm5pbmcgYW5kIGVu
ZGluZyBpbmRpY2VzIG9mIGZpZWxkIG51bWJlciBwb3NpdGlvbi0+ZmllbGQsIGlmIHN1Y2gKKyog
YSBmaWVsZCBleGlzdHMuICBUaGlzIHBhcmFtZXRlciBtYXkgYmUgTlVMTCwgaW4gd2hpY2ggY2Fz
ZSBubyBmaWVsZAorKiBAcGFyYW0gc3RhdHVzIEEgcG9pbnRlciB0byBhbiBVRXJyb3JDb2RlIHRv
IHJlY2VpdmUgYW55IGVycm9ycworKiBAcmV0dXJuIFRoZSB0b3RhbCBidWZmZXIgc2l6ZSBuZWVk
ZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1bHRMZW5ndGgsIHRoZSBvdXRwdXQgd2FzIHRydW5jYXRl
ZC4KKyogQHNlZSB1bnVtX2Zvcm1hdEludDY0CisqIEBzZWUgdW51bV9mb3JtYXREb3VibGUKKyog
QHNlZSB1bnVtX3BhcnNlCisqIEBzZWUgdW51bV9wYXJzZUludDY0CisqIEBzZWUgdW51bV9wYXJz
ZURvdWJsZQorKiBAc2VlIFVGaWVsZFBvc2l0aW9uCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1Vf
U1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9mb3JtYXQoICAgIGNvbnN0ICAgIFVOdW1i
ZXJGb3JtYXQqICAgIGZtdCwKKyAgICAgICAgaW50MzJfdCAgICAgICAgICAgIG51bWJlciwKKyAg
ICAgICAgVUNoYXIqICAgICAgICAgICAgcmVzdWx0LAorICAgICAgICBpbnQzMl90ICAgICAgICAg
ICAgcmVzdWx0TGVuZ3RoLAorICAgICAgICBVRmllbGRQb3NpdGlvbiAgICAqcG9zLAorICAgICAg
ICBVRXJyb3JDb2RlKiAgICAgICAgc3RhdHVzKTsKKworLyoqCisqIEZvcm1hdCBhbiBpbnQ2NCB1
c2luZyBhIFVOdW1iZXJGb3JtYXQuCisqIFRoZSBpbnQ2NCB3aWxsIGJlIGZvcm1hdHRlZCBhY2Nv
cmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisqIEBwYXJhbSBmbXQgVGhlIGZv
cm1hdHRlciB0byB1c2UuCisqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQuCisq
IEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGZvcm1h
dHRlZCBudW1iZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhlIG1heGltdW0gc2l6ZSBvZiBy
ZXN1bHQuCisqIEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEgVUZpZWxkUG9zaXRpb24uICBP
biBpbnB1dCwgcG9zaXRpb24tPmZpZWxkCisqIGlzIHJlYWQuICBPbiBvdXRwdXQsIHBvc2l0aW9u
LT5iZWdpbkluZGV4IGFuZCBwb3NpdGlvbi0+ZW5kSW5kZXggaW5kaWNhdGUKKyogdGhlIGJlZ2lu
bmluZyBhbmQgZW5kaW5nIGluZGljZXMgb2YgZmllbGQgbnVtYmVyIHBvc2l0aW9uLT5maWVsZCwg
aWYgc3VjaAorKiBhIGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBOVUxMLCBp
biB3aGljaCBjYXNlIG5vIGZpZWxkCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVF
cnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHRvdGFsIGJ1ZmZl
ciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlIG91dHB1dCB3
YXMgdHJ1bmNhdGVkLgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3JtYXREb3Vi
bGUKKyogQHNlZSB1bnVtX3BhcnNlCisqIEBzZWUgdW51bV9wYXJzZUludDY0CisqIEBzZWUgdW51
bV9wYXJzZURvdWJsZQorKiBAc2VlIFVGaWVsZFBvc2l0aW9uCisqIEBzdGFibGUgSUNVIDIuMAor
Ki8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9mb3JtYXRJbnQ2NChjb25zdCBV
TnVtYmVyRm9ybWF0ICpmbXQsCisgICAgICAgIGludDY0X3QgICAgICAgICBudW1iZXIsCisgICAg
ICAgIFVDaGFyKiAgICAgICAgICByZXN1bHQsCisgICAgICAgIGludDMyX3QgICAgICAgICByZXN1
bHRMZW5ndGgsCisgICAgICAgIFVGaWVsZFBvc2l0aW9uICpwb3MsCisgICAgICAgIFVFcnJvckNv
ZGUqICAgICBzdGF0dXMpOworCisvKioKKyogRm9ybWF0IGEgZG91YmxlIHVzaW5nIGEgVU51bWJl
ckZvcm1hdC4KKyogVGhlIGRvdWJsZSB3aWxsIGJlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhl
IFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisqIEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byB1
c2UuCisqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQuCisqIEBwYXJhbSByZXN1
bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGZvcm1hdHRlZCBudW1iZXIu
CisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhlIG1heGltdW0gc2l6ZSBvZiByZXN1bHQuCisqIEBw
YXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEgVUZpZWxkUG9zaXRpb24uICBPbiBpbnB1dCwgcG9z
aXRpb24tPmZpZWxkCisqIGlzIHJlYWQuICBPbiBvdXRwdXQsIHBvc2l0aW9uLT5iZWdpbkluZGV4
IGFuZCBwb3NpdGlvbi0+ZW5kSW5kZXggaW5kaWNhdGUKKyogdGhlIGJlZ2lubmluZyBhbmQgZW5k
aW5nIGluZGljZXMgb2YgZmllbGQgbnVtYmVyIHBvc2l0aW9uLT5maWVsZCwgaWYgc3VjaAorKiBh
IGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNl
IG5vIGZpZWxkCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8g
cmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRl
ZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVk
LgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2NAorKiBAc2VlIHVu
dW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlSW50NjQKKyogQHNlZSB1bnVtX3BhcnNlRG91Ymxl
CisqIEBzZWUgVUZpZWxkUG9zaXRpb24KKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUg
aW50MzJfdCBVX0VYUE9SVDIgCit1bnVtX2Zvcm1hdERvdWJsZSggICAgY29uc3QgICAgVU51bWJl
ckZvcm1hdCogIGZtdCwKKyAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICBudW1iZXIsCisgICAg
ICAgICAgICBVQ2hhciogICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgaW50MzJfdCAgICAg
ICAgIHJlc3VsdExlbmd0aCwKKyAgICAgICAgICAgIFVGaWVsZFBvc2l0aW9uICAqcG9zLCAvKiAw
IGlmIGlnbm9yZSAqLworICAgICAgICAgICAgVUVycm9yQ29kZSogICAgIHN0YXR1cyk7CisKKy8q
KgorKiBGb3JtYXQgYSBkZWNpbWFsIG51bWJlciB1c2luZyBhIFVOdW1iZXJGb3JtYXQuCisqIFRo
ZSBudW1iZXIgd2lsbCBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBVTnVtYmVyRm9ybWF0
J3MgbG9jYWxlLgorKiBUaGUgc3ludGF4IG9mIHRoZSBpbnB1dCBudW1iZXIgaXMgYSAibnVtZXJp
YyBzdHJpbmciCisqIGFzIGRlZmluZWQgaW4gdGhlIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZp
Y2F0aW9uLCBhdmFpbGFibGUgYXQKKyogaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsCisq
IEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBwYXJhbSBudW1iZXIgVGhlIG51
bWJlciB0byBmb3JtYXQuCisqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQg
bnVtYmVyLCBvciAtMSBpZiB0aGUgaW5wdXQgaXMgbnVsLXRlcm1pbmF0ZWQuCisqIEBwYXJhbSBy
ZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGZvcm1hdHRlZCBudW1i
ZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhlIG1heGltdW0gc2l6ZSBvZiByZXN1bHQuCisq
IEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEgVUZpZWxkUG9zaXRpb24uICBPbiBpbnB1dCwg
cG9zaXRpb24tPmZpZWxkCisqICAgICAgICAgICAgICAgaXMgcmVhZC4gIE9uIG91dHB1dCwgcG9z
aXRpb24tPmJlZ2luSW5kZXggYW5kIHBvc2l0aW9uLT5lbmRJbmRleCBpbmRpY2F0ZQorKiAgICAg
ICAgICAgICAgIHRoZSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpbmRpY2VzIG9mIGZpZWxkIG51bWJl
ciBwb3NpdGlvbi0+ZmllbGQsIGlmIHN1Y2gKKyogICAgICAgICAgICAgICBhIGZpZWxkIGV4aXN0
cy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIGl0IGlzIGlnbm9y
ZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2
ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDsgaWYg
Z3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorKiBA
c2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2NAorKiBAc2VlIHVudW1fcGFy
c2UKKyogQHNlZSB1bnVtX3BhcnNlSW50NjQKKyogQHNlZSB1bnVtX3BhcnNlRG91YmxlCisqIEBz
ZWUgVUZpZWxkUG9zaXRpb24KKyogQHN0YWJsZSBJQ1UgNC40IAorKi8KK1VfU1RBQkxFIGludDMy
X3QgVV9FWFBPUlQyIAordW51bV9mb3JtYXREZWNpbWFsKCAgICBjb25zdCAgICBVTnVtYmVyRm9y
bWF0KiAgZm10LAorICAgICAgICAgICAgY29uc3QgY2hhciAqICAgIG51bWJlciwKKyAgICAgICAg
ICAgIGludDMyX3QgICAgICAgICBsZW5ndGgsCisgICAgICAgICAgICBVQ2hhciogICAgICAgICAg
cmVzdWx0LAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIHJlc3VsdExlbmd0aCwKKyAgICAg
ICAgICAgIFVGaWVsZFBvc2l0aW9uICAqcG9zLCAvKiAwIGlmIGlnbm9yZSAqLworICAgICAgICAg
ICAgVUVycm9yQ29kZSogICAgIHN0YXR1cyk7CisKKy8qKgorICogRm9ybWF0IGEgZG91YmxlIGN1
cnJlbmN5IGFtb3VudCB1c2luZyBhIFVOdW1iZXJGb3JtYXQuCisgKiBUaGUgZG91YmxlIHdpbGwg
YmUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgVU51bWJlckZvcm1hdCdzIGxvY2FsZS4KKyAq
IEBwYXJhbSBmbXQgdGhlIGZvcm1hdHRlciB0byB1c2UKKyAqIEBwYXJhbSBudW1iZXIgdGhlIG51
bWJlciB0byBmb3JtYXQKKyAqIEBwYXJhbSBjdXJyZW5jeSB0aGUgMy1sZXR0ZXIgbnVsbC10ZXJt
aW5hdGVkIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUKKyAqIEBwYXJhbSByZXN1bHQgYSBwb2ludGVy
IHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgZm9ybWF0dGVkIG51bWJlcgorICogQHBhcmFt
IHJlc3VsdExlbmd0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgVUNoYXJzIHRvIHdyaXRlIHRvIHJl
c3VsdAorICogQHBhcmFtIHBvcyBhIHBvaW50ZXIgdG8gYSBVRmllbGRQb3NpdGlvbi4gIE9uIGlu
cHV0LAorICogcG9zaXRpb24tPmZpZWxkIGlzIHJlYWQuICBPbiBvdXRwdXQsIHBvc2l0aW9uLT5i
ZWdpbkluZGV4IGFuZAorICogcG9zaXRpb24tPmVuZEluZGV4IGluZGljYXRlIHRoZSBiZWdpbm5p
bmcgYW5kIGVuZGluZyBpbmRpY2VzIG9mCisgKiBmaWVsZCBudW1iZXIgcG9zaXRpb24tPmZpZWxk
LCBpZiBzdWNoIGEgZmllbGQgZXhpc3RzLiAgVGhpcworICogcGFyYW1ldGVyIG1heSBiZSBOVUxM
LCBpbiB3aGljaCBjYXNlIGl0IGlzIGlnbm9yZWQuCisgKiBAcGFyYW0gc3RhdHVzIGEgcG9pbnRl
ciB0byBhbiBpbnB1dC1vdXRwdXQgVUVycm9yQ29kZQorICogQHJldHVybiB0aGUgdG90YWwgYnVm
ZmVyIHNpemUgbmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0TGVuZ3RoLAorICogdGhlIG91
dHB1dCB3YXMgdHJ1bmNhdGVkLgorICogQHNlZSB1bnVtX2Zvcm1hdERvdWJsZQorICogQHNlZSB1
bnVtX3BhcnNlRG91YmxlQ3VycmVuY3kKKyAqIEBzZWUgVUZpZWxkUG9zaXRpb24KKyAqIEBzdGFi
bGUgSUNVIDMuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK3VudW1fZm9ybWF0
RG91YmxlQ3VycmVuY3koY29uc3QgVU51bWJlckZvcm1hdCogZm10LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hh
ciogY3VycmVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiByZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBVRmllbGRQb3NpdGlvbiogcG9zLCAvKiBpZ25vcmVkIGlmIDAgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsKKworLyoqCisq
IFBhcnNlIGEgc3RyaW5nIGludG8gYW4gaW50ZWdlciB1c2luZyBhIFVOdW1iZXJGb3JtYXQuCisq
IFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5nIHRvIHRoZSBVTnVtYmVyRm9ybWF0
J3MgbG9jYWxlLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gdXNlLgorKiBAcGFyYW0g
dGV4dCBUaGUgdGV4dCB0byBwYXJzZS4KKyogQHBhcmFtIHRleHRMZW5ndGggVGhlIGxlbmd0aCBv
ZiB0ZXh0LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCisqIEBwYXJhbSBwYXJzZVBvcyBJZiBu
b3QgMCwgb24gaW5wdXQgYSBwb2ludGVyIHRvIGFuIGludGVnZXIgc3BlY2lmeWluZyB0aGUgb2Zm
c2V0IGF0IHdoaWNoCisqIHRvIGJlZ2luIHBhcnNpbmcuICBJZiBub3QgMCwgb24gb3V0cHV0IHRo
ZSBvZmZzZXQgYXQgd2hpY2ggcGFyc2luZyBlbmRlZC4KKyogQHBhcmFtIHN0YXR1cyBBIHBvaW50
ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMKKyogQHJldHVybiBUaGUg
dmFsdWUgb2YgdGhlIHBhcnNlZCBpbnRlZ2VyCisqIEBzZWUgdW51bV9wYXJzZUludDY0CisqIEBz
ZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3Jt
YXRJbnQ2NAorKiBAc2VlIHVudW1fZm9ybWF0RG91YmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8K
K1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9wYXJzZSggICAgY29uc3QgICBVTnVt
YmVyRm9ybWF0KiAgZm10LAorICAgICAgICBjb25zdCAgIFVDaGFyKiAgICAgICAgICB0ZXh0LAor
ICAgICAgICBpbnQzMl90ICAgICAgICAgdGV4dExlbmd0aCwKKyAgICAgICAgaW50MzJfdCAgICAg
ICAgICpwYXJzZVBvcyAvKiAwID0gc3RhcnQgKi8sCisgICAgICAgIFVFcnJvckNvZGUgICAgICAq
c3RhdHVzKTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8gYW4gaW50NjQgdXNpbmcgYSBV
TnVtYmVyRm9ybWF0LgorKiBUaGUgc3RyaW5nIHdpbGwgYmUgcGFyc2VkIGFjY29yZGluZyB0byB0
aGUgVU51bWJlckZvcm1hdCdzIGxvY2FsZS4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRv
IHVzZS4KKyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCisqIEBwYXJhbSB0ZXh0TGVu
Z3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorKiBAcGFy
YW0gcGFyc2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRlciB0byBhbiBpbnRlZ2VyIHNw
ZWNpZnlpbmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiB0byBiZWdpbiBwYXJzaW5nLiAgSWYgbm90
IDAsIG9uIG91dHB1dCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHBhcnNpbmcgZW5kZWQuCisqIEBwYXJh
bSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3Jz
CisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgaW50ZWdlcgorKiBAc2VlIHVudW1f
cGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlRG91YmxlCisqIEBzZWUgdW51bV9mb3JtYXQKKyogQHNl
ZSB1bnVtX2Zvcm1hdEludDY0CisqIEBzZWUgdW51bV9mb3JtYXREb3VibGUKKyogQHN0YWJsZSBJ
Q1UgMi44CisqLworVV9TVEFCTEUgaW50NjRfdCBVX0VYUE9SVDIgCit1bnVtX3BhcnNlSW50NjQo
Y29uc3QgVU51bWJlckZvcm1hdCogIGZtdCwKKyAgICAgICAgY29uc3QgVUNoYXIqICB0ZXh0LAor
ICAgICAgICBpbnQzMl90ICAgICAgIHRleHRMZW5ndGgsCisgICAgICAgIGludDMyX3QgICAgICAg
KnBhcnNlUG9zIC8qIDAgPSBzdGFydCAqLywKKyAgICAgICAgVUVycm9yQ29kZSAgICAqc3RhdHVz
KTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8gYSBkb3VibGUgdXNpbmcgYSBVTnVtYmVy
Rm9ybWF0LgorKiBUaGUgc3RyaW5nIHdpbGwgYmUgcGFyc2VkIGFjY29yZGluZyB0byB0aGUgVU51
bWJlckZvcm1hdCdzIGxvY2FsZS4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHVzZS4K
KyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCisqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRo
ZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorKiBAcGFyYW0gcGFy
c2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRlciB0byBhbiBpbnRlZ2VyIHNwZWNpZnlp
bmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiB0byBiZWdpbiBwYXJzaW5nLiAgSWYgbm90IDAsIG9u
IG91dHB1dCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHBhcnNpbmcgZW5kZWQuCisqIEBwYXJhbSBzdGF0
dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEBy
ZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgZG91YmxlCisqIEBzZWUgdW51bV9wYXJzZQor
KiBAc2VlIHVudW1fcGFyc2VJbnQ2NAorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9m
b3JtYXRJbnQ2NAorKiBAc2VlIHVudW1fZm9ybWF0RG91YmxlCisqIEBzdGFibGUgSUNVIDIuMAor
Ki8KK1VfU1RBQkxFIGRvdWJsZSBVX0VYUE9SVDIgCit1bnVtX3BhcnNlRG91YmxlKCAgICBjb25z
dCAgIFVOdW1iZXJGb3JtYXQqICBmbXQsCisgICAgICAgICAgICBjb25zdCAgIFVDaGFyKiAgICAg
ICAgICB0ZXh0LAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIHRleHRMZW5ndGgsCisgICAg
ICAgICAgICBpbnQzMl90ICAgICAgICAgKnBhcnNlUG9zIC8qIDAgPSBzdGFydCAqLywKKyAgICAg
ICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKworCisvKioKKyogUGFyc2UgYSBudW1i
ZXIgZnJvbSBhIHN0cmluZyBpbnRvIGFuIHVuZm9ybWF0dGVkIG51bWVyaWMgc3RyaW5nIHVzaW5n
IGEgVU51bWJlckZvcm1hdC4KKyogVGhlIGlucHV0IHN0cmluZyB3aWxsIGJlIHBhcnNlZCBhY2Nv
cmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisqIFRoZSBzeW50YXggb2YgdGhl
IG91dHB1dCBpcyBhICJudW1lcmljIHN0cmluZyIKKyogYXMgZGVmaW5lZCBpbiB0aGUgRGVjaW1h
bCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24sIGF2YWlsYWJsZSBhdAorKiBodHRwOi8vc3BlbGVv
dHJvdmUuY29tL2RlY2ltYWwKKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHVzZS4KKyog
QHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCisqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBs
ZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorKiBAcGFyYW0gcGFyc2VQ
b3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRlciB0byBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcg
dGhlIG9mZnNldCBhdCB3aGljaAorKiAgICAgICAgICAgICAgICAgdG8gYmVnaW4gcGFyc2luZy4g
IElmIG5vdCAwLCBvbiBvdXRwdXQgdGhlIG9mZnNldCBhdCB3aGljaCBwYXJzaW5nIGVuZGVkLgor
KiBAcGFyYW0gb3V0QnVmIEEgKGNoYXIgKikgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIHBhcnNlZCBu
dW1iZXIgYXMgYSBzdHJpbmcuICBUaGUgb3V0cHV0IHN0cmluZworKiAgICAgICAgICAgICAgIHdp
bGwgYmUgbnVsLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZS4KKyogQHBh
cmFtIG91dEJ1Zkxlbmd0aCBUaGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4gIE1heSBiZSB6
ZXJvLCBpbiB3aGljaCBjYXNlCisqICAgICAgICAgICAgICAgdGhlIG91dEJ1ZiBwb2ludGVyIG1h
eSBiZSBOVUxMLCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZQorKiAgICAgICAgICAg
ICAgIHNpemUgb2YgdGhlIG91dHB1dCBzdHJpbmcuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVy
IHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gdGhlIGxl
bmd0aCBvZiB0aGUgb3V0cHV0IHN0cmluZywgbm90IGluY2x1ZGluZyBhbnkgdGVybWluYXRpbmcg
bnVsLgorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlSW50NjQKKyogQHNlZSB1
bnVtX2Zvcm1hdAorKiBAc2VlIHVudW1fZm9ybWF0SW50NjQKKyogQHNlZSB1bnVtX2Zvcm1hdERv
dWJsZQorKiBAc3RhYmxlIElDVSA0LjQKKyovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMiAK
K3VudW1fcGFyc2VEZWNpbWFsKGNvbnN0ICAgVU51bWJlckZvcm1hdCogIGZtdCwKKyAgICAgICAg
ICAgICAgICAgY29uc3QgICBVQ2hhciogICAgICAgICAgdGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90ICAgICAgICAgdGV4dExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90ICAgICAgICAgKnBhcnNlUG9zIC8qIDAgPSBzdGFydCAqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgKm91dEJ1ZiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90ICAgICAgICAgb3V0QnVmTGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKworLyoqCisgKiBQYXJzZSBhIHN0
cmluZyBpbnRvIGEgZG91YmxlIGFuZCBhIGN1cnJlbmN5IHVzaW5nIGEgVU51bWJlckZvcm1hdC4K
KyAqIFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5nIHRvIHRoZSBVTnVtYmVyRm9y
bWF0J3MgbG9jYWxlLgorICogQHBhcmFtIGZtdCB0aGUgZm9ybWF0dGVyIHRvIHVzZQorICogQHBh
cmFtIHRleHQgdGhlIHRleHQgdG8gcGFyc2UKKyAqIEBwYXJhbSB0ZXh0TGVuZ3RoIHRoZSBsZW5n
dGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkCisgKiBAcGFyYW0gcGFyc2VQb3Mg
YSBwb2ludGVyIHRvIGFuIG9mZnNldCBpbmRleCBpbnRvIHRleHQgYXQgd2hpY2ggdG8KKyAqIGJl
Z2luIHBhcnNpbmcuIE9uIG91dHB1dCwgKnBhcnNlUG9zIHdpbGwgcG9pbnQgYWZ0ZXIgdGhlIGxh
c3QKKyAqIHBhcnNlZCBjaGFyYWN0ZXIuICBUaGlzIHBhcmFtZXRlciBtYXkgYmUgMCwgaW4gd2hp
Y2ggY2FzZSBwYXJzaW5nCisgKiBiZWdpbnMgYXQgb2Zmc2V0IDAuCisgKiBAcGFyYW0gY3VycmVu
Y3kgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgcGFyc2VkIG51bGwtCisg
KiB0ZXJtaW5hdGVkIGN1cnJlbmN5LiAgVGhpcyBidWZmZXIgbXVzdCBoYXZlIGEgY2FwYWNpdHkg
b2YgYXQgbGVhc3QKKyAqIDQgVUNoYXJzLgorICogQHBhcmFtIHN0YXR1cyBhIHBvaW50ZXIgdG8g
YW4gaW5wdXQtb3V0cHV0IFVFcnJvckNvZGUKKyAqIEByZXR1cm4gdGhlIHBhcnNlZCBkb3VibGUK
KyAqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorICogQHNlZSB1bnVtX2Zvcm1hdERvdWJsZUN1cnJl
bmN5CisgKiBAc3RhYmxlIElDVSAzLjAKKyAqLworVV9TVEFCTEUgZG91YmxlIFVfRVhQT1JUMgor
dW51bV9wYXJzZURvdWJsZUN1cnJlbmN5KGNvbnN0IFVOdW1iZXJGb3JtYXQqIGZtdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogdGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCogcGFyc2VQb3MsIC8qIDAgPSBzdGFydCAqLworICAgICAgICAgICAgICAgICAgICAgICAg
IFVDaGFyKiBjdXJyZW5jeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBz
dGF0dXMpOworCisvKioKKyAqIFNldCB0aGUgcGF0dGVybiB1c2VkIGJ5IGEgVU51bWJlckZvcm1h
dC4gIFRoaXMgY2FuIG9ubHkgYmUgdXNlZAorICogb24gYSBEZWNpbWFsRm9ybWF0LCBvdGhlciBm
b3JtYXRzIHJldHVybiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKKyAqIGluIHRoZSBzdGF0dXMu
CisgKiBAcGFyYW0gZm9ybWF0IFRoZSBmb3JtYXR0ZXIgdG8gc2V0LgorICogQHBhcmFtIGxvY2Fs
aXplZCBUUlVFIGlmIHRoZSBwYXR0ZXJuIGlzIGxvY2FsaXplZCwgRkFMU0Ugb3RoZXJ3aXNlLgor
ICogQHBhcmFtIHBhdHRlcm4gVGhlIG5ldyBwYXR0ZXJuCisgKiBAcGFyYW0gcGF0dGVybkxlbmd0
aCBUaGUgbGVuZ3RoIG9mIHBhdHRlcm4sIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KKyAqIEBw
YXJhbSBwYXJzZUVycm9yIEEgcG9pbnRlciB0byBVUGFyc2VFcnJvciB0byByZWNpZXZlIGluZm9y
bWF0aW9uCisgKiBhYm91dCBlcnJvcnMgb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcsIG9yIE5VTEwg
aWYgbm8gcGFyc2UgZXJyb3IKKyAqIGluZm9ybWF0aW9uIGlzIGRlc2lyZWQuCisgKiBAcGFyYW0g
c3RhdHVzIEEgcG9pbnRlciB0byBhbiBpbnB1dC1vdXRwdXQgVUVycm9yQ29kZS4KKyAqIEBzZWUg
dW51bV90b1BhdHRlcm4KKyAqIEBzZWUgRGVjaW1hbEZvcm1hdAorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAordW51bV9hcHBseVBhdHRlcm4oICAgICAg
ICAgIFVOdW1iZXJGb3JtYXQgICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VUJvb2wgICAgICAgICAgbG9jYWxpemVkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCAgIFVD
aGFyICAgICAgICAgICpwYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgICAgICAgICBwYXR0ZXJuTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQ
YXJzZUVycm9yICAgICpwYXJzZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUgICAgICpzdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisKKy8qKgorKiBHZXQgYSBsb2NhbGUgZm9yIHdoaWNoIGRlY2ltYWwgZm9ybWF0dGluZyBw
YXR0ZXJucyBhcmUgYXZhaWxhYmxlLgorKiBBIFVOdW1iZXJGb3JtYXQgaW4gYSBsb2NhbGUgcmV0
dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhlIGNvcnJlY3QKKyogZm9ybWF0
dGluZyBhbmQgcGFyc2luZyBmb3IgdGhlIGxvY2FsZS4gIFRoZSByZXN1bHRzIG9mIHRoaXMgY2Fs
bCBhcmUgbm90CisqIHZhbGlkIGZvciBydWxlLWJhc2VkIG51bWJlciBmb3JtYXRzLgorKiBAcGFy
YW0gbG9jYWxlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBkZXNpcmVkIGxvY2FsZS4KKyogQHJldHVy
biBBIGxvY2FsZSBmb3Igd2hpY2ggbnVtYmVyIGZvcm1hdHRpbmcgcGF0dGVybnMgYXJlIGF2YWls
YWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVudW1fY291bnRBdmFpbGFibGUKKyogQHN0YWJs
ZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyIAordW51bV9nZXRB
dmFpbGFibGUoaW50MzJfdCBsb2NhbGVJbmRleCk7CisKKy8qKgorKiBEZXRlcm1pbmUgaG93IG1h
bnkgbG9jYWxlcyBoYXZlIGRlY2ltYWwgZm9ybWF0dGluZyBwYXR0ZXJucyBhdmFpbGFibGUuICBU
aGUKKyogcmVzdWx0cyBvZiB0aGlzIGNhbGwgYXJlIG5vdCB2YWxpZCBmb3IgcnVsZS1iYXNlZCBu
dW1iZXIgZm9ybWF0cy4KKyogVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIGRldGVybWluaW5n
IHRoZSBsb29wIGVuZGluZyBjb25kaXRpb24gZm9yCisqIGNhbGxzIHRvIHtAbGluayAjdW51bV9n
ZXRBdmFpbGFibGUgfS4KKyogQHJldHVybiBUaGUgbnVtYmVyIG9mIGxvY2FsZXMgZm9yIHdoaWNo
IGRlY2ltYWwgZm9ybWF0dGluZyBwYXR0ZXJucyBhcmUgYXZhaWxhYmxlLgorKiBAc2VlIHVudW1f
Z2V0QXZhaWxhYmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9F
WFBPUlQyIAordW51bV9jb3VudEF2YWlsYWJsZSh2b2lkKTsKKworLyoqIFRoZSBwb3NzaWJsZSBV
TnVtYmVyRm9ybWF0IG51bWVyaWMgYXR0cmlidXRlcyBAc3RhYmxlIElDVSAyLjAgKi8KK3R5cGVk
ZWYgZW51bSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlIHsKKyAgLyoqIFBhcnNlIGludGVnZXJzIG9u
bHkgKi8KKyAgVU5VTV9QQVJTRV9JTlRfT05MWSwKKyAgLyoqIFVzZSBncm91cGluZyBzZXBhcmF0
b3IgKi8KKyAgVU5VTV9HUk9VUElOR19VU0VELAorICAvKiogQWx3YXlzIHNob3cgZGVjaW1hbCBw
b2ludCAqLworICBVTlVNX0RFQ0lNQUxfQUxXQVlTX1NIT1dOLAorICAvKiogTWF4aW11bSBpbnRl
Z2VyIGRpZ2l0cyAqLworICBVTlVNX01BWF9JTlRFR0VSX0RJR0lUUywKKyAgLyoqIE1pbmltdW0g
aW50ZWdlciBkaWdpdHMgKi8KKyAgVU5VTV9NSU5fSU5URUdFUl9ESUdJVFMsCisgIC8qKiBJbnRl
Z2VyIGRpZ2l0cyAqLworICBVTlVNX0lOVEVHRVJfRElHSVRTLAorICAvKiogTWF4aW11bSBmcmFj
dGlvbiBkaWdpdHMgKi8KKyAgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLAorICAvKiogTWluaW11
bSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgVU5VTV9NSU5fRlJBQ1RJT05fRElHSVRTLAorICAvKiog
RnJhY3Rpb24gZGlnaXRzICovCisgIFVOVU1fRlJBQ1RJT05fRElHSVRTLAorICAvKiogTXVsdGlw
bGllciAqLworICBVTlVNX01VTFRJUExJRVIsCisgIC8qKiBHcm91cGluZyBzaXplICovCisgIFVO
VU1fR1JPVVBJTkdfU0laRSwKKyAgLyoqIFJvdW5kaW5nIE1vZGUgKi8KKyAgVU5VTV9ST1VORElO
R19NT0RFLAorICAvKiogUm91bmRpbmcgaW5jcmVtZW50ICovCisgIFVOVU1fUk9VTkRJTkdfSU5D
UkVNRU5ULAorICAvKiogVGhlIHdpZHRoIHRvIHdoaWNoIHRoZSBvdXRwdXQgb2YgPGNvZGU+Zm9y
bWF0KCk8L2NvZGU+IGlzIHBhZGRlZC4gKi8KKyAgVU5VTV9GT1JNQVRfV0lEVEgsCisgIC8qKiBU
aGUgcG9zaXRpb24gYXQgd2hpY2ggcGFkZGluZyB3aWxsIHRha2UgcGxhY2UuICovCisgIFVOVU1f
UEFERElOR19QT1NJVElPTiwKKyAgLyoqIFNlY29uZGFyeSBncm91cGluZyBzaXplICovCisgIFVO
VU1fU0VDT05EQVJZX0dST1VQSU5HX1NJWkUsCisgIC8qKiBVc2Ugc2lnbmlmaWNhbnQgZGlnaXRz
CisgICAqIEBzdGFibGUgSUNVIDMuMCAqLworICBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VE
LAorICAvKiogTWluaW11bSBzaWduaWZpY2FudCBkaWdpdHMKKyAgICogQHN0YWJsZSBJQ1UgMy4w
ICovCisgIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywKKyAgLyoqIE1heGltdW0gc2lnbmlm
aWNhbnQgZGlnaXRzCisgICAqIEBzdGFibGUgSUNVIDMuMCAqLworICBVTlVNX01BWF9TSUdOSUZJ
Q0FOVF9ESUdJVFMsCisgIC8qKiBMZW5pZW50IHBhcnNlIG1vZGUgdXNlZCBieSBydWxlLWJhc2Vk
IGZvcm1hdHMuCisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8KKyAgVU5VTV9MRU5JRU5UX1BB
UlNFCit9IFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGU7CisKKy8qKgorKiBHZXQgYSBudW1lcmljIGF0
dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0LgorKiBBbiBleGFtcGxlIG9m
IGEgbnVtZXJpYyBhdHRyaWJ1dGUgaXMgdGhlIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBhIGZv
cm1hdHRlciB3aWxsIHByb2R1Y2UuCisqIEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byBxdWVy
eS4KKyogQHBhcmFtIGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBxdWVyeTsgb25lIG9mIFVOVU1fUEFS
U0VfSU5UX09OTFksIFVOVU1fR1JPVVBJTkdfVVNFRCwKKyogVU5VTV9ERUNJTUFMX0FMV0FZU19T
SE9XTiwgVU5VTV9NQVhfSU5URUdFUl9ESUdJVFMsIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBV
TlVNX0lOVEVHRVJfRElHSVRTLAorKiBVTlVNX01BWF9GUkFDVElPTl9ESUdJVFMsIFVOVU1fTUlO
X0ZSQUNUSU9OX0RJR0lUUywgVU5VTV9GUkFDVElPTl9ESUdJVFMsIFVOVU1fTVVMVElQTElFUiwK
KyogVU5VTV9HUk9VUElOR19TSVpFLCBVTlVNX1JPVU5ESU5HX01PREUsIFVOVU1fRk9STUFUX1dJ
RFRILCBVTlVNX1BBRERJTkdfUE9TSVRJT04sIFVOVU1fU0VDT05EQVJZX0dST1VQSU5HX1NJWkUu
CisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51bV9zZXRBdHRyaWJ1dGUK
KyogQHNlZSB1bnVtX2dldERvdWJsZUF0dHJpYnV0ZQorKiBAc2VlIHVudW1fc2V0RG91YmxlQXR0
cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9zZXRUZXh0
QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyIAordW51bV9nZXRBdHRyaWJ1dGUoY29uc3QgVU51bWJlckZvcm1hdCogICAgICAgICAgZm10
LAorICAgICAgICAgIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgIGF0dHIpOworCisvKioKKyogU2V0
IGEgbnVtZXJpYyBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIGEgVU51bWJlckZvcm1hdC4KKyog
QW4gZXhhbXBsZSBvZiBhIG51bWVyaWMgYXR0cmlidXRlIGlzIHRoZSBudW1iZXIgb2YgaW50ZWdl
ciBkaWdpdHMgYSBmb3JtYXR0ZXIgd2lsbCBwcm9kdWNlLiAgSWYgdGhlCisqIGZvcm1hdHRlciBk
b2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBhdHRyaWJ1dGUsIHRoZSBjYWxsIGlzIGlnbm9yZWQuICBS
dWxlLWJhc2VkIGZvcm1hdHRlcnMgb25seSB1bmRlcnN0YW5kCisqIHRoZSBsZW5pZW50LXBhcnNl
IGF0dHJpYnV0ZS4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHNldC4KKyogQHBhcmFt
IGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBzZXQ7IG9uZSBvZiBVTlVNX1BBUlNFX0lOVF9PTkxZLCBV
TlVNX0dST1VQSU5HX1VTRUQsCisqIFVOVU1fREVDSU1BTF9BTFdBWVNfU0hPV04sIFVOVU1fTUFY
X0lOVEVHRVJfRElHSVRTLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywgVU5VTV9JTlRFR0VSX0RJ
R0lUUywKKyogVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJ
VFMsIFVOVU1fRlJBQ1RJT05fRElHSVRTLCBVTlVNX01VTFRJUExJRVIsCisqIFVOVU1fR1JPVVBJ
TkdfU0laRSwgVU5VTV9ST1VORElOR19NT0RFLCBVTlVNX0ZPUk1BVF9XSURUSCwgVU5VTV9QQURE
SU5HX1BPU0lUSU9OLCBVTlVNX1NFQ09OREFSWV9HUk9VUElOR19TSVpFLAorKiBvciBVTlVNX0xF
TklFTlRfUEFSU0UuCisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIG9mIGF0dHIuCisq
IEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX2dldERvdWJsZUF0dHJpYnV0ZQor
KiBAc2VlIHVudW1fc2V0RG91YmxlQXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmli
dXRlCisqIEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8K
K1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAordW51bV9zZXRBdHRyaWJ1dGUoICAgIFVOdW1iZXJG
b3JtYXQqICAgICAgICAgIGZtdCwKKyAgICAgICAgICAgIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUg
IGF0dHIsCisgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAgICAgICBuZXdWYWx1ZSk7CisK
KworLyoqCisqIEdldCBhIG51bWVyaWMgYXR0cmlidXRlIGFzc29jaWF0ZWQgd2l0aCBhIFVOdW1i
ZXJGb3JtYXQuCisqIEFuIGV4YW1wbGUgb2YgYSBudW1lcmljIGF0dHJpYnV0ZSBpcyB0aGUgbnVt
YmVyIG9mIGludGVnZXIgZGlnaXRzIGEgZm9ybWF0dGVyIHdpbGwgcHJvZHVjZS4KKyogSWYgdGhl
IGZvcm1hdHRlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBhdHRyaWJ1dGUsIC0xIGlzIHJldHVy
bmVkLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gcXVlcnkuCisqIEBwYXJhbSBhdHRy
IFRoZSBhdHRyaWJ1dGUgdG8gcXVlcnk7IGUuZy4gVU5VTV9ST1VORElOR19JTkNSRU1FTlQuCisq
IEByZXR1cm4gVGhlIHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyog
QHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc2VlIHVudW1fc2V0RG91YmxlQXR0cmlidXRlCisq
IEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRl
CisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGRvdWJsZSBVX0VYUE9SVDIgCit1bnVt
X2dldERvdWJsZUF0dHJpYnV0ZShjb25zdCBVTnVtYmVyRm9ybWF0KiAgICAgICAgICBmbXQsCisg
ICAgICAgICAgVU51bWJlckZvcm1hdEF0dHJpYnV0ZSAgYXR0cik7CisKKy8qKgorKiBTZXQgYSBu
dW1lcmljIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0LgorKiBBbiBl
eGFtcGxlIG9mIGEgbnVtZXJpYyBhdHRyaWJ1dGUgaXMgdGhlIG51bWJlciBvZiBpbnRlZ2VyIGRp
Z2l0cyBhIGZvcm1hdHRlciB3aWxsIHByb2R1Y2UuCisqIElmIHRoZSBmb3JtYXR0ZXIgZG9lcyBu
b3QgdW5kZXJzdGFuZCB0aGUgYXR0cmlidXRlLCB0aGlzIGNhbGwgaXMgaWdub3JlZC4KKyogQHBh
cmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHNldC4KKyogQHBhcmFtIGF0dHIgVGhlIGF0dHJpYnV0
ZSB0byBzZXQ7IGUuZy4gVU5VTV9ST1VORElOR19JTkNSRU1FTlQuCisqIEBwYXJhbSBuZXdWYWx1
ZSBUaGUgbmV3IHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyogQHNl
ZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc2VlIHVudW1fZ2V0RG91YmxlQXR0cmlidXRlCisqIEBz
ZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisq
IEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAordW51bV9zZXRE
b3VibGVBdHRyaWJ1dGUoICAgIFVOdW1iZXJGb3JtYXQqICAgICAgICAgIGZtdCwKKyAgICAgICAg
ICAgIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgIGF0dHIsCisgICAgICAgICAgICBkb3VibGUgICAg
ICAgICAgICAgICAgIG5ld1ZhbHVlKTsKKworLyoqIFRoZSBwb3NzaWJsZSBVTnVtYmVyRm9ybWF0
IHRleHQgYXR0cmlidXRlcyBAc3RhYmxlIElDVSAyLjAqLwordHlwZWRlZiBlbnVtIFVOdW1iZXJG
b3JtYXRUZXh0QXR0cmlidXRlIHsKKyAgLyoqIFBvc2l0aXZlIHByZWZpeCAqLworICBVTlVNX1BP
U0lUSVZFX1BSRUZJWCwKKyAgLyoqIFBvc2l0aXZlIHN1ZmZpeCAqLworICBVTlVNX1BPU0lUSVZF
X1NVRkZJWCwKKyAgLyoqIE5lZ2F0aXZlIHByZWZpeCAqLworICBVTlVNX05FR0FUSVZFX1BSRUZJ
WCwKKyAgLyoqIE5lZ2F0aXZlIHN1ZmZpeCAqLworICBVTlVNX05FR0FUSVZFX1NVRkZJWCwKKyAg
LyoqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBwYWQgdG8gdGhlIGZvcm1hdCB3aWR0aC4gKi8KKyAg
VU5VTV9QQURESU5HX0NIQVJBQ1RFUiwKKyAgLyoqIFRoZSBJU08gY3VycmVuY3kgY29kZSAqLwor
ICBVTlVNX0NVUlJFTkNZX0NPREUsCisgIC8qKgorICAgKiBUaGUgZGVmYXVsdCBydWxlIHNldC4g
IFRoaXMgaXMgb25seSBhdmFpbGFibGUgd2l0aCBydWxlLWJhc2VkIGZvcm1hdHRlcnMuCisgICAq
IEBzdGFibGUgSUNVIDMuMAorICAgKi8KKyAgVU5VTV9ERUZBVUxUX1JVTEVTRVQsCisgIC8qKgor
ICAgKiBUaGUgcHVibGljIHJ1bGUgc2V0cy4gIFRoaXMgaXMgb25seSBhdmFpbGFibGUgd2l0aCBy
dWxlLWJhc2VkIGZvcm1hdHRlcnMuCisgICAqIFRoaXMgaXMgYSByZWFkLW9ubHkgYXR0cmlidXRl
LiAgVGhlIHB1YmxpYyBydWxlc2V0cyBhcmUgcmV0dXJuZWQgYXMgYQorICAgKiBzaW5nbGUgc3Ry
aW5nLCB3aXRoIGVhY2ggcnVsZXNldCBuYW1lIGRlbGltaXRlZCBieSAnOycgKHNlbWljb2xvbiku
CisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8KKyAgVU5VTV9QVUJMSUNfUlVMRVNFVFMKK30g
VU51bWJlckZvcm1hdFRleHRBdHRyaWJ1dGU7CisKKy8qKgorKiBHZXQgYSB0ZXh0IGF0dHJpYnV0
ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0LgorKiBBbiBleGFtcGxlIG9mIGEgdGV4
dCBhdHRyaWJ1dGUgaXMgdGhlIHN1ZmZpeCBmb3IgcG9zaXRpdmUgbnVtYmVycy4gIElmIHRoZSBm
b3JtYXR0ZXIKKyogZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgYXR0cmlidXRyZSwgVV9VTlNVUFBP
UlRFRF9FUlJPUiBpcyByZXR1cm5lZCBhcyB0aGUgc3RhdHVzLgorKiBSdWxlLWJhc2VkIGZvcm1h
dHRlcnMgb25seSB1bmRlcnN0YW5kIFVOVU1fREVGQVVMVF9SVUxFU0VUIGFuZCBVTlVNX1BVQkxJ
Q19SVUxFU0VUUy4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHF1ZXJ5LgorKiBAcGFy
YW0gdGFnIFRoZSBhdHRyaWJ1dGUgdG8gcXVlcnk7IG9uZSBvZiBVTlVNX1BPU0lUSVZFX1BSRUZJ
WCwgVU5VTV9QT1NJVElWRV9TVUZGSVgsCisqIFVOVU1fTkVHQVRJVkVfUFJFRklYLCBVTlVNX05F
R0FUSVZFX1NVRkZJWCwgVU5VTV9QQURESU5HX0NIQVJBQ1RFUiwgVU5VTV9DVVJSRU5DWV9DT0RF
LAorKiBVTlVNX0RFRkFVTFRfUlVMRVNFVCwgb3IgVU5VTV9QVUJMSUNfUlVMRVNFVFMuCisqIEBw
YXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGF0dHJpYnV0
ZS4KKyogQHBhcmFtIHJlc3VsdExlbmd0aCBUaGUgbWF4aW11bSBzaXplIG9mIHJlc3VsdC4KKyog
QHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBl
cnJvcnMKKyogQHJldHVybiBUaGUgdG90YWwgYnVmZmVyIHNpemUgbmVlZGVkOyBpZiBncmVhdGVy
IHRoYW4gcmVzdWx0TGVuZ3RoLCB0aGUgb3V0cHV0IHdhcyB0cnVuY2F0ZWQuCisqIEBzZWUgdW51
bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVt
X3NldEF0dHJpYnV0ZQorKiBAc3RhYmxlIElDVSAyLjAKKyovCitVX1NUQUJMRSBpbnQzMl90IFVf
RVhQT1JUMiAKK3VudW1fZ2V0VGV4dEF0dHJpYnV0ZSggICAgY29uc3QgICAgVU51bWJlckZvcm1h
dCogICAgICAgICAgICAgICAgICAgIGZtdCwKKyAgICAgICAgICAgIFVOdW1iZXJGb3JtYXRUZXh0
QXR0cmlidXRlICAgICAgdGFnLAorICAgICAgICAgICAgVUNoYXIqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0TGVuZ3RoLAorICAgICAgICAgICAgVUVycm9yQ29kZSogICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXMpOworCisvKioKKyogU2V0IGEgdGV4dCBhdHRyaWJ1dGUgYXNz
b2NpYXRlZCB3aXRoIGEgVU51bWJlckZvcm1hdC4KKyogQW4gZXhhbXBsZSBvZiBhIHRleHQgYXR0
cmlidXRlIGlzIHRoZSBzdWZmaXggZm9yIHBvc2l0aXZlIG51bWJlcnMuICBSdWxlLWJhc2VkIGZv
cm1hdHRlcnMKKyogb25seSB1bmRlcnN0YW5kIFVOVU1fREVGQVVMVF9SVUxFU0VULgorKiBAcGFy
YW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gc2V0LgorKiBAcGFyYW0gdGFnIFRoZSBhdHRyaWJ1dGUg
dG8gc2V0OyBvbmUgb2YgVU5VTV9QT1NJVElWRV9QUkVGSVgsIFVOVU1fUE9TSVRJVkVfU1VGRklY
LAorKiBVTlVNX05FR0FUSVZFX1BSRUZJWCwgVU5VTV9ORUdBVElWRV9TVUZGSVgsIFVOVU1fUEFE
RElOR19DSEFSQUNURVIsIFVOVU1fQ1VSUkVOQ1lfQ09ERSwKKyogb3IgVU5VTV9ERUZBVUxUX1JV
TEVTRVQuCisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIG9mIGF0dHIuCisqIEBwYXJh
bSBuZXdWYWx1ZUxlbmd0aCBUaGUgbGVuZ3RoIG9mIG5ld1ZhbHVlLCBvciAtMSBpZiBudWxsLXRl
cm1pbmF0ZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8g
cmVjZWl2ZSBhbnkgZXJyb3JzCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUg
dW51bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc3RhYmxlIElD
VSAyLjAKKyovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK3VudW1fc2V0VGV4dEF0dHJpYnV0
ZSggICAgVU51bWJlckZvcm1hdCogICAgICAgICAgICAgICAgICAgIGZtdCwKKyAgICAgICAgICAg
IFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlICAgICAgdGFnLAorICAgICAgICAgICAgY29uc3Qg
ICAgVUNoYXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlLAorICAgICAgICAg
ICAgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZUxlbmd0aCwKKyAg
ICAgICAgICAgIFVFcnJvckNvZGUgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdHVzKTsKKwor
LyoqCisgKiBFeHRyYWN0IHRoZSBwYXR0ZXJuIGZyb20gYSBVTnVtYmVyRm9ybWF0LiAgVGhlIHBh
dHRlcm4gd2lsbCBmb2xsb3cKKyAqIHRoZSBEZWNpbWFsRm9ybWF0IHBhdHRlcm4gc3ludGF4Lgor
ICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHF1ZXJ5LgorICogQHBhcmFtIGlzUGF0dGVy
bkxvY2FsaXplZCBUUlVFIGlmIHRoZSBwYXR0ZXJuIHNob3VsZCBiZSBsb2NhbGl6ZWQsCisgKiBG
QUxTRSBvdGhlcndpc2UuICBUaGlzIGlzIGlnbm9yZWQgaWYgdGhlIGZvcm1hdHRlciBpcyBhIHJ1
bGUtYmFzZWQKKyAqIGZvcm1hdHRlci4KKyAqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEg
YnVmZmVyIHRvIHJlY2VpdmUgdGhlIHBhdHRlcm4uCisgKiBAcGFyYW0gcmVzdWx0TGVuZ3RoIFRo
ZSBtYXhpbXVtIHNpemUgb2YgcmVzdWx0LgorICogQHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8g
YW4gaW5wdXQtb3V0cHV0IFVFcnJvckNvZGUuCisgKiBAcmV0dXJuIFRoZSB0b3RhbCBidWZmZXIg
c2l6ZSBuZWVkZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1bHRMZW5ndGgsCisgKiB0aGUgb3V0cHV0
IHdhcyB0cnVuY2F0ZWQuCisgKiBAc2VlIHVudW1fYXBwbHlQYXR0ZXJuCisgKiBAc2VlIERlY2lt
YWxGb3JtYXQKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQ
T1JUMiAKK3VudW1fdG9QYXR0ZXJuKCAgICBjb25zdCAgICBVTnVtYmVyRm9ybWF0KiAgICAgICAg
ICBmbXQsCisgICAgICAgIFVCb29sICAgICAgICAgICAgICAgICAgaXNQYXR0ZXJuTG9jYWxpemVk
LAorICAgICAgICBVQ2hhciogICAgICAgICAgICAgICAgICByZXN1bHQsCisgICAgICAgIGludDMy
X3QgICAgICAgICAgICAgICAgIHJlc3VsdExlbmd0aCwKKyAgICAgICAgVUVycm9yQ29kZSogICAg
ICAgICAgICAgc3RhdHVzKTsKKworCisvKioKKyAqIENvbnN0YW50cyBmb3Igc3BlY2lmeWluZyBh
IG51bWJlciBmb3JtYXQgc3ltYm9sLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK3R5cGVkZWYg
ZW51bSBVTnVtYmVyRm9ybWF0U3ltYm9sIHsKKyAgLyoqIFRoZSBkZWNpbWFsIHNlcGFyYXRvciAq
LworICBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX1NZTUJPTCA9IDAsCisgIC8qKiBUaGUgZ3JvdXBp
bmcgc2VwYXJhdG9yICovCisgIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX1NZTUJPTCA9IDEsCisg
IC8qKiBUaGUgcGF0dGVybiBzZXBhcmF0b3IgKi8KKyAgVU5VTV9QQVRURVJOX1NFUEFSQVRPUl9T
WU1CT0wgPSAyLAorICAvKiogVGhlIHBlcmNlbnQgc2lnbiAqLworICBVTlVNX1BFUkNFTlRfU1lN
Qk9MID0gMywKKyAgLyoqIFplcm8qLworICBVTlVNX1pFUk9fRElHSVRfU1lNQk9MID0gNCwKKyAg
LyoqIENoYXJhY3RlciByZXByZXNlbnRpbmcgYSBkaWdpdCBpbiB0aGUgcGF0dGVybiAqLworICBV
TlVNX0RJR0lUX1NZTUJPTCA9IDUsCisgIC8qKiBUaGUgbWludXMgc2lnbiAqLworICBVTlVNX01J
TlVTX1NJR05fU1lNQk9MID0gNiwKKyAgLyoqIFRoZSBwbHVzIHNpZ24gKi8KKyAgVU5VTV9QTFVT
X1NJR05fU1lNQk9MID0gNywKKyAgLyoqIFRoZSBjdXJyZW5jeSBzeW1ib2wgKi8KKyAgVU5VTV9D
VVJSRU5DWV9TWU1CT0wgPSA4LAorICAvKiogVGhlIGludGVybmF0aW9uYWwgY3VycmVuY3kgc3lt
Ym9sICovCisgIFVOVU1fSU5UTF9DVVJSRU5DWV9TWU1CT0wgPSA5LAorICAvKiogVGhlIG1vbmV0
YXJ5IHNlcGFyYXRvciAqLworICBVTlVNX01PTkVUQVJZX1NFUEFSQVRPUl9TWU1CT0wgPSAxMCwK
KyAgLyoqIFRoZSBleHBvbmVudGlhbCBzeW1ib2wgKi8KKyAgVU5VTV9FWFBPTkVOVElBTF9TWU1C
T0wgPSAxMSwKKyAgLyoqIFBlciBtaWxsIHN5bWJvbCAqLworICBVTlVNX1BFUk1JTExfU1lNQk9M
ID0gMTIsCisgIC8qKiBFc2NhcGUgcGFkZGluZyBjaGFyYWN0ZXIgKi8KKyAgVU5VTV9QQURfRVND
QVBFX1NZTUJPTCA9IDEzLAorICAvKiogSW5maW5pdHkgc3ltYm9sICovCisgIFVOVU1fSU5GSU5J
VFlfU1lNQk9MID0gMTQsCisgIC8qKiBOYW4gc3ltYm9sICovCisgIFVOVU1fTkFOX1NZTUJPTCA9
IDE1LAorICAvKiogU2lnbmlmaWNhbnQgZGlnaXQgc3ltYm9sCisgICAqIEBzdGFibGUgSUNVIDMu
MCAqLworICBVTlVNX1NJR05JRklDQU5UX0RJR0lUX1NZTUJPTCA9IDE2LAorICAvKiogVGhlIG1v
bmV0YXJ5IGdyb3VwaW5nIHNlcGFyYXRvciAKKyAgICogQHN0YWJsZSBJQ1UgMy42CisgICAqLwor
ICBVTlVNX01PTkVUQVJZX0dST1VQSU5HX1NFUEFSQVRPUl9TWU1CT0wgPSAxNywgIAorICAvKiog
T25lCisgICAqIEBkcmFmdCBJQ1UgNC42CisgICAqLworICBVTlVNX09ORV9ESUdJVF9TWU1CT0wg
PSAxOCwKKyAgLyoqIFR3bworICAgKiBAZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgVU5VTV9UV09f
RElHSVRfU1lNQk9MID0gMTksCisgIC8qKiBUaHJlZQorICAgKiBAZHJhZnQgSUNVIDQuNgorICAg
Ki8KKyAgVU5VTV9USFJFRV9ESUdJVF9TWU1CT0wgPSAyMCwKKyAgLyoqIEZvdXIKKyAgICogQGRy
YWZ0IElDVSA0LjYKKyAgICovCisgIFVOVU1fRk9VUl9ESUdJVF9TWU1CT0wgPSAyMSwKKyAgLyoq
IEZpdmUKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVOVU1fRklWRV9ESUdJVF9TWU1C
T0wgPSAyMiwKKyAgLyoqIFNpeAorICAgKiBAZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgVU5VTV9T
SVhfRElHSVRfU1lNQk9MID0gMjMsCisgIC8qKiBTZXZlbgorICAgICogQGRyYWZ0IElDVSA0LjYK
KyAgICovCisgIFVOVU1fU0VWRU5fRElHSVRfU1lNQk9MID0gMjQsCisgIC8qKiBFaWdodAorICAg
KiBAZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgVU5VTV9FSUdIVF9ESUdJVF9TWU1CT0wgPSAyNSwK
KyAgLyoqIE5pbmUKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVOVU1fTklORV9ESUdJ
VF9TWU1CT0wgPSAyNiwKKyAgLyoqIGNvdW50IHN5bWJvbCBjb25zdGFudHMgKi8KKyAgVU5VTV9G
T1JNQVRfU1lNQk9MX0NPVU5UID0gMjcKK30gVU51bWJlckZvcm1hdFN5bWJvbDsKKworLyoqCisq
IEdldCBhIHN5bWJvbCBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0LgorKiBBIFVOdW1i
ZXJGb3JtYXQgdXNlcyBzeW1ib2xzIHRvIHJlcHJlc2VudCB0aGUgc3BlY2lhbCBsb2NhbGUtZGVw
ZW5kZW50CisqIGNoYXJhY3RlcnMgaW4gYSBudW1iZXIsIGZvciBleGFtcGxlIHRoZSBwZXJjZW50
IHNpZ24uIFRoaXMgQVBJIGlzIG5vdAorKiBzdXBwb3J0ZWQgZm9yIHJ1bGUtYmFzZWQgZm9ybWF0
dGVycy4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHF1ZXJ5LgorKiBAcGFyYW0gc3lt
Ym9sIFRoZSBVTnVtYmVyRm9ybWF0U3ltYm9sIGNvbnN0YW50IGZvciB0aGUgc3ltYm9sIHRvIGdl
dAorKiBAcGFyYW0gYnVmZmVyIFRoZSBzdHJpbmcgYnVmZmVyIHRoYXQgd2lsbCByZWNlaXZlIHRo
ZSBzeW1ib2wgc3RyaW5nOworKiAgICAgICAgICAgICAgIGlmIGl0IGlzIE5VTEwsIHRoZW4gb25s
eSB0aGUgbGVuZ3RoIG9mIHRoZSBzeW1ib2wgaXMgcmV0dXJuZWQKKyogQHBhcmFtIHNpemUgVGhl
IHNpemUgb2YgdGhlIHN0cmluZyBidWZmZXIKKyogQHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8g
YW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMKKyogQHJldHVybiBUaGUgbGVuZ3Ro
IG9mIHRoZSBzeW1ib2w7IHRoZSBidWZmZXIgaXMgbm90IG1vZGlmaWVkIGlmCisqICAgICAgICAg
PGNvZGU+bGVuZ3RoJmd0Oz1zaXplPC9jb2RlPgorKiBAc2VlIHVudW1fc2V0U3ltYm9sCisqIEBz
dGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1bnVtX2dldFN5
bWJvbChjb25zdCBVTnVtYmVyRm9ybWF0ICpmbXQsCisgICAgICAgICAgICAgICBVTnVtYmVyRm9y
bWF0U3ltYm9sIHN5bWJvbCwKKyAgICAgICAgICAgICAgIFVDaGFyICpidWZmZXIsCisgICAgICAg
ICAgICAgICBpbnQzMl90IHNpemUsCisgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMp
OworCisvKioKKyogU2V0IGEgc3ltYm9sIGFzc29jaWF0ZWQgd2l0aCBhIFVOdW1iZXJGb3JtYXQu
CisqIEEgVU51bWJlckZvcm1hdCB1c2VzIHN5bWJvbHMgdG8gcmVwcmVzZW50IHRoZSBzcGVjaWFs
IGxvY2FsZS1kZXBlbmRlbnQKKyogY2hhcmFjdGVycyBpbiBhIG51bWJlciwgZm9yIGV4YW1wbGUg
dGhlIHBlcmNlbnQgc2lnbi4gIFRoaXMgQVBJIGlzIG5vdAorKiBzdXBwb3J0ZWQgZm9yIHJ1bGUt
YmFzZWQgZm9ybWF0dGVycy4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHNldC4KKyog
QHBhcmFtIHN5bWJvbCBUaGUgVU51bWJlckZvcm1hdFN5bWJvbCBjb25zdGFudCBmb3IgdGhlIHN5
bWJvbCB0byBzZXQKKyogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdG8gc2V0IHRoZSBzeW1ib2wg
dG8KKyogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIG9yIC0xIGZvciBh
IHplcm8tdGVybWluYXRlZCBzdHJpbmcKKyogQHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYW4g
VUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCisqIEBzZWUgdW51bV9nZXRTeW1ib2wK
KyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VudW1fc2V0
U3ltYm9sKFVOdW1iZXJGb3JtYXQgKmZtdCwKKyAgICAgICAgICAgICAgIFVOdW1iZXJGb3JtYXRT
eW1ib2wgc3ltYm9sLAorICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnZhbHVlLAorICAgICAg
ICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOworCisKKy8qKgorICogR2V0IHRoZSBsb2NhbGUgZm9yIHRoaXMgbnVtYmVyIGZvcm1hdCBv
YmplY3QuCisgKiBZb3UgY2FuIGNob29zZSBiZXR3ZWVuIHZhbGlkIGFuZCBhY3R1YWwgbG9jYWxl
LgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIGdldCB0aGUgbG9jYWxlIGZyb20KKyAq
IEBwYXJhbSB0eXBlIHR5cGUgb2YgdGhlIGxvY2FsZSB3ZSdyZSBsb29raW5nIGZvciAodmFsaWQg
b3IgYWN0dWFsKSAKKyAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZSBmb3IgdGhlIG9wZXJhdGlv
bgorICogQHJldHVybiB0aGUgbG9jYWxlIG5hbWUKKyAqIEBzdGFibGUgSUNVIDIuOAorICovCitV
X1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKK3VudW1fZ2V0TG9jYWxlQnlUeXBlKGNvbnN0
IFVOdW1iZXJGb3JtYXQgKmZtdCwKKyAgICAgICAgICAgICAgICAgICAgIFVMb2NEYXRhTG9jYWxl
VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsgCisK
KyNlbmRpZiAvKiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORyAqLworCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91b2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDRj
ODRkYTViNjc4ZTJkZjQ4YWU0M2I2ODJhYjU0OTA5MjgzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW9iamVjdC5oCkBAIC0wLDAgKzEsMzUy
IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0IChDKSAyMDAy
LTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorKiAgIGZpbGUgbmFtZTogIHVvYmplY3QuaAorKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisq
ICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50YXRpb246NAorKgorKiAgIGNy
ZWF0ZWQgb246IDIwMDJqdW4yNgorKiAgIGNyZWF0ZWQgYnk6IE1hcmt1cyBXLiBTY2hlcmVyCisq
LworCisjaWZuZGVmIF9fVU9CSkVDVF9IX18KKyNkZWZpbmUgX19VT0JKRUNUX0hfXworCisjaW5j
bHVkZSAidW5pY29kZS91dHlwZXMuaCIKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBc
ZmlsZQorICogXGJyaWVmIEMrKyBBUEk6IENvbW1vbiBJQ1UgYmFzZSBjbGFzcyBVT2JqZWN0Lgor
ICovCisKKy8qKiAgVV9PVkVSUklERV9DWFhfQUxMT0NBVElPTiAtIERlZmluZSB0aGlzIHRvIG92
ZXJyaWRlIG9wZXJhdG9yIG5ldyBhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlbGV0ZSBpbiBVTWVtb3J5LiBFbmFibGVkIGJ5IGRlZmF1bHQgZm9yIElDVS4KKyAqCisgKiAg
ICAgICAgIEVuYWJsaW5nIGZvcmNlcyBhbGwgYWxsb2NhdGlvbiBvZiBJQ1Ugb2JqZWN0IHR5cGVz
IHRvIHVzZSBJQ1UncworICogICAgICAgICBtZW1vcnkgYWxsb2NhdGlvbi4gT24gV2luZG93cywg
dGhpcyBhbGxvd3MgdGhlIElDVSBETEwgdG8gYmUgdXNlZCBieQorICogICAgICAgICBhcHBsaWNh
dGlvbnMgdGhhdCBzdGF0aWNhbGx5IGxpbmsgdGhlIEMgUnVudGltZSBsaWJyYXJ5LCBtZWFuaW5n
IHRoYXQKKyAqICAgICAgICAgdGhlIGFwcCBhbmQgSUNVIHdpbGwgYmUgdXNpbmcgZGlmZmVyZW50
IGhlYXBzLgorICoKKyAqIEBzdGFibGUgSUNVIDIuMgorICovICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCisjaWZuZGVmIFVfT1ZFUlJJREVfQ1hYX0FMTE9DQVRJT04KKyNkZWZpbmUgVV9P
VkVSUklERV9DWFhfQUxMT0NBVElPTiAxCisjZW5kaWYKKworLyoqIAorICogXGRlZiBVX0hBVkVf
UExBQ0VNRU5UX05FVworICogIERlZmluZSB0aGlzIHRvIGRlZmluZSB0aGUgcGxhY2VtZW50IG5l
dyBhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgaW4gVU1lbW9yeSBmb3Ig
U1RMLgorICoKKyAqIEBzdGFibGUgSUNVIDIuNgorICovICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCisjaWZuZGVmIFVfSEFWRV9QTEFDRU1FTlRfTkVXCisjZGVmaW5lIFVfSEFWRV9QTEFD
RU1FTlRfTkVXIDEKKyNlbmRpZgorCisKKy8qKiAKKyAqIFxkZWYgVV9IQVZFX0RFQlVHX0xPQ0FU
SU9OX05FVyAKKyAqIERlZmluZSB0aGlzIHRvIGRlZmluZSB0aGUgTUZDIGRlYnVnCisgKiB2ZXJz
aW9uIG9mIHRoZSBvcGVyYXRvciBuZXcuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNpZm5kZWYgVV9IQVZFX0RFQlVHX0xPQ0FUSU9O
X05FVworI2RlZmluZSBVX0hBVkVfREVCVUdfTE9DQVRJT05fTkVXIDAKKyNlbmRpZgorCisvKioK
KyAqIEB7CisgKiBcZGVmIFVfTk9fVEhST1cKKyAqICAgICAgICAgRGVmaW5lIHRoaXMgdG8gZGVm
aW5lIHRoZSB0aHJvdygpIHNwZWNpZmljYXRpb24gc28KKyAqICAgICAgICAgICAgICAgICBjZXJ0
YWluIGZ1bmN0aW9ucyBkbyBub3QgdGhyb3cgYW55IGV4Y2VwdGlvbnMKKyAqCisgKiAgICAgICAg
IFVNZW1vcnkgb3BlcmF0b3IgbmV3IG1ldGhvZHMgc2hvdWxkIGhhdmUgdGhlIHRocm93KCkgc3Bl
Y2lmaWNhdGlvbiAKKyAqICAgICAgICAgYXBwZW5kZWQgdG8gdGhlbSwgc28gdGhhdCB0aGUgY29t
cGlsZXIgYWRkcyB0aGUgYWRkaXRpb25hbCBOVUxMIGNoZWNrIAorICogICAgICAgICBiZWZvcmUg
Y2FsbGluZyBjb25zdHJ1Y3RvcnMuIFdpdGhvdXQsIGlmIDxjb2RlPm9wZXJhdG9yIG5ldzwvY29k
ZT4gcmV0dXJucyBOVUxMIHRoZSAKKyAqICAgICAgICAgY29uc3RydWN0b3IgaXMgc3RpbGwgY2Fs
bGVkLCBhbmQgaWYgdGhlIGNvbnN0cnVjdG9yIHJlZmVyZW5jZXMgbWVtYmVyIAorICogICAgICAg
ICBkYXRhLCAod2hpY2ggaXQgdHlwaWNhbGx5IGRvZXMpLCB0aGUgcmVzdWx0IGlzIGEgc2VnbWVu
dGF0aW9uIHZpb2xhdGlvbi4KKyAqCisgKiBAZHJhZnQgSUNVIDQuMgorICovICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCisjaWZuZGVmIFVfTk9fVEhST1cKKyNkZWZpbmUgVV9OT19USFJP
VyB0aHJvdygpCisjZW5kaWYKKworLyoqIEB9ICovCisKKy8qKgorICogVU1lbW9yeSBpcyB0aGUg
Y29tbW9uIElDVSBiYXNlIGNsYXNzLgorICogQWxsIG90aGVyIElDVSBDKysgY2xhc3NlcyBhcmUg
ZGVyaXZlZCBmcm9tIFVNZW1vcnkgKHN0YXJ0aW5nIHdpdGggSUNVIDIuNCkuCisgKgorICogVGhp
cyBpcyBwcmltYXJpbHkgdG8gbWFrZSBpdCBwb3NzaWJsZSBhbmQgc2ltcGxlIHRvIG92ZXJyaWRl
IHRoZQorICogQysrIG1lbW9yeSBtYW5hZ2VtZW50IGJ5IGFkZGluZyBuZXcvZGVsZXRlIG9wZXJh
dG9ycyB0byB0aGlzIGJhc2UgY2xhc3MuCisgKgorICogVG8gb3ZlcnJpZGUgQUxMIElDVSBtZW1v
cnkgbWFuYWdlbWVudCwgaW5jbHVkaW5nIHRoYXQgZnJvbSBwbGFpbiBDIGNvZGUsCisgKiByZXBs
YWNlIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiBjbWVtb3J5LmgKKyAqCisg
KiBVTWVtb3J5IGRvZXMgbm90IGNvbnRhaW4gYW55IHZpcnR1YWwgZnVuY3Rpb25zLgorICogQ29t
bW9uICJib2lsZXJwbGF0ZSIgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGluIFVPYmplY3QuCisgKgor
ICogQHN0YWJsZSBJQ1UgMi40CisgKi8KK2NsYXNzIFVfQ09NTU9OX0FQSSBVTWVtb3J5IHsKK3B1
YmxpYzoKKworLyogdGVzdCB2ZXJzaW9ucyBmb3IgZGVidWdnaW5nIHNoYXBlciBoZWFwIG1lbW9y
eSBwcm9ibGVtcyAqLworI2lmZGVmIFNIQVBFUl9NRU1PUllfREVCVUcgIAorICAgIHN0YXRpYyB2
b2lkICogTmV3QXJyYXkoaW50IHNpemUsIGludCBjb3VudCk7CisgICAgc3RhdGljIHZvaWQgKiBH
cm93QXJyYXkodm9pZCAqIGFycmF5LCBpbnQgbmV3U2l6ZSApOworICAgIHN0YXRpYyB2b2lkICAg
RnJlZUFycmF5KHZvaWQgKiBhcnJheSApOworI2VuZGlmCisKKyNpZiBVX09WRVJSSURFX0NYWF9B
TExPQ0FUSU9OCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgZm9yIElDVTRDIEMrKyBtZW1vcnkg
bWFuYWdlbWVudC4KKyAgICAgKiBzaW1wbGUsIG5vbi1jbGFzcyB0eXBlcyBhcmUgYWxsb2NhdGVk
IHVzaW5nIHRoZSBtYWNyb3MgaW4gY29tbW9uL2NtZW1vcnkuaAorICAgICAqICh1cHJ2X21hbGxv
YygpLCB1cHJ2X2ZyZWUoKSwgdXBydl9yZWFsbG9jKCkpOworICAgICAqIHRoZXkgb3Igc29tZXRo
aW5nIGVsc2UgY291bGQgYmUgdXNlZCBoZXJlIHRvIGltcGxlbWVudCBDKysgbmV3L2RlbGV0ZQor
ICAgICAqIGZvciBJQ1U0QyBDKysgY2xhc3NlcworICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAg
ICAqLworICAgIHN0YXRpYyB2b2lkICogVV9FWFBPUlQyIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6
ZSkgVV9OT19USFJPVzsKKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGZvciBJQ1U0QyBDKysg
bWVtb3J5IG1hbmFnZW1lbnQuCisgICAgICogU2VlIG5ldygpLgorICAgICAqIEBzdGFibGUgSUNV
IDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lkICogVV9FWFBPUlQyIG9wZXJhdG9yIG5ld1td
KHNpemVfdCBzaXplKSBVX05PX1RIUk9XOworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgZm9y
IElDVTRDIEMrKyBtZW1vcnkgbWFuYWdlbWVudC4KKyAgICAgKiBzaW1wbGUsIG5vbi1jbGFzcyB0
eXBlcyBhcmUgYWxsb2NhdGVkIHVzaW5nIHRoZSBtYWNyb3MgaW4gY29tbW9uL2NtZW1vcnkuaAor
ICAgICAqICh1cHJ2X21hbGxvYygpLCB1cHJ2X2ZyZWUoKSwgdXBydl9yZWFsbG9jKCkpOworICAg
ICAqIHRoZXkgb3Igc29tZXRoaW5nIGVsc2UgY291bGQgYmUgdXNlZCBoZXJlIHRvIGltcGxlbWVu
dCBDKysgbmV3L2RlbGV0ZQorICAgICAqIGZvciBJQ1U0QyBDKysgY2xhc3NlcworICAgICAqIEBz
dGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lkIFVfRVhQT1JUMiBvcGVyYXRv
ciBkZWxldGUodm9pZCAqcCkgVV9OT19USFJPVzsKKworICAgIC8qKgorICAgICAqIE92ZXJyaWRl
IGZvciBJQ1U0QyBDKysgbWVtb3J5IG1hbmFnZW1lbnQuCisgICAgICogU2VlIGRlbGV0ZSgpLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lkIFVfRVhQT1JU
MiBvcGVyYXRvciBkZWxldGVbXSh2b2lkICpwKSBVX05PX1RIUk9XOworCisjaWYgVV9IQVZFX1BM
QUNFTUVOVF9ORVcKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBmb3IgSUNVNEMgQysrIG1lbW9y
eSBtYW5hZ2VtZW50IGZvciBTVEwuCisgICAgICogU2VlIG5ldygpLgorICAgICAqIEBzdGFibGUg
SUNVIDIuNgorICAgICAqLworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCAqIFVfRVhQT1JUMiBvcGVy
YXRvciBuZXcoc2l6ZV90LCB2b2lkICpwdHIpIFVfTk9fVEhST1cgeyByZXR1cm4gcHRyOyB9CisK
KyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBmb3IgSUNVNEMgQysrIG1lbW9yeSBtYW5hZ2VtZW50
IGZvciBTVEwuCisgICAgICogU2VlIGRlbGV0ZSgpLgorICAgICAqIEBzdGFibGUgSUNVIDIuNgor
ICAgICAqLworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBVX0VYUE9SVDIgb3BlcmF0b3IgZGVsZXRl
KHZvaWQgKiwgdm9pZCAqKSBVX05PX1RIUk9XIHt9CisjZW5kaWYgLyogVV9IQVZFX1BMQUNFTUVO
VF9ORVcgKi8KKyNpZiBVX0hBVkVfREVCVUdfTE9DQVRJT05fTkVXCisgICAgLyoqCisgICAgICAq
IFRoaXMgbWV0aG9kIG92ZXJyaWRlcyB0aGUgTUZDIGRlYnVnIHZlcnNpb24gb2YgdGhlIG9wZXJh
dG9yIG5ldworICAgICAgKiAKKyAgICAgICogQHBhcmFtIHNpemUgICBUaGUgcmVxdWVzdGVkIG1l
bW9yeSBzaXplCisgICAgICAqIEBwYXJhbSBmaWxlICAgVGhlIGZpbGUgd2hlcmUgdGhlIGFsbG9j
YXRpb24gd2FzIHJlcXVlc3RlZAorICAgICAgKiBAcGFyYW0gbGluZSAgIFRoZSBsaW5lIHdoZXJl
IHRoZSBhbGxvY2F0aW9uIHdhcyByZXF1ZXN0ZWQgCisgICAgICAqLyAKKyAgICBzdGF0aWMgdm9p
ZCAqIFVfRVhQT1JUMiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lKSBVX05PX1RIUk9XOworICAgIC8qKgorICAgICAgKiBUaGlzIG1ldGhvZCBwcm92
aWRlcyBhIG1hdGNoaW5nIGRlbGV0ZSBmb3IgdGhlIE1GQyBkZWJ1ZyBuZXcKKyAgICAgICogCisg
ICAgICAqIEBwYXJhbSBwICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBtZW1vcnkK
KyAgICAgICogQHBhcmFtIGZpbGUgICBUaGUgZmlsZSB3aGVyZSB0aGUgYWxsb2NhdGlvbiB3YXMg
cmVxdWVzdGVkCisgICAgICAqIEBwYXJhbSBsaW5lICAgVGhlIGxpbmUgd2hlcmUgdGhlIGFsbG9j
YXRpb24gd2FzIHJlcXVlc3RlZCAKKyAgICAgICovIAorICAgIHN0YXRpYyB2b2lkIFVfRVhQT1JU
MiBvcGVyYXRvciBkZWxldGUodm9pZCogcCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIFVf
Tk9fVEhST1c7CisjZW5kaWYgLyogVV9IQVZFX0RFQlVHX0xPQ0FUSU9OX05FVyAqLworI2VuZGlm
IC8qIFVfT1ZFUlJJREVfQ1hYX0FMTE9DQVRJT04gKi8KKworICAgIC8qCisgICAgICogQXNzaWdu
bWVudCBvcGVyYXRvciBub3QgZGVjbGFyZWQuIFRoZSBjb21waWxlciB3aWxsIHByb3ZpZGUgb25l
CisgICAgICogd2hpY2ggZG9lcyBub3RoaW5nIHNpbmNlIHRoaXMgY2xhc3MgZG9lcyBub3QgY29u
dGFpbiBhbnkgZGF0YSBtZW1iZXJzLgorICAgICAqIEFQSS9jb2RlIGNvdmVyYWdlIG1heSBzaG93
IHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGFzIHByZXNlbnQgYW5kCisgICAgICogdW50ZXN0ZWQg
LSBpZ25vcmUuCisgICAgICogU3ViY2xhc3NlcyBuZWVkIHRoaXMgYXNzaWdubWVudCBvcGVyYXRv
ciBpZiB0aGV5IHVzZSBjb21waWxlci1wcm92aWRlZAorICAgICAqIGFzc2lnbm1lbnQgb3BlcmF0
b3JzIG9mIHRoZWlyIG93bi4gQW4gYWx0ZXJuYXRpdmUgdG8gbm90IGRlY2xhcmluZyBvbmUKKyAg
ICAgKiBoZXJlIHdvdWxkIGJlIHRvIGRlY2xhcmUgYW5kIGVtcHR5LWltcGxlbWVudCBhIHByb3Rl
Y3RlZCBvciBwdWJsaWMgb25lLgorICAgIFVNZW1vcnkgJlVNZW1vcnk6Om9wZXJhdG9yPShjb25z
dCBVTWVtb3J5ICYpOworICAgICAqLworfTsKKworLyoqCisgKiBVT2JqZWN0IGlzIHRoZSBjb21t
b24gSUNVICJib2lsZXJwbGF0ZSIgY2xhc3MuCisgKiBVT2JqZWN0IGluaGVyaXRzIFVNZW1vcnkg
KHN0YXJ0aW5nIHdpdGggSUNVIDIuNCksCisgKiBhbmQgYWxsIG90aGVyIHB1YmxpYyBJQ1UgQysr
IGNsYXNzZXMKKyAqIGFyZSBkZXJpdmVkIGZyb20gVU9iamVjdCAoc3RhcnRpbmcgd2l0aCBJQ1Ug
Mi4yKS4KKyAqCisgKiBVT2JqZWN0IGNvbnRhaW5zIGNvbW1vbiB2aXJ0dWFsIGZ1bmN0aW9ucyBs
aWtlIGZvciBJQ1UncyAicG9vciBtYW4ncyBSVFRJIi4KKyAqIEl0IGRvZXMgbm90IGNvbnRhaW4g
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCisgKiBsaWtlIGdldER5
bmFtaWNDbGFzc0lEIHRvIGFsbG93IGRlcml2ZWQgY2xhc3NlcyBzdWNoIGFzIEZvcm1hdAorICog
dG8gZGVjbGFyZSB0aGVzZSBhcyBwdXJlIHZpcnR1YWwuCisgKgorICogVGhlIGNsb25lKCkgZnVu
Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBVT2JqZWN0IGJlY2F1c2UgaXQgaXMgbm90CisgKiBp
bXBsZW1lbnRlZCBieSBhbGwgSUNVIGNsYXNzZXMuCisgKiBNYW55IElDVSBzZXJ2aWNlcyBwcm92
aWRlIGEgY2xvbmUoKSBmdW5jdGlvbiBmb3IgdGhlaXIgY2xhc3MgdHJlZXMsCisgKiBkZWZpbmVk
IG9uIHRoZSBzZXJ2aWNlJ3MgQysrIGJhc2UgY2xhc3MsIGFuZCBhbGwgc3ViY2xhc3NlcyB3aXRo
aW4gdGhhdAorICogc2VydmljZSBjbGFzcyB0cmVlIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHNl
cnZpY2UgYmFzZSBjbGFzcworICogKHdoaWNoIGl0c2VsZiBpcyBhIHN1YmNsYXNzIG9mIFVPYmpl
Y3QpLgorICogVGhpcyBpcyBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIGRvIG5vdCBzdXBwb3J0IGNv
dmFyaWFudCAoc2FtZS1hcy10aGlzKQorICogcmV0dXJuIHR5cGVzOyBjYXN0IHRvIHRoZSBhcHBy
b3ByaWF0ZSBzdWJjbGFzcyBpZiBuZWNlc3NhcnkuCisgKgorICogQHN0YWJsZSBJQ1UgMi4yCisg
Ki8KK2NsYXNzIFVfQ09NTU9OX0FQSSBVT2JqZWN0IDogcHVibGljIFVNZW1vcnkgeworcHVibGlj
OgorICAgIC8qKgorICAgICAqIERlc3RydWN0b3IuCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElD
VSAyLjIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIH5VT2JqZWN0KCk7CisKKyAgICAvKioKKyAgICAg
KiBJQ1U0QyAicG9vciBtYW4ncyBSVFRJIiwgcmV0dXJucyBhIFVDbGFzc0lEIGZvciB0aGUgYWN0
dWFsIElDVSBjbGFzcy4KKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDIuMgorICAgICAqLwor
ICAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0RHluYW1pY0NsYXNzSUQoKSBjb25zdCA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICAvLyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgcHJvdGVjdGVkIHRv
IHByZXZlbnQgaW5zdGFudGlhdGlvbiBhbmQKKyAgICAvLyBkaXJlY3QgdXNlIG9mIFVPYmplY3Qg
aXRzZWxmCisKKyAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yCisgICAgLy8gY29tbWVudGVkIG91
dCBiZWNhdXNlIFVPYmplY3QgaXMgYWJzdHJhY3QgKHNlZSBnZXREeW5hbWljQ2xhc3NJRCkKKyAg
ICAvLyBpbmxpbmUgVU9iamVjdCgpIHt9CisKKyAgICAvLyBjb3B5IGNvbnN0cnVjdG9yCisgICAg
Ly8gY29tbWVudGVkIG91dCBiZWNhdXNlIFVPYmplY3QgaXMgYWJzdHJhY3QgKHNlZSBnZXREeW5h
bWljQ2xhc3NJRCkKKyAgICAvLyBpbmxpbmUgVU9iamVjdChjb25zdCBVT2JqZWN0ICZvdGhlcikg
e30KKworI2lmIDAKKyAgICAvLyBUT0RPIFNvbWV0aW1lIGluIHRoZSBmdXR1cmUuIEltcGxlbWVu
dCBvcGVyYXRvcj09KCkuCisgICAgLy8gKFRoaXMgY29tbWVudCBpbnNlcnRlZCBpbiAyLjIpCisg
ICAgLy8gc29tZSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyAiYm9pbGVycGxhdGUiIGZ1bmN0aW9u
cyBtYXkgYmUgbWFkZSBwdWJsaWMKKyAgICAvLyBpbiBhIGZ1dHVyZSBJQ1U0QyByZWxlYXNlIHdo
ZW4gYWxsIHN1YmNsYXNzZXMgaW1wbGVtZW50IHRoZW0KKworICAgIC8vIGFzc2lnbm1lbnQgb3Bl
cmF0b3IKKyAgICAvLyAobm90IHZpcnR1YWwsIHNlZSAiVGFsaWdlbnQncyBHdWlkZSB0byBEZXNp
Z25pbmcgUHJvZ3JhbXMiIHBwLjczLi43NCkKKyAgICAvLyBjb21tZW50ZWQgb3V0IGJlY2F1c2Ug
dGhlIGltcGxlbWVudGF0aW9uIGlzIHRoZSBzYW1lIGFzIGEgY29tcGlsZXIncyBkZWZhdWx0Cisg
ICAgLy8gVU9iamVjdCAmb3BlcmF0b3I9KGNvbnN0IFVPYmplY3QgJm90aGVyKSB7IHJldHVybiAq
dGhpczsgfQorCisgICAgLy8gY29tcGFyaXNvbiBvcGVyYXRvcnMKKyAgICB2aXJ0dWFsIGlubGlu
ZSBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IFVPYmplY3QgJm90aGVyKSBjb25zdCB7IHJldHVybiB0
aGlzPT0mb3RoZXI7IH0KKyAgICBpbmxpbmUgVUJvb2wgb3BlcmF0b3IhPShjb25zdCBVT2JqZWN0
ICZvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisKKyAgICAvLyBj
bG9uZSgpIGNvbW1lbnRlZCBvdXQgZnJvbSB0aGUgYmFzZSBjbGFzczoKKyAgICAvLyBzb21lIGNv
bXBpbGVycyBkbyBub3Qgc3VwcG9ydCBjby12YXJpYW50IHJldHVybiB0eXBlcworICAgIC8vIChp
LmUuLCBzdWJjbGFzc2VzIHdvdWxkIGhhdmUgdG8gcmV0dXJuIFVPYmplY3QgKiBhcyB3ZWxsLCBp
bnN0ZWFkIG9mIFN1YkNsYXNzICopCisgICAgLy8gc2VlIGFsc28gVU9iamVjdCBjbGFzcyBkb2N1
bWVudGF0aW9uLgorICAgIC8vIHZpcnR1YWwgVU9iamVjdCAqY2xvbmUoKSBjb25zdDsKKyNlbmRp
ZgorCisgICAgLyoKKyAgICAgKiBBc3NpZ25tZW50IG9wZXJhdG9yIG5vdCBkZWNsYXJlZC4gVGhl
IGNvbXBpbGVyIHdpbGwgcHJvdmlkZSBvbmUKKyAgICAgKiB3aGljaCBkb2VzIG5vdGhpbmcgc2lu
Y2UgdGhpcyBjbGFzcyBkb2VzIG5vdCBjb250YWluIGFueSBkYXRhIG1lbWJlcnMuCisgICAgICog
QVBJL2NvZGUgY292ZXJhZ2UgbWF5IHNob3cgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IgYXMgcHJl
c2VudCBhbmQKKyAgICAgKiB1bnRlc3RlZCAtIGlnbm9yZS4KKyAgICAgKiBTdWJjbGFzc2VzIG5l
ZWQgdGhpcyBhc3NpZ25tZW50IG9wZXJhdG9yIGlmIHRoZXkgdXNlIGNvbXBpbGVyLXByb3ZpZGVk
CisgICAgICogYXNzaWdubWVudCBvcGVyYXRvcnMgb2YgdGhlaXIgb3duLiBBbiBhbHRlcm5hdGl2
ZSB0byBub3QgZGVjbGFyaW5nIG9uZQorICAgICAqIGhlcmUgd291bGQgYmUgdG8gZGVjbGFyZSBh
bmQgZW1wdHktaW1wbGVtZW50IGEgcHJvdGVjdGVkIG9yIHB1YmxpYyBvbmUuCisgICAgVU9iamVj
dCAmVU9iamVjdDo6b3BlcmF0b3I9KGNvbnN0IFVPYmplY3QgJik7CisgICAgICovCisKKy8vIEZ1
dHVyZSBpbXBsZW1lbnRhdGlvbiBmb3IgUlRUSSB0aGF0IHN1cHBvcnQgc3VidHlwaW5nLiBbYWxh
bl0KKy8vIAorLy8gIHB1YmxpYzoKKy8vICAgICAvKioKKy8vICAgICAgKiBAaW50ZXJuYWwKKy8v
ICAgICAgKi8KKy8vICAgICBzdGF0aWMgVUNsYXNzSUQgZ2V0U3RhdGljQ2xhc3NJRCgpOworLy8g
CisvLyAgICAgLyoqCisvLyAgICAgICogQGludGVybmFsCisvLyAgICAgICovCisvLyAgICAgVUJv
b2wgaW5zdGFuY2VPZihVQ2xhc3NJRCB0eXBlKSBjb25zdDsKK307CisKKy8qKgorICogVGhpcyBp
cyBhIHNpbXBsZSBtYWNybyB0byBhZGQgSUNVIFJUVEkgdG8gYW4gSUNVIG9iamVjdCBpbXBsZW1l
bnRhdGlvbi4KKyAqIFRoaXMgZG9lcyBub3QgZ28gaW50byB0aGUgaGVhZGVyLiBUaGlzIHNob3Vs
ZCBvbmx5IGJlIHVzZWQgaW4gKi5jcHAgZmlsZXMuCisgKgorICogQHBhcmFtIG15Q2xhc3MgVGhl
IG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRUSSBkZWZpbmVkLgorICogQGludGVybmFs
CisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfUlRUSV9JTVBMRU1FTlRBVElPTihteUNsYXNz
KSBcCisgICAgVUNsYXNzSUQgVV9FWFBPUlQyIG15Q2xhc3M6OmdldFN0YXRpY0NsYXNzSUQoKSB7
IFwKKyAgICAgICAgc3RhdGljIGNoYXIgY2xhc3NJRCA9IDA7IFwKKyAgICAgICAgcmV0dXJuIChV
Q2xhc3NJRCkmY2xhc3NJRDsgXAorICAgIH0gXAorICAgIFVDbGFzc0lEIG15Q2xhc3M6OmdldER5
bmFtaWNDbGFzc0lEKCkgY29uc3QgXAorICAgIHsgcmV0dXJuIG15Q2xhc3M6OmdldFN0YXRpY0Ns
YXNzSUQoKTsgfQorCisKKy8qKgorICogVGhpcyBtYWNybyBhZGRzIElDVSBSVFRJIHRvIGFuIElD
VSBhYnN0cmFjdCBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKyAqIFRoaXMgbWFjcm8gc2hvdWxkIGJl
IGludm9rZWQgaW4gKi5jcHAgZmlsZXMuICBUaGUgY29ycmVzcG9uZGluZworICogaGVhZGVyIHNo
b3VsZCBkZWNsYXJlIGdldFN0YXRpY0NsYXNzSUQuCisgKgorICogQHBhcmFtIG15Q2xhc3MgVGhl
IG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRUSSBkZWZpbmVkLgorICogQGludGVybmFs
CisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfQUJTVFJBQ1RfUlRUSV9JTVBMRU1FTlRBVElP
TihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgVV9FWFBPUlQyIG15Q2xhc3M6OmdldFN0YXRpY0Ns
YXNzSUQoKSB7IFwKKyAgICAgICAgc3RhdGljIGNoYXIgY2xhc3NJRCA9IDA7IFwKKyAgICAgICAg
cmV0dXJuIChVQ2xhc3NJRCkmY2xhc3NJRDsgXAorICAgIH0KKworLyoqCisgKiBUaGlzIGlzIGEg
c2ltcGxlIG1hY3JvIHRvIGV4cHJlc3MgdGhhdCBhIGNsYXNzIGFuZCBpdHMgc3ViY2xhc3NlcyBk
byBub3Qgb2ZmZXIKKyAqIElDVSdzICJwb29yIG1hbidzIFJUVEkiLgorICogQmVnaW5uaW5nIHdp
dGggSUNVIDQuNiwgSUNVIHJlcXVpcmVzIEMrKyBjb21waWxlciBSVFRJLgorICogVGhpcyBkb2Vz
IG5vdCBnbyBpbnRvIHRoZSBoZWFkZXIuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiAqLmNw
cCBmaWxlcy4KKyAqIFVzZSB0aGlzIHdpdGggYSBwcml2YXRlIGdldER5bmFtaWNDbGFzc0lEKCkg
aW4gYW4gaW1tZWRpYXRlIHN1YmNsYXNzIG9mIFVPYmplY3QuCisgKgorICogQHBhcmFtIG15Q2xh
c3MgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRUSSBkZWZpbmVkLgorICogQGlu
dGVybmFsCisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfTk9fUlRUSV9JTVBMRU1FTlRBVElP
TihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgbXlDbGFzczo6Z2V0RHluYW1pY0NsYXNzSUQoKSBj
b25zdCB7IHJldHVybiBOVUxMOyB9CisKKy8vIC8qKgorLy8gICogVGhpcyBtYWNybyBhZGRzIElD
VSBSVFRJIHRvIGFuIElDVSBjb25jcmV0ZSBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKy8vICAqIFRo
aXMgbWFjcm8gc2hvdWxkIGJlIGludm9rZWQgaW4gKi5jcHAgZmlsZXMuICBUaGUgY29ycmVzcG9u
ZGluZworLy8gICogaGVhZGVyIHNob3VsZCBkZWNsYXJlIGdldER5bmFtaWNDbGFzc0lEIGFuZCBn
ZXRTdGF0aWNDbGFzc0lELgorLy8gICoKKy8vICAqIEBwYXJhbSBteUNsYXNzIFRoZSBuYW1lIG9m
IHRoZSBjbGFzcyB0aGF0IG5lZWRzIFJUVEkgZGVmaW5lZC4KKy8vICAqIEBwYXJhbSBteVBhcmVu
dCBUaGUgbmFtZSBvZiB0aGUgbXlDbGFzcydzIHBhcmVudC4KKy8vICAqIEBpbnRlcm5hbAorLy8g
ICovCisvKiNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfUlRUSV9JTVBMRU1FTlRBVElPTihteUNsYXNz
LCBteVBhcmVudCkgXAorICAgIFVPQkpFQ1RfREVGSU5FX0FCU1RSQUNUX1JUVElfSU1QTEVNRU5U
QVRJT04obXlDbGFzcywgbXlQYXJlbnQpIFwKKyAgICBVQ2xhc3NJRCBteUNsYXNzOjpnZXREeW5h
bWljQ2xhc3NJRCgpIGNvbnN0IHsgXAorICAgICAgICByZXR1cm4gbXlDbGFzczo6Z2V0U3RhdGlj
Q2xhc3NJRCgpOyBcCisgICAgfQorKi8KKworCitVX05BTUVTUEFDRV9FTkQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCA0ZDZjNWRhNjIxODYwNWFjZTFkNTIwMjJkMmRlYjJhMGIzMjUxZjI3Li4xZGVmNjg4MDIx
ZjZhOGI1YjQ4ZTI5MTNlNjgyOTMwNGJlM2EzMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM4LDYgKzM4LDcgQEAKICAg
ICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAogICAgIG1hY3JvKElu
ZmluaXR5KSBcCisgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKICAgICBtYWNy
byhNYXApXAogICAgIG1hY3JvKE1hcEl0ZXJhdG9yKVwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIzODA0N2U2M2Q2NWZjYTkxZWY1
NTM3NDg5NjAwYmIzOGE3N2RiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20p
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAi
T2JqZWN0UHJvdG90eXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRs
T2JqZWN0KTsKKworfQorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxP
YmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSW50bE9iamVjdCkgfTsKKworSW50bE9iamVjdDo6SW50bE9iamVjdChWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0
dXJlKQoreworfQorCit2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
N2JjNGI4ODhkYmE4ZDU3NWY1ZjhkY2M2ODhjMjhhMWNkODBiZWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgSW50bE9iamVjdF9oCisjZGVmaW5lIEludGxPYmplY3RfaAorCisjaWYg
RU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90
b3R5cGU7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZTsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CisKK2NsYXNzIEludGxPYmplY3Qg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citwcml2YXRlOgorICAgIEludGxPYmplY3QoVk0m
LCBTdHJ1Y3R1cmUqKTsKKworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGlj
IEludGxPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsK
KyAgICAgICAgSW50bE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW50bE9iamVjdD4odm0uaGVhcCkpIEludGxPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwp
CisKKyNlbmRpZiAvLyBJbnRsT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNGEwYzFjZmE2ZWMyYWNkMzkzZTU0M2Y0
MjYwYzJjMzI2YmExOTM3Li43NmM0YTgxZjViMzYyZGE4YjgwMjBhMjM4NjI3OTQ0YmQwNzJhOGQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0xMzMsNiArMTMzLDEwIEBACiAjaW5jbHVkZSAiV2Vha1NldENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiV2Vha1NldFByb3RvdHlwZS5oIgogCisjaWYgRU5BQkxFKElOVEwpCisjaW5j
bHVkZSAiSW50bE9iamVjdC5oIgorI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCiAjaWYgRU5BQkxF
KFBST01JU0VTKQogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNv
bnN0cnVjdG9yLmgiCkBAIC00MTMsNyArNDE3LDEwIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0
CiAgICAgCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmV2YWwuc3RyaW5nKCksIGdsb2JhbEZ1
bmNFdmFsKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7Ci0gICAgCisKKyNp
ZiBFTkFCTEUoSU5UTCkKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+SW50bCwgSW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVt
KTsKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09O
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+TWF0aCwgTWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERv
bnRFbnVtKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCmluZGV4IGVhNzExYzBmNzFlMWQ3MWRjZTIxMjIwYTc2YzljY2U1OGYz
OWFjMDkuLjlhNjc5YmYxZjliZDk1Yjk2ZDQyZWZjZjIyYzJiMTFjZDMzNTU4Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAt
MjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8dW5pY29kZS9udW1m
bXQuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VuaXN0ci5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdXR5
cGVzLmg+CiAjaW5jbHVkZSAiVWludDE2V2l0aEZyYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL2R0
b2EuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMzYsNiArMzksNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9kdG9hL2RvdWJsZS1jb252ZXJzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
VEY6OmRvdWJsZV9jb252ZXJzaW9uOwordXNpbmcgbmFtZXNwYWNlIGljdTsKIAogLy8gVG8gYXZv
aWQgY29uZmxpY3Qgd2l0aCBXVEY6OlN0cmluZ0J1aWxkZXIuCiB0eXBlZGVmIFdURjo6ZG91Ymxl
X2NvbnZlcnNpb246OlN0cmluZ0J1aWxkZXIgRG91YmxlQ29udmVyc2lvblN0cmluZ0J1aWxkZXI7
CkBAIC01MTEsMTEgKzUxNSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiB7Ci0gICAgZG91YmxlIHg7Ci0gICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVl
KCksIHgpKQorICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKyAgICBpZiAoIXRvVGhpc051bWJlcihl
eGVjLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCku
dG9TdHJpbmcoZXhlYykpOworICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Cisg
ICAgTnVtYmVyRm9ybWF0KiBmbXQgPSBOdW1iZXJGb3JtYXQ6OmNyZWF0ZUluc3RhbmNlKGVycm9y
KTsKKworICAgIFVuaWNvZGVTdHJpbmcgc3RyaW5nVmFsdWU7CisgICAgZm10LT5mb3JtYXQoZG91
YmxlVmFsdWUsIHN0cmluZ1ZhbHVlKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcoZXhlYywgU3RyaW5nKHN0cmluZ1ZhbHVlLmdldFRlcm1pbmF0ZWRCdWZmZXIoKSkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9m
KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZp
bmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IDEzYWUwYTkxYmQ3
M2FmY2JlOGQyN2U4YjkyNDZjNzEyNDYyMjBhOGYuLjYwYWQxMWIwN2NmZjlkYWZiZjIxZTk3ZmRk
MDgwNTFiYTRjNWFmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVz
LmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtNTM1LDYgKzUzNSwx
MCBAQCB0aGUgcHVibGljIGlPUyBTREsuIFdlIHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUg
RmVhdHVyZURlZmluZXMueGNjb25maWcgZmlsZQogI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUyAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9JTlRM
KQorI2RlZmluZSBFTkFCTEVfSU5UTCAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9K
QVZBU0NSSVBUX0kxOE5fQVBJKQogI2RlZmluZSBFTkFCTEVfSkFWQVNDUklQVF9JMThOX0FQSSAw
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggNDNkNzAwZWNjNjc3YzhiNjA5YTZhNjNmYjJjM2Y3ZjRm
ODJjYjI4My4uOGMyNWI3OGEyYjJlNjI1Y2MxOWE4MDQ0ODkyMDJhMGE4YmJlNDhiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTExNiw2ICsxMTYsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
X21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVDsKIAorRU5BQkxFX0lOVEwgPSA7CisKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lO
VEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7
CiAKQEAgLTIyMiw0ICsyMjQsNCBAQCBFTkFCTEVfRlRMX0pJVFtzZGs9aXBob25lb3MqXSA9IEVO
QUJMRV9GVExfSklUOwogCiBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDID0gRU5B
QkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9O
UykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05J
TkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQo
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVO
QUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklF
TlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJ
T05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikg
JChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQo
RU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQ
UkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9U
SU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0Vf
Q09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRT
KSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRT
KSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZF
VENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChF
TkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9N
RVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxF
KSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hX
Q09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVH
SU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BS
T1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVP
VEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FV
VE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElP
Tl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JP
TExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkp
ICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZH
X09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVO
QUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxF
X1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1Nf
VFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklF
V19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChF
TkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFC
TEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFU
RURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsK
K0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VM
RVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
KSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChF
TkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVf
Q0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9F
UzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFC
TEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQo
RU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAk
KEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVU
SU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQp
ICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19U
RVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNU
T01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9E
RVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9N
NF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVf
RU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZP
TlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFE
KSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJ
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BP
UE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5B
QkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5B
QkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVO
QUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkg
JChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFC
TEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9S
X0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVS
X0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVO
QUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxF
X1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5B
QkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQ
RUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZ
UFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVO
QUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVO
VCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5B
QkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0sp
ICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQo
RU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQo
RU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRf
UkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZU
TF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElD
KSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4
IDQzZDcwMGVjYzY3N2M4YjYwOWE2YTYzZmIyYzNmN2Y0ZjgyY2IyODMuLjhjMjViNzhhMmIyZTYy
NWNjMTlhODA0NDg5MjAyYTBhOGJiZTQ4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNiAr
MTE2LDggQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0g
OwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxF
X1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKK0VO
QUJMRV9JTlRMID0gOworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0Vf
SU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVS
TkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwogCkBAIC0yMjIsNCArMjI0
LDQgQEAgRU5BQkxFX0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBFTkFCTEVfRlRMX0pJVDsKIAog
RU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZ
T1VUX0FSSVRITUVUSUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9S
TVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURf
T1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFD
SE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5W
QVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1Nf
U1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NP
TlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9D
U1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVf
Q1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NT
X1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVY
VCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklM
SVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVS
X0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xF
VkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMp
ICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RF
WFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAk
KEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFU
SE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJD
RSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChF
TkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdB
VE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVO
QUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lO
VEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAk
KEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5B
QkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQo
RU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxF
X1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVf
Q1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAk
KEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxF
TUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQo
RU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQo
RU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJB
Q0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkp
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJW
VFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxF
X0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1F
VElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NB
UFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJ
VElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NT
X1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hB
UEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAk
KEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVS
KSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkg
JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAk
KEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
MikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBB
RF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0Vf
RE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VS
VklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01P
TlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykg
JChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJM
RV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5B
QkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVT
KSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9Q
UkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1Mp
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFf
Q09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NU
QVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJM
RV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAk
KEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9Q
Uk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJ
WF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
ICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9S
KSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElO
RykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAk
KEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FM
TCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VF
X1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VU
UykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxF
X1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9K
SVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9f
UFJFU0VOVEFUSU9OX01PREUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA0M2Q3MDBlY2M2NzdjOGI2MDlhNmE2
M2ZiMmMzZjdmNGY4MmNiMjgzLi44YzI1Yjc4YTJiMmU2MjVjYzE5YTgwNDQ4OTIwMmEwYThiYmU0
OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCitFTkFCTEVfSU5UTCA9IDsKKwogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNf
aW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UUzsKIApAQCAtMjIyLDQgKzIyNCw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhv
bmVvcypdID0gRU5BQkxFX0ZUTF9KSVQ7CiAKIEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRI
TUVUSUMgPSBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDOwogCi1GRUFUVVJFX0RF
RklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVf
QVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hF
X1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9Y
WSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQ
X05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hf
REVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1Nf
REVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFC
TEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9D
U1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JS
RUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9I
QU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVN
RU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NP
TlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZF
TlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVf
R0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVO
X1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFC
TEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19U
T1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNf
U0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9D
VVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9O
QVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
UERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykg
JChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAk
KEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxF
X1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJM
RV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFC
TEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9T
VFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRF
Q1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQo
RU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAk
KEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VC
X0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFC
TEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1F
T1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5B
QkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFU
SU9OX01PREUpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRI
KSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgp
ICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9G
SUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lN
QUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNU
T1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVO
QUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQo
RU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMp
ICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikg
JChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5B
QkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFC
TEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJM
RV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJf
QVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVN
RU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJM
RV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVO
Q1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5B
QkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9F
VkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVU
RSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9R
VUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkg
JChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxF
X1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05W
RVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1Q
TEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VW
RU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdf
V09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NT
U19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VC
X1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkg
JChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VU
X0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZQppbmRleCA4MGQ0OGE5Mzk0NWNiYzM3MTkxNzE5NGYxZmRhNmExZjE5
MTdjMTc2Li45NjgwNDMzYjA4ODI0Y2U1YzMyMDc4OWU1NzIxZTY0MzQ2YWIyYTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC05OCw2ICs5OCw3IEBAIG1hY3JvKFdFQktJVF9PUFRJ
T05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfTU9O
VEggIlRvZ2dsZSBtb250aCB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSAiVG9nZ2xlIHRpbWUg
dHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgIlRvZ2dsZSB3ZWVrIHR5cGUgPGlucHV0PiBzdXBw
b3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5UTCAi
VG9nZ2xlIEludGwgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0lPU19BSVJQTEFZICJUb2dnbGUgaU9TIGFpcnBsYXkgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJ
TkcgIlRvZ2dsZSBpT1MgdGV4dCBhdXRvc2l6aW5nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9KSVQgIkVuYWJsZSBKdXN0SW5UaW1lIGphdmFz
Y3JpcHQgc3VwcG9ydCIgUFJJVkFURSBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyOGNlYmRmM2E3MzcxYmJmYmQ0MmI5ZmJiYjE5MzNjZDE1
YmU3MTI5Li44NmQ4MDcyYWZlN2YzMThhMzg0NmVhZTBlODAyNjIwN2ViN2FkNTgzIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMDUtMjEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTA2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVO
QUJMRV9JTlRMIGZsYWcKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbTogYWRkIGZsYWcKKwogMjAxNS0wNS0yNiAgRGFuYSBCdXJrYXJ0ICA8ZGJ1cmthcnRAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeGVzIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggcmVjZW50
IGRhc2hib2FyZCBjbGVhbnVwLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CmluZGV4IDk2OGVkNjdiYmZlMWFiYjY3NzQ1MDA0ODk2NTFmODVhNTYyNGVhMTAuLjdhMDIzNjRi
NGMxM2ZlNmNkODRiMGJiNTIyOWIzNzYzYzlhMWYxNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0KQEAgLTkxLDYgKzkxLDcgQEAgbXkgKAogICAgICRpbnB1dFR5cGVN
b250aFN1cHBvcnQsCiAgICAgJGlucHV0VHlwZVRpbWVTdXBwb3J0LAogICAgICRpbnB1dFR5cGVX
ZWVrU3VwcG9ydCwKKyAgICAkaW50bFN1cHBvcnQsCiAgICAgJGppdFN1cHBvcnQsCiAgICAgJGxl
Z2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0LAogICAgICRsZWdhY3lWZW5kb3JQcmVmaXhTdXBwb3J0
LApAQCAtMjg4LDYgKzI4OSw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAi
aW5wdXQtdHlwZS13ZWVrIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5cGUgV2VlayBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyIsIGRlZmF1bHQgPT4g
MCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVXZWVrU3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4g
ImludGwiLCBkZXNjID0+ICJUb2dnbGUgSW50bCBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW50bFN1cHBvcnQgfSwKKwog
ICAgIHsgb3B0aW9uID0+ICJsZWdhY3ktbm90aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBM
ZWdhY3kgTm90aWZpY2F0aW9ucyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlm
aWNhdGlvbnNTdXBwb3J0IH0sCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCA4Nzg0ZDk2OTkyNWFlZTJmYTIzZGNhY2Q4OGM0ZjYxYzQ0NGE3ZGJkLi4xMzI5NmE1ZDc0
MjhmNzEzYWQzYWNjZDNiY2I0OWMxNjUxMjQ2NDc2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDUtMjEgIEFuZHkgVmFuV2Fnb25l
ciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNj
cmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB3b3JrIG9uIGltcGxlbWVudGluZyB0aGUgSW50
ZXJuYXRpb25haXphdGlvbiBBUElzIGJ5IGFkZGluZyB0aGUgZmVhdHVyZSBmbGFnCisgICAgICAg
IChkaXNhYmxlZCB1bnRpbCByZWFkeSksIGFuZCBhZGRpbmcgYSBnbG9iYWwgSW50bCBvYmplY3Qg
dG8gc2VydmUgYXMgdGhlIG5hbWVzcGFjZS4KKyAgICAgICAgU2VlIHNwZWM6IGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTQwMi8xLjAvCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIwMTUt
MDUtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjku
MiByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktp
dExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggNjI2MzVkYjdmZjY0YzA4MTU2M2I4OTMxODY2MGI2
OGVkYTNkNTc4Mi4uODU4YTBjZDgyZWVkMDZkZDQ0ZjRiM2EwMzFjNDAyMzhiOGQyMzlmNCAxMDA2
NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDUtMjEgIEFuZHkgVmFuV2Fnb25lciAg
PHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlw
dCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRV9JTlRMIGZsYWcKKworICAgICAgICAqIHdpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAgICAqIHdpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUtMDUtMDkgIFlvYXYgV2Vp
c3MgIDx5b2F2QHlvYXYud3M+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBQSUNUVVJFX1NJWkVTIGJ1
aWxkIGZsYWcKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9G
ZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9G
ZWF0dXJlRGVmaW5lcy5wcm9wcwppbmRleCBhZTc5NDhiZmJjOGQ5YjQ5YWMxMTIwM2EyODJjNWM4
MzY4Nzk0NzdkLi4wZGY5OTA5OGE3Mjc4NTQzMGRmZmUxMDhhNWY2NTFmMTc3ZWJkY2EzIDEwMDY0
NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMu
cHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZp
bmVzLnByb3BzCkBAIC00OCw2ICs0OCw3IEBACiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX01PTlRI
IC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgLz4KICAgICA8RU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSyAvPgorICAgIDxFTkFCTEVfSU5UTD5FTkFCTEVfSU5UTDwvRU5BQkxFX0lOVEw+CiAg
ICAgPEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz5FTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVM8L0VOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz4KICAgICA8
RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIC8+CiAgICAgPEVOQUJMRV9MSU5LX1BSRUZFVENI
IC8+CkBAIC05Miw3ICs5Myw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0
aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4kKEVOQUJMRV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7
JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFC
TEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NT
M19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NT
M19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19H
UklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElO
Ryk7JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTsk
KEVOQUJMRV9DU1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9D
U1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxF
X0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5B
QkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RS
QU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9P
UklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVO
VFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVf
RlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTsk
KEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9E
UElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09N
UExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRf
VFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19Q
UkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFC
TEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElG
SUNBVElPTlMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVO
QUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTsk
KEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVE
SUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElB
X1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVE
KTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
Uyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFC
TEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9W
SURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEp
OyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9U
SU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVf
WEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4k
KEVOQUJMRV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChF
TkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVf
Q0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19D
T05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19U
RVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklE
X0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7
JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVO
QUJMRV9DU1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1Nf
VFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NV
UlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxF
X0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNf
Q09OU1RSVUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVO
QUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElf
Q0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0Up
OyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExF
VEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dF
RUspOyQoRU5BQkxFX0lOVEwpOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTsk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChF
TkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxF
TUVOVCk7JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQo
RU5BQkxFX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxF
X1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBU
RURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7
JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVf
U1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01f
T0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZF
UlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5H
KTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9E
RV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQo
RU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9O
Uyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjg0LDYgKzI4NSwxMCBA
QAogICAgICAgPFZhbHVlPiQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk8L1ZhbHVlPgogICAgICAg
PEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KICAgICA8L0J1
aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0lOVEwiPgorICAgICAg
PFZhbHVlPiQoRU5BQkxFX0lOVEwpPC9WYWx1ZT4KKyAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxl
PnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CisgICAgPC9CdWlsZE1hY3JvPgogICAgIDxCdWls
ZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyI+CiAgICAg
ICA8VmFsdWU+JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpPC9WYWx1ZT4KICAg
ICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CmRpZmYg
LS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXND
YWlyby5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVm
aW5lc0NhaXJvLnByb3BzCmluZGV4IDUwMGM0ZTExNDhkOTIwOGI1MTVkMThiNWQ5MWZiMTgxNGYw
YjZlMDQuLjRkZDBiOTUyYzY0ZmFhY2VkNjNiNTMzZjRhZmZhM2Y0ZDk4ZDk0ZTQgMTAwNjQ0Ci0t
LSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJv
LnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVm
aW5lc0NhaXJvLnByb3BzCkBAIC00OCw2ICs0OCw3IEBACiAgICAgPEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgLz4KICAgICA8RU5BQkxFX0lO
UFVUX1RZUEVfV0VFSyAvPgorICAgIDxFTkFCTEVfSU5UTD5FTkFCTEVfSU5UTDwvRU5BQkxFX0lO
VEw+CiAgICAgPEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz5FTkFCTEVfTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVM8L0VOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz4K
ICAgICA8RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIC8+CiAgICAgPEVOQUJMRV9MSU5LX1BS
RUZFVENIIC8+CkBAIC05Miw3ICs5Myw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4kKEVOQUJMRV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9M
TElORyk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7
JChFTkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFC
TEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFC
TEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxF
X0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01Q
T1NJVElORyk7JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVW
RUw0KTskKEVOQUJMRV9DU1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVO
QUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQo
RU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIp
OyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9E
QVRBX1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9N
NF9FVkVOVFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChF
TkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FU
SU9OKTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVf
SElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVD
SCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
X0lOQ09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVf
SU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVf
TElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7
JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxF
X05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RB
KTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BF
RUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFC
TEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVf
U0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19C
SU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7
JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVO
QUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1Nf
TUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxF
X1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChF
TkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz4kKEVOQUJMRV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
Ryk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChF
TkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVf
Q1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVf
Q1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NT
U19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJ
VElORyk7JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0
KTskKEVOQUJMRV9DU1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJM
RV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5B
QkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQo
RU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRB
X1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklD
RV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVf
RVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9O
KTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElH
SF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lO
Q09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5Q
VVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9U
WVBFX1dFRUspOyQoRU5BQkxFX0lOVEwpOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJ
WEVTKTskKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRD
SCk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVU
RVJfRUxFTUVOVCk7JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NB
TEUpOyQoRU5BQkxFX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQo
RU5BQkxFX1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVf
U0NSSVBURURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09S
S0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VS
Q0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChF
TkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RG
X0NPTlZFUlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJ
RVdfTU9ERV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tF
VFMpOyQoRU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRf
UkVHSU9OUyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGls
ZT4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjg0LDYgKzI4
NSwxMCBAQAogICAgICAgPFZhbHVlPiQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk8L1ZhbHVlPgog
ICAgICAgPEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KICAg
ICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0lOVEwiPgor
ICAgICAgPFZhbHVlPiQoRU5BQkxFX0lOVEwpPC9WYWx1ZT4KKyAgICAgIDxFbnZpcm9ubWVudFZh
cmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CisgICAgPC9CdWlsZE1hY3JvPgogICAg
IDxCdWlsZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyI+
CiAgICAgICA8VmFsdWU+JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpPC9WYWx1
ZT4KICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253950</attachid>
            <date>2015-05-29 20:32:49 -0700</date>
            <delta_ts>2015-06-01 07:04:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90906-20150529213231.patch</filename>
            <type>text/plain</type>
            <size>366366</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjRkY2IxNmJiODdhNTkyOTEzODY4NzdkNzNkMjc3NjE4OTAwYjE0Li4xZWMzYzZjY2FiMTUxMzgw
NjY1Y2IzYTg1MzFlNGNlODdlODczOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgSW50bE9iamVjdCBzb3VyY2UgYW5kIGFkZCB0byBwcm9qZWN0IGZpbGVzLiBBZGQg
bWlzc2luZyBpY3UgaGVhZGVycy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBhZGQgSW50
bE9iamVjdC5jcHAKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogYWRkIEVOQUJMRV9JTlRMCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOiBhZGQgSW50bCBuYW1lCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6
IG5ldworICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6IG5ldworICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOiBhZGQgSW50bCBvYmplY3QKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOiBpbml0IEludGwgb2JqZWN0CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwOiB1c2UgaWN1OjpOdW1iZXJGb3JtYXQKKwogMjAxNS0wNS0y
NyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T046IFRoZXNlIHNvcnRpbmcgaWRpb21zIHVzZWQgYnkgUGVhY2VrZWVwZXIgYW5kIEJyb3dzZXJt
YXJrIGFyZSB+MjBYIHNsb3dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyMWIxYmE1Y2ZlMjg0NGRmZDRkODliZjgyNDQwMjY5
YmIzYTZhMzFhLi5mMTg1M2RhYTIxMjYwNDc1OGFkYmY4ZmFjY2MxNWFkM2RlOTlhNWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE1LTA1LTIxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRp
b25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFnCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmlu
ZXMuaDogYWRkIGZsYWcKKwogMjAxNS0wNS0yNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3RyaW5nVmlldyBzaG91bGQgaGF2ZSBmaW5kKFN0cmluZ1ZpZXcs
IHN0YXJ0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOGI2YjkyMjkyNTE1NmEzZTFmOTEwYWIwYzE3MTdjZDY2
MzMyZWE5Li4wNzA3MzNkYmEyY2UzYjVmMzA1YWM2YmE2NzhjZjc5YTU1ZTE4M2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDUtMjEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRl
cm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEVOQUJMRV9JTlRMIGZsYWcgCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2VzIHlldCB0byBiZSB0ZXN0ZWQuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRkIGZsYWcKKwogMjAxNS0wNS0yNyAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBzaG9ydC1jaXJj
dWl0IE1JTUUgdHlwZSBsb29rdXAgd2hlbiBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGU1
MTM3NWU0MzExN2YwNTY1N2Y1M2Q4Y2M2OTY1N2IwYjIyZWEwNDkuLjA3MjA2ZTk5ZDkyYzZlY2Uz
ZWQxZjRhZDFlZWNmMWE4NDNjNGRhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5B
QkxFX0lOVEwgZmxhZworCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6IGFkZCBmbGFnCisKIDIwMTUtMDUtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjExMDQ1NTE+IFVwZGF0ZSBidWls
ZCBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg0MzA2ZDI0ZGQ0OTc0ZGQ1MTkzYTE0OGE4Y2Y1Yzhm
ZWNjMmI4YjcuLmJiM2ExODAyZjFkZWU1YzQ4YmJmNTllNzhkZTY1YzFhNjhkMTk5NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IElu
dGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgRU5BQkxFX0lOVEwgZmxhZworCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IGFkZCBmbGFnCisKIDIwMTUtMDUtMjcgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIGEg
Zm9sbG93LXVwIHJldmlldyBjb21tZW50IGZyb20gRGFyaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMjAzZjU0MGU4NGY1ODNlN2JmOWNlYTAyMTk1ODIzNjRmOWQ1Mjk3
NS4uNjk3YzVhMTMxYjI5ZTViYTcyNTRiM2ViYzJlZjFkNDE2OWQxY2JlYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDcwLDYgKzQ3MCwxMCBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWlu
LmNwcAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0l0ZXJh
dG9yT3BlcmF0aW9ucy5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisgICAg
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bE9iamVjdC5jcHAKICAg
ICBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcAogICAgIHJ1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU0FycmF5LmNwcApAQCAtNjE1LDYgKzYxOSw4IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
KyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9KU09OT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDQz
ZDcwMGVjYzY3N2M4YjYwOWE2YTYzZmIyYzNmN2Y0ZjgyY2IyODMuLmQ0NTM3ODg0NzExMGQyMTI2
YWM4YTUxOTNhYWFlMWU0M2M5YWJlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTEx
Niw2ICsxMTYsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEw
MDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsK
IAorRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKKwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5U
RVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsK
IApAQCAtMjIyLDQgKzIyNCw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5B
QkxFX0ZUTF9KSVQ7CiAKIEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMgPSBFTkFC
TEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05T
KSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChF
TkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5B
QkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBU
QVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lP
TlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAk
KEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVO
QUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChF
TkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBS
RUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJ
TUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9D
T05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMp
ICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVO
QUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01F
VEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUp
ICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdD
T05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJ
TikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJP
WElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9U
QSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVU
T0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9O
X01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9M
TF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkg
JChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
T1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19U
UkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQo
RU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVX
X01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVO
QUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJM
RV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRF
RF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwor
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
ICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQo
RU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJM
RV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChF
TkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQo
RU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJ
T04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkg
JChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RF
WFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RP
TV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9O
VF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJB
U0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0Up
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9Q
T1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFC
TEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5B
QkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVf
UkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFC
TEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BF
RUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5B
QkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFC
TEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykg
JChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChF
TkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9S
RUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRM
X0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMp
ICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZmJhOTEwNjRkYTM4MWM5MjJlODg0NmYxOWMxMjhj
MzA1ZmMwODhiMy4uNjIwZmY0NWYyNWZlNzYwMjMyZjZkNGE1MGM0YzJhZTViMWY0Njc5YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQxLDYgKzQxLDgg
QEAgYWxsIDogXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQu
aCBcCiAgICAgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQu
aCBcCiAgICAgSlNHbG9iYWxPYmplY3QubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oKaW5kZXggMzZjYzczNzA0YTU4Mjc5ZmZjYjcxOGNiOTQ5OGIzNzljZDJiOWE2
Zi4uMGM4ZWEwNGZlNTk4MGFkYmQzN2I4YTEzNThmYThkNTY2MTMwYTQwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03MjcsNiArNzI3LDcgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0
aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVj
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdG9yT3Bl
cmF0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQVBJ
VmFsdWVXcmFwcGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtMTUzMCw2ICsxNTMxLDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25TdGF0dXMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRpb25zLmgiIC8+CkBAIC0x
ODI3LDQgKzE4MjksNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMi
PgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxCdWlsZEN1c3RvbWl6YXRp
b25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggOTNmZTVlMjY5MDM3NTZiOTVhNzk4
ZmExNzU1YjNkMjM0YzIzYzA1Ni4uYWM0YTk3YzE2ZTFhMTNkMzFkNmM5NmI0ZmFiYTEzYmVkMjlj
MzY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwpAQCAtNjI3LDYgKzYyNyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEludGxPYmplY3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xleGljYWxF
bnZpcm9ubWVudC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC0yNjkxLDYgKzI2OTQsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJdGVyYXRvck9wZXJhdGlvbnMuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW50bE9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xleGlj
YWxFbnZpcm9ubWVudC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpAQCAtNDQ4NSw0ICs0NDkxLDQgQEAKICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0
ZXI+CiAgICAgPC9NQVNNPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGU0ODgzM2M1Yzk4MWYxMDQ3ZmYwN2RlNjY1Mjg0OTYyY2ExNTkwOTIuLjY4NjkyZTI4MjI4
NWQxNjlmZDhhYTBiYWE4ZmI4ZjYxNjc0N2YzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTY1LDExICsxMTY1LDE5IEBACiAJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAv
KiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovOyB9OwogCQk5
RUE1QzdBMTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0aC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAv
KiBCdW5kbGVQYXRoLm1tICovOyB9OwogCQk5RUE1QzdBMjE5MEYwODg3MDA1MDhFQkUgLyogSW5p
dGlhbGl6ZUxMVk1NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNw
cCAqLzsgfTsKKwkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRB
OEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi87IH07CisJCUExMkJCRkY0MUIwNDRBOTgwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAq
LzsgfTsKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0Iy
MTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJC
NDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4
cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNC
MDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBB
Uk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFFNDk2NUQxQjE2
QzFEMjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFNDk2NUIxQjE2QzFEMjAwQ0JDODJEIC8qIElu
dGxOdW1iZXJGb3JtYXQuY3BwICovOyB9OworCQlBMUU0OTY1RTFCMTZDMUQyMDBDQkM4MkQgLyog
SW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFFNDk2NUMxQjE2QzFEMjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuaCAq
LzsgfTsKKwkJQTFFNDk2NUYxQjE2QzFFRjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFFNDk2NUExQjE2QkFDNzAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
ICovOyB9OworCQlBMUU0OTY2MjFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUU0OTY2MDFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgKi87IH07CisJCUExRTQ5NjYzMUIxNkMyMUMwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUU0OTY2MTFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovOyB9OworCQlBMUU0OTY2NTFCMTZDMjQyMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRTQ5NjY0MUIxNkMyNDIwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuY3BwICovOyB9OwogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87
IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4
OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkEx
QjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDEx
MEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwpAQCAtMjkzOCw5ICsyOTQ2
LDE3IEBACiAJCTlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUGF0aC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRs
ZVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVuZGxlUGF0aC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyog
SW5pdGlhbGl6ZUxMVk1NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSW5pdGlhbGl6ZUxMVk1NYWMuY3BwOyBwYXRoID0gbGx2bS9Jbml0aWFsaXplTExWTU1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMkJCRkYxMUIwNDRBOEIwMDY2NEI2
OSAvKiBJbnRsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyQkJGRjMxQjA0NEE5ODAw
NjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50bE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY1QTFCMTZCQUM3MDBDQkM4MkQgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY1QjFCMTZDMUQy
MDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFFNDk2NUMxQjE2QzFEMjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY2MDFCMTZDMjFDMDBDQkM4MkQgLyogSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTFFNDk2NjExQjE2QzIxQzAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY2NDFC
MTZDMjQyMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE1MTg4RTBGQjAwMDExMEYx
NCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ0NzQsNiArNDQ5MCwxNCBAQAogCQkJCUZFNEQ1NUI3MUFFNzE2Q0EwMDUy
RTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCAqLywKIAkJCQk3MDExM0Q0OTFBOERCMDkzMDAzODQ4
QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk3MDExM0Q0QTFBOERCMDkzMDAz
ODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggKi8sCisJCQkJQTFFNDk2NUIxQjE2QzFEMjAw
Q0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuY3BwICovLAorCQkJCUExRTQ5NjVDMUIxNkMxRDIw
MENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8sCisJCQkJQTFFNDk2NjQxQjE2QzI0MjAw
Q0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFFNDk2
NUExQjE2QkFDNzAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAor
CQkJCUExRTQ5NjYwMUIxNkMyMUMwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcCAqLywKKwkJCQlBMUU0OTY2MTFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5oICovLAorCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2Jq
ZWN0LmNwcCAqLywKKwkJCQlBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5o
ICovLAogCQkJCTkzQURGQ0U2MENDQkQ3QUMwMEQzMEIwOCAvKiBKU0FycmF5LmNwcCAqLywKIAkJ
CQk5Mzg3NzJFNTAzOEJGRTE5MDA4NjM1Q0UgLyogSlNBcnJheS5oICovLAogCQkJCTBGMkI2NkI0
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyLmNwcCAqLywKQEAgLTU2NDYsNiArNTY3
MCw3IEBACiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTdCQTYxMDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZl
cmlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUU0OTY1RjFCMTZDMUVGMDBDQkM4MkQgLyog
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVGOUIx
NDFBMUQ0M0Y2MDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFk
ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVh
cElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0RjRCNkY0MUEwNUM5NDQwMDVDQUI3NiAv
KiBjcHBfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCkBAIC01NzUyLDYgKzU3NzcsNyBAQAog
CQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJGQzlCRDMxNjY0NERGQjAwODEwRDMzIC8qIENvcGllZEJsb2Nr
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8q
IEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTEx
MiAvKiBDb3BpZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDOEQwMkQxNEEzQzZFMDAw
NTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRTk4
NDExQTg4NjVCNzAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywK
QEAgLTYxMDEsNiArNjEyNyw3IEBACiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJ
VElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAv
KiBKSVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMTE1QUE4MTEyMDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRTQ5NjYzMUIx
NkMyMUMwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJp
YW50LmggaW4gSGVhZGVycyAqLywKQEAgLTY0MzksNiArNjQ2Niw3IEBACiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkFFNjRBQTEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMUU0OTY1RTFCMTZDMUQyMDBDQkM4MkQgLyogSW50bE51bWJlckZv
cm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIElu
ZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUz
RiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRC
QTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKQEAg
LTcxNjksNiArNzE5Nyw3IEBACiAJCQkJNzBFQzBFQzQxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmlu
Z0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQzBFQzIxQUEw
RDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY3MDI1QTkxNzE0QjBGQTAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMTJCQkZGNDFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZH
T1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFRDE3
MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTVCMTRFRjkwQUQwMEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTcxOTksNiArNzIyOCw3IEBACiAJCQkJMEZEOEEzMkIxN0Q1MUY1NzAwQ0EyQzQw
IC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2Mzk0NDAxNUM3NUYxRDAwNkE1OTdDIC8qIERGR1R5cGVDaGVj
a0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzYxNkMxREIwRjAw
ODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFF
NDk2NjUxQjE2QzI0MjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjM0QjE0OTE2RDQyMDEwMDAxQ0RBNUEgLyogREZHVXNlS2lu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTc2NjAxOTZCOEY5RTAwOTEwNTJB
IC8qIERGR0hlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjcsNiArNzM5Nyw3
IEBACiAJCQkJMTQ0MEZDRTQwQTUxRTQ2QjAwMDVGMDYxIC8qIEpTQ2xhc3NSZWYuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZFM0M2MTYxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRS
ZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFFNDk2NjIxQjE2QzIxQzAwQ0JDODJEIC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOTQ5ODIx
QTk3REI5NjAwRTI4OTY2IC8qIEpTQ2F0Y2hTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMkI2NkVCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCBp
biBTb3VyY2VzICovLApAQCAtNzU5Miw2ICs3NjIzLDcgQEAKIAkJCQkwRkEyQzE3QjE3RDdDRjg0
MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2
NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyQjY3MDcxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUExRTQ5NjVEMUIxNkMxRDIwMENCQzgyRCAvKiBJbnRsTnVt
YmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NzBBMTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkM5NTJCOTE5QTI4
QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL2J5dGVzdHJlYW0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9ieXRlc3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI5
ZTA3YTI1ZGNkOWI5NWQ5YTM3YTBiOGE3MmIzNWU2M2ExZmZiOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9ieXRlc3RyZWFtLmgKQEAgLTAsMCAr
MSwyNTIgQEAKKy8vIENvcHlyaWdodCAoQykgMjAwOS0yMDEwLCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCisvLyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorLy8KKy8vIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisvLyBBdXRob3I6IHNhbmpheUBnb29nbGUuY29tIChTYW5qYXkgR2hlbWF3YXQpCisvLwor
Ly8gQWJzdHJhY3QgaW50ZXJmYWNlIHRoYXQgY29uc3VtZXMgYSBzZXF1ZW5jZSBvZiBieXRlcyAo
Qnl0ZVNpbmspLgorLy8KKy8vIFVzZWQgc28gdGhhdCB3ZSBjYW4gd3JpdGUgYSBzaW5nbGUgcGll
Y2Ugb2YgY29kZSB0aGF0IGNhbiBvcGVyYXRlCisvLyBvbiBhIHZhcmlldHkgb2Ygb3V0cHV0IHN0
cmluZyB0eXBlcy4KKy8vCisvLyBWYXJpb3VzIGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGludGVy
ZmFjZSBhcmUgcHJvdmlkZWQ6CisvLyAgIEJ5dGVTaW5rOgorLy8gICAgICBDaGVja2VkQXJyYXlC
eXRlU2luayAgICBXcml0ZSB0byBhIGZsYXQgYXJyYXksIHdpdGggYm91bmRzIGNoZWNraW5nCisv
LyAgICAgIFN0cmluZ0J5dGVTaW5rICAgICAgICAgIFdyaXRlIHRvIGFuIFNUTCBzdHJpbmcKKwor
Ly8gVGhpcyBjb2RlIGlzIGEgY29udHJpYnV0aW9uIG9mIEdvb2dsZSBjb2RlLCBhbmQgdGhlIHN0
eWxlIHVzZWQgaGVyZSBpcworLy8gYSBjb21wcm9taXNlIGJldHdlZW4gdGhlIG9yaWdpbmFsIEdv
b2dsZSBjb2RlIGFuZCB0aGUgSUNVIGNvZGluZyBndWlkZWxpbmVzLgorLy8gRm9yIGV4YW1wbGUs
IGRhdGEgdHlwZXMgYXJlIElDVS1pZmllZCAoc2l6ZV90LGludC0+aW50MzJfdCksCisvLyBhbmQg
QVBJIGNvbW1lbnRzIGRveHlnZW4taWZpZWQsIGJ1dCBmdW5jdGlvbiBuYW1lcyBhbmQgYmVoYXZp
b3IgYXJlCisvLyBhcyBpbiB0aGUgb3JpZ2luYWwsIGlmIHBvc3NpYmxlLgorLy8gQXNzZXJ0aW9u
LXN0eWxlIGVycm9yIGhhbmRsaW5nLCBub3QgYXZhaWxhYmxlIGluIElDVSwgd2FzIGNoYW5nZWQg
dG8KKy8vIHBhcmFtZXRlciAicGlubmluZyIgc2ltaWxhciB0byBVbmljb2RlU3RyaW5nLgorLy8K
Ky8vIEluIGFkZGl0aW9uLCB0aGlzIGlzIG9ubHkgYSBwYXJ0aWFsIHBvcnQgb2YgdGhlIG9yaWdp
bmFsIEdvb2dsZSBjb2RlLAorLy8gbGltaXRlZCB0byB3aGF0IHdhcyBuZWVkZWQgc28gZmFyLiBU
aGUgKG5lYXJseSkgY29tcGxldGUgb3JpZ2luYWwgY29kZQorLy8gaXMgaW4gdGhlIElDVSBzdm4g
cmVwb3NpdG9yeSBhdCBpY3VodG1sL3RydW5rL2Rlc2lnbi9zdHJpbmdzL2NvbnRyaWIKKy8vIChz
ZWUgSUNVIHRpY2tldCA2NzY1LCByMjU1MTcpLgorCisjaWZuZGVmIF9fQllURVNUUkVBTV9IX18K
KyNkZWZpbmUgX19CWVRFU1RSRUFNX0hfXworCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQysr
IEFQSTogSW50ZXJmYWNlIGZvciB3cml0aW5nIGJ5dGVzLCBhbmQgaW1wbGVtZW50YXRpb24gY2xh
c3Nlcy4KKyAqLworCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmlj
b2RlL3VvYmplY3QuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0ZF9zdHJpbmcuaCIKKworVV9OQU1F
U1BBQ0VfQkVHSU4KKworLyoqCisgKiBBIEJ5dGVTaW5rIGNhbiBiZSBmaWxsZWQgd2l0aCBieXRl
cy4KKyAqIEBzdGFibGUgSUNVIDQuMgorICovCitjbGFzcyBVX0NPTU1PTl9BUEkgQnl0ZVNpbmsg
OiBwdWJsaWMgVU1lbW9yeSB7CitwdWJsaWM6CisgIC8qKgorICAgKiBEZWZhdWx0IGNvbnN0cnVj
dG9yLgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIEJ5dGVTaW5rKCkgeyB9CisgIC8q
KgorICAgKiBWaXJ0dWFsIGRlc3RydWN0b3IuCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8K
KyAgdmlydHVhbCB+Qnl0ZVNpbmsoKSB7IH0KKworICAvKioKKyAgICogQXBwZW5kICJieXRlc1sw
LG4tMV0iIHRvIHRoaXMuCisgICAqIEBwYXJhbSBieXRlcyB0aGUgcG9pbnRlciB0byB0aGUgYnl0
ZXMKKyAgICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBieXRlczsgbXVzdCBiZSBub24tbmVnYXRp
dmUKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2aXJ0dWFsIHZvaWQgQXBwZW5kKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQzMl90IG4pID0gMDsKKworICAvKioKKyAgICogUmV0dXJucyBh
IHdyaXRhYmxlIGJ1ZmZlciBmb3IgYXBwZW5kaW5nIGFuZCB3cml0ZXMgdGhlIGJ1ZmZlcidzIGNh
cGFjaXR5IHRvCisgICAqICpyZXN1bHRfY2FwYWNpdHkuIEd1YXJhbnRlZXMgKnJlc3VsdF9jYXBh
Y2l0eT49bWluX2NhcGFjaXR5LgorICAgKiBNYXkgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2Fs
bGVyLW93bmVkIHNjcmF0Y2ggYnVmZmVyIHdoaWNoIG11c3QgaGF2ZQorICAgKiBzY3JhdGNoX2Nh
cGFjaXR5Pj1taW5fY2FwYWNpdHkuCisgICAqIFRoZSByZXR1cm5lZCBidWZmZXIgaXMgb25seSB2
YWxpZCB1bnRpbCB0aGUgbmV4dCBvcGVyYXRpb24KKyAgICogb24gdGhpcyBCeXRlU2luay4KKyAg
ICoKKyAgICogQWZ0ZXIgd3JpdGluZyBhdCBtb3N0ICpyZXN1bHRfY2FwYWNpdHkgYnl0ZXMsIGNh
bGwgQXBwZW5kKCkgd2l0aCB0aGUKKyAgICogcG9pbnRlciByZXR1cm5lZCBmcm9tIHRoaXMgZnVu
Y3Rpb24gYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyAgICogTWFueSBBcHBlbmQo
KSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBhdm9pZCBjb3B5aW5nIGJ5dGVzIGlmIHRoaXMgZnVuY3Rp
b24KKyAgICogcmV0dXJuZWQgYW4gaW50ZXJuYWwgYnVmZmVyLgorICAgKgorICAgKiBQYXJ0aWFs
IHVzYWdlIGV4YW1wbGU6CisgICAqICBpbnQzMl90IGNhcGFjaXR5OworICAgKiAgY2hhciogYnVm
ZmVyID0gc2luay0+R2V0QXBwZW5kQnVmZmVyKC4uLiwgJmNhcGFjaXR5KTsKKyAgICogIC4uLiBX
cml0ZSBuIGJ5dGVzIGludG8gYnVmZmVyLCB3aXRoIG4gPD0gY2FwYWNpdHkuCisgICAqICBzaW5r
LT5BcHBlbmQoYnVmZmVyLCBuKTsKKyAgICogSW4gbWFueSBpbXBsZW1lbnRhdGlvbnMsIHRoYXQg
Y2FsbCB0byBBcHBlbmQgd2lsbCBhdm9pZCBjb3B5aW5nIGJ5dGVzLgorICAgKgorICAgKiBJZiB0
aGUgQnl0ZVNpbmsgYWxsb2NhdGVzIG9yIHJlYWxsb2NhdGVzIGFuIGludGVybmFsIGJ1ZmZlciwg
aXQgc2hvdWxkIHVzZQorICAgKiB0aGUgZGVzaXJlZF9jYXBhY2l0eV9oaW50IGlmIGFwcHJvcHJp
YXRlLgorICAgKiBJZiBhIGNhbGxlciBjYW5ub3QgcHJvdmlkZSBhIHJlYXNvbmFibGUgZ3Vlc3Mg
YXQgdGhlIGRlc2lyZWQgY2FwYWNpdHksCisgICAqIGl0IHNob3VsZCBwYXNzIGRlc2lyZWRfY2Fw
YWNpdHlfaGludD0wLgorICAgKgorICAgKiBJZiBhIG5vbi1zY3JhdGNoIGJ1ZmZlciBpcyByZXR1
cm5lZCwgdGhlIGNhbGxlciBtYXkgb25seSBwYXNzCisgICAqIGEgcHJlZml4IHRvIGl0IHRvIEFw
cGVuZCgpLgorICAgKiBUaGF0IGlzLCBpdCBpcyBub3QgY29ycmVjdCB0byBwYXNzIGFuIGludGVy
aW9yIHBvaW50ZXIgdG8gQXBwZW5kKCkuCisgICAqCisgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uIGFsd2F5cyByZXR1cm5zIHRoZSBzY3JhdGNoIGJ1ZmZlci4KKyAgICoKKyAgICogQHBh
cmFtIG1pbl9jYXBhY2l0eSByZXF1aXJlZCBtaW5pbXVtIGNhcGFjaXR5IG9mIHRoZSByZXR1cm5l
ZCBidWZmZXI7CisgICAqICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBub24tbmVnYXRpdmUK
KyAgICogQHBhcmFtIGRlc2lyZWRfY2FwYWNpdHlfaGludCBkZXNpcmVkIGNhcGFjaXR5IG9mIHRo
ZSByZXR1cm5lZCBidWZmZXI7CisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVz
dCBiZSBub24tbmVnYXRpdmUKKyAgICogQHBhcmFtIHNjcmF0Y2ggZGVmYXVsdCBjYWxsZXItb3du
ZWQgYnVmZmVyCisgICAqIEBwYXJhbSBzY3JhdGNoX2NhcGFjaXR5IGNhcGFjaXR5IG9mIHRoZSBz
Y3JhdGNoIGJ1ZmZlcgorICAgKiBAcGFyYW0gcmVzdWx0X2NhcGFjaXR5IHBvaW50ZXIgdG8gYW4g
aW50ZWdlciB3aGljaCB3aWxsIGJlIHNldCB0byB0aGUKKyAgICogICAgICAgICAgICAgICAgICAg
ICAgICBjYXBhY2l0eSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyCisgICAqIEByZXR1cm4gYSBidWZm
ZXIgd2l0aCAqcmVzdWx0X2NhcGFjaXR5Pj1taW5fY2FwYWNpdHkKKyAgICogQHN0YWJsZSBJQ1Ug
NC4yCisgICAqLworICB2aXJ0dWFsIGNoYXIqIEdldEFwcGVuZEJ1ZmZlcihpbnQzMl90IG1pbl9j
YXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkZXNpcmVk
X2NhcGFjaXR5X2hpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIHNj
cmF0Y2gsIGludDMyX3Qgc2NyYXRjaF9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCogcmVzdWx0X2NhcGFjaXR5KTsKKworICAvKioKKyAgICogRmx1c2gg
aW50ZXJuYWwgYnVmZmVycy4KKyAgICogU29tZSBieXRlIHNpbmtzIHVzZSBpbnRlcm5hbCBidWZm
ZXJzIG9yIHByb3ZpZGUgYnVmZmVyaW5nCisgICAqIGFuZCByZXF1aXJlIGNhbGxpbmcgRmx1c2go
KSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCisgICAqIFRoZSBCeXRlU2luayBzaG91bGQgYmUg
cmVhZHkgZm9yIGZ1cnRoZXIgQXBwZW5kKCkgY2FsbHMgYWZ0ZXIgRmx1c2goKS4KKyAgICogVGhl
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgRmx1c2goKSBkb2VzIG5vdGhpbmcuCisgICAqIEBz
dGFibGUgSUNVIDQuMgorICAgKi8KKyAgdmlydHVhbCB2b2lkIEZsdXNoKCk7CisKK3ByaXZhdGU6
CisgIEJ5dGVTaW5rKGNvbnN0IEJ5dGVTaW5rICYpOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG5vdCBp
bXBsZW1lbnRlZAorICBCeXRlU2luayAmb3BlcmF0b3I9KGNvbnN0IEJ5dGVTaW5rICYpOyAvLyBh
c3NpZ25tZW50IG9wZXJhdG9yIG5vdCBpbXBsZW1lbnRlZAorfTsKKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gU29t
ZSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbnMKKworLyoqIAorICogSW1wbGVtZW50YXRpb24gb2Yg
Qnl0ZVNpbmsgdGhhdCB3cml0ZXMgdG8gYSBmbGF0IGJ5dGUgYXJyYXksCisgKiB3aXRoIGJvdW5k
cy1jaGVja2luZzoKKyAqIFRoaXMgc2luayB3aWxsIG5vdCB3cml0ZSBtb3JlIHRoYW4gY2FwYWNp
dHkgYnl0ZXMgdG8gb3V0YnVmLgorICogSWYgbW9yZSB0aGFuIGNhcGFjaXR5IGJ5dGVzIGFyZSBB
cHBlbmQoKWVkLCB0aGVuIGV4Y2VzcyBieXRlcyBhcmUgaWdub3JlZCwKKyAqIGFuZCBPdmVyZmxv
d2VkKCkgd2lsbCByZXR1cm4gdHJ1ZS4KKyAqIE92ZXJmbG93IGRvZXMgbm90IGNhdXNlIGEgcnVu
dGltZSBlcnJvci4KKyAqIEBzdGFibGUgSUNVIDQuMgorICovCitjbGFzcyBVX0NPTU1PTl9BUEkg
Q2hlY2tlZEFycmF5Qnl0ZVNpbmsgOiBwdWJsaWMgQnl0ZVNpbmsgeworcHVibGljOgorICAvKioK
KyAgICogQ29uc3RydWN0cyBhIEJ5dGVTaW5rIHRoYXQgd2lsbCB3cml0ZSB0byBvdXRidWZbMC4u
Y2FwYWNpdHktMV0uCisgICAqIEBwYXJhbSBvdXRidWYgYnVmZmVyIHRvIHdyaXRlIHRvCisgICAq
IEBwYXJhbSBjYXBhY2l0eSBzaXplIG9mIHRoZSBidWZmZXIKKyAgICogQHN0YWJsZSBJQ1UgNC4y
CisgICAqLworICBDaGVja2VkQXJyYXlCeXRlU2luayhjaGFyKiBvdXRidWYsIGludDMyX3QgY2Fw
YWNpdHkpOworICAvKioKKyAgICogUmV0dXJucyB0aGUgc2luayB0byBpdHMgb3JpZ2luYWwgc3Rh
dGUsIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBidWZmZXIuCisgICAqIFVzZWZ1bCBmb3IgcmV1c2lu
ZyBib3RoIHRoZSBidWZmZXIgYW5kIHRoZSBzaW5rIGZvciBtdWx0aXBsZSBzdHJlYW1zLgorICAg
KiBSZXNldHMgdGhlIHN0YXRlIHRvIE51bWJlck9mQnl0ZXNXcml0dGVuKCk9TnVtYmVyT2ZCeXRl
c0FwcGVuZGVkKCk9MAorICAgKiBhbmQgT3ZlcmZsb3dlZCgpPUZBTFNFLgorICAgKiBAcmV0dXJu
ICp0aGlzCisgICAqIEBkcmFmdCBJQ1UgNC42CisgICAqLworICB2aXJ0dWFsIENoZWNrZWRBcnJh
eUJ5dGVTaW5rJiBSZXNldCgpOworICAvKioKKyAgICogQXBwZW5kICJieXRlc1swLG4tMV0iIHRv
IHRoaXMuCisgICAqIEBwYXJhbSBieXRlcyB0aGUgcG9pbnRlciB0byB0aGUgYnl0ZXMKKyAgICog
QHBhcmFtIG4gdGhlIG51bWJlciBvZiBieXRlczsgbXVzdCBiZSBub24tbmVnYXRpdmUKKyAgICog
QHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2aXJ0dWFsIHZvaWQgQXBwZW5kKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQzMl90IG4pOworICAvKioKKyAgICogUmV0dXJucyBhIHdyaXRhYmxlIGJ1ZmZl
ciBmb3IgYXBwZW5kaW5nIGFuZCB3cml0ZXMgdGhlIGJ1ZmZlcidzIGNhcGFjaXR5IHRvCisgICAq
ICpyZXN1bHRfY2FwYWNpdHkuIEZvciBkZXRhaWxzIHNlZSB0aGUgYmFzZSBjbGFzcyBkb2N1bWVu
dGF0aW9uLgorICAgKiBAcGFyYW0gbWluX2NhcGFjaXR5IHJlcXVpcmVkIG1pbmltdW0gY2FwYWNp
dHkgb2YgdGhlIHJldHVybmVkIGJ1ZmZlcjsKKyAgICogICAgICAgICAgICAgICAgICAgICBtdXN0
IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBAcGFyYW0gZGVzaXJlZF9jYXBhY2l0eV9oaW50IGRlc2ly
ZWQgY2FwYWNpdHkgb2YgdGhlIHJldHVybmVkIGJ1ZmZlcjsKKyAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtdXN0IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBAcGFyYW0gc2NyYXRjaCBk
ZWZhdWx0IGNhbGxlci1vd25lZCBidWZmZXIKKyAgICogQHBhcmFtIHNjcmF0Y2hfY2FwYWNpdHkg
Y2FwYWNpdHkgb2YgdGhlIHNjcmF0Y2ggYnVmZmVyCisgICAqIEBwYXJhbSByZXN1bHRfY2FwYWNp
dHkgcG9pbnRlciB0byBhbiBpbnRlZ2VyIHdoaWNoIHdpbGwgYmUgc2V0IHRvIHRoZQorICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgIGNhcGFjaXR5IG9mIHRoZSByZXR1cm5lZCBidWZmZXIKKyAg
ICogQHJldHVybiBhIGJ1ZmZlciB3aXRoICpyZXN1bHRfY2FwYWNpdHk+PW1pbl9jYXBhY2l0eQor
ICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIHZpcnR1YWwgY2hhciogR2V0QXBwZW5kQnVm
ZmVyKGludDMyX3QgbWluX2NhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IGRlc2lyZWRfY2FwYWNpdHlfaGludCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciogc2NyYXRjaCwgaW50MzJfdCBzY3JhdGNoX2NhcGFjaXR5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiByZXN1bHRfY2FwYWNpdHkpOworICAv
KioKKyAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gdG8g
dGhlIHNpbmsuCisgICAqIEByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGJ1
ZmZlcgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIGludDMyX3QgTnVtYmVyT2ZCeXRl
c1dyaXR0ZW4oKSBjb25zdCB7IHJldHVybiBzaXplXzsgfQorICAvKioKKyAgICogUmV0dXJucyB0
cnVlIGlmIGFueSBieXRlcyB3ZXJlIGRpc2NhcmRlZCwgaS5lLiwgaWYgdGhlcmUgd2FzIGFuCisg
ICAqIGF0dGVtcHQgdG8gd3JpdGUgbW9yZSB0aGFuICdjYXBhY2l0eScgYnl0ZXMuCisgICAqIEBy
ZXR1cm4gVFJVRSBpZiBtb3JlIHRoYW4gJ2NhcGFjaXR5JyBieXRlcyB3ZXJlIEFwcGVuZCgpZWQK
KyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBVQm9vbCBPdmVyZmxvd2VkKCkgY29uc3Qg
eyByZXR1cm4gb3ZlcmZsb3dlZF87IH0KKyAgLyoqCisgICAqIFJldHVybnMgdGhlIG51bWJlciBv
ZiBieXRlcyBhcHBlbmRlZCB0byB0aGUgc2luay4KKyAgICogSWYgT3ZlcmZsb3dlZCgpIHRoZW4g
TnVtYmVyT2ZCeXRlc0FwcGVuZGVkKCk+TnVtYmVyT2ZCeXRlc1dyaXR0ZW4oKQorICAgKiBlbHNl
IHRoZXkgcmV0dXJuIHRoZSBzYW1lIG51bWJlci4KKyAgICogQHJldHVybiBudW1iZXIgb2YgYnl0
ZXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyCisgICAqIEBkcmFmdCBJQ1UgNC42CisgICAqLworICBp
bnQzMl90IE51bWJlck9mQnl0ZXNBcHBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIGFwcGVuZGVkXzsg
fQorcHJpdmF0ZToKKyAgY2hhciogb3V0YnVmXzsKKyAgY29uc3QgaW50MzJfdCBjYXBhY2l0eV87
CisgIGludDMyX3Qgc2l6ZV87CisgIGludDMyX3QgYXBwZW5kZWRfOworICBVQm9vbCBvdmVyZmxv
d2VkXzsKKyAgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsoKTsgLy8vPCBkZWZhdWx0IGNvbnN0cnVjdG9y
IG5vdCBpbXBsZW1lbnRlZCAKKyAgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsoY29uc3QgQ2hlY2tlZEFy
cmF5Qnl0ZVNpbmsgJik7IC8vLzwgY29weSBjb25zdHJ1Y3RvciBub3QgaW1wbGVtZW50ZWQKKyAg
Q2hlY2tlZEFycmF5Qnl0ZVNpbmsgJm9wZXJhdG9yPShjb25zdCBDaGVja2VkQXJyYXlCeXRlU2lu
ayAmKTsgLy8vPCBhc3NpZ25tZW50IG9wZXJhdG9yIG5vdCBpbXBsZW1lbnRlZAorfTsKKworI2lm
IFVfSEFWRV9TVERfU1RSSU5HCisKKy8qKiAKKyAqIEltcGxlbWVudGF0aW9uIG9mIEJ5dGVTaW5r
IHRoYXQgd3JpdGVzIHRvIGEgInN0cmluZyIuCisgKiBUaGUgU3RyaW5nQ2xhc3MgaXMgdXN1YWxs
eSBpbnN0YW50aWF0ZWQgd2l0aCBhIHN0ZDo6c3RyaW5nLgorICogQHN0YWJsZSBJQ1UgNC4yCisg
Ki8KK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPgorY2xhc3MgU3RyaW5nQnl0ZVNpbmsg
OiBwdWJsaWMgQnl0ZVNpbmsgeworIHB1YmxpYzoKKyAgLyoqCisgICAqIENvbnN0cnVjdHMgYSBC
eXRlU2luayB0aGF0IHdpbGwgYXBwZW5kIGJ5dGVzIHRvIHRoZSBkZXN0IHN0cmluZy4KKyAgICog
QHBhcmFtIGRlc3QgcG9pbnRlciB0byBzdHJpbmcgb2JqZWN0IHRvIGFwcGVuZCB0bworICAgKiBA
c3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ0J5dGVTaW5rKFN0cmluZ0NsYXNzKiBkZXN0
KSA6IGRlc3RfKGRlc3QpIHsgfQorICAvKioKKyAgICogQXBwZW5kICJieXRlc1swLG4tMV0iIHRv
IHRoaXMuCisgICAqIEBwYXJhbSBkYXRhIHRoZSBwb2ludGVyIHRvIHRoZSBieXRlcworICAgKiBA
cGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzOyBtdXN0IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBA
c3RhYmxlIElDVSA0LjIKKyAgICovCisgIHZpcnR1YWwgdm9pZCBBcHBlbmQoY29uc3QgY2hhciog
ZGF0YSwgaW50MzJfdCBuKSB7IGRlc3RfLT5hcHBlbmQoZGF0YSwgbik7IH0KKyBwcml2YXRlOgor
ICBTdHJpbmdDbGFzcyogZGVzdF87CisgIFN0cmluZ0J5dGVTaW5rKCk7IC8vLzwgZGVmYXVsdCBj
b25zdHJ1Y3RvciBub3QgaW1wbGVtZW50ZWQgCisgIFN0cmluZ0J5dGVTaW5rKGNvbnN0IFN0cmlu
Z0J5dGVTaW5rICYpOyAvLy88IGNvcHkgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkCisgIFN0
cmluZ0J5dGVTaW5rICZvcGVyYXRvcj0oY29uc3QgU3RyaW5nQnl0ZVNpbmsgJik7IC8vLzwgYXNz
aWdubWVudCBvcGVyYXRvciBub3QgaW1wbGVtZW50ZWQKK307CisKKyNlbmRpZgorCitVX05BTUVT
UEFDRV9FTkQKKworI2VuZGlmICAvLyBfX0JZVEVTVFJFQU1fSF9fCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvcmVwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaWN1L3VuaWNvZGUvcmVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZhYjZmYTEyNzJlMGY2MGE0MTczOWM4
MzFiM2YwNmY5N2M2YTBlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pY3UvdW5pY29kZS9yZXAuaApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1h
Y2hpbmVzIENvcnBvcmF0aW9uIGFuZAorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9u
CisqICAgMTEvMTcvOTkgICAgYWxpdSAgICAgICAgQ3JlYXRpb24uICBQb3J0ZWQgZnJvbSBqYXZh
LiAgTW9kaWZpZWQgdG8KKyogICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjdXJyZW50
IFVuaWNvZGVTdHJpbmcgQVBJLiAgRm9yY2VkCisqICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG8gdXNlIG5hbWUgImhhbmRsZVJlcGxhY2VCZXR3ZWVuIiBiZWNhdXNlCisqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2YgZXhpc3RpbmcgbWV0aG9kcyBpbiBVbmljb2RlU3RyaW5nLgorKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyovCisKKyNpZm5kZWYgUkVQX0gKKyNkZWZpbmUgUkVQX0gKKworI2lu
Y2x1ZGUgInVuaWNvZGUvdW9iamVjdC5oIgorCisvKioKKyAqIFxmaWxlIAorICogXGJyaWVmIEMr
KyBBUEk6IFJlcGxhY2VhYmxlIFN0cmluZworICovCisgCitVX05BTUVTUEFDRV9CRUdJTgorCitj
bGFzcyBVbmljb2RlU3RyaW5nOworCisvKioKKyAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBp
cyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhCisgKiBzdHJpbmcgb2YgY2hh
cmFjdGVycyB0aGF0IHN1cHBvcnRzIHRoZSByZXBsYWNlbWVudCBvZiBhIHJhbmdlIG9mCisgKiBp
dHNlbGYgd2l0aCBhIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycy4gIEl0IGlzIHVzZWQgYnkgQVBJ
cyB0aGF0CisgKiBjaGFuZ2UgYSBwaWVjZSBvZiB0ZXh0IHdoaWxlIHJldGFpbmluZyBtZXRhZGF0
YS4gIE1ldGFkYXRhIGlzIGRhdGEKKyAqIG90aGVyIHRoYW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVy
cyByZXR1cm5lZCBieSBjaGFyMzJBdCgpLiAgT25lCisgKiBleGFtcGxlIG9mIG1ldGFkYXRhIGlz
IHN0eWxlIGF0dHJpYnV0ZXM7IGFub3RoZXIgaXMgYW4gZWRpdAorICogaGlzdG9yeSwgbWFya2lu
ZyBlYWNoIGNoYXJhY3RlciB3aXRoIGFuIGF1dGhvciBhbmQgcmV2aXNpb24gbnVtYmVyLgorICoK
KyAqIDxwPkFuIGltcGxpY2l0IGFzcGVjdCBvZiB0aGUgPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+
IEFQSSBpcyB0aGF0CisgKiBkdXJpbmcgYSByZXBsYWNlIG9wZXJhdGlvbiwgbmV3IGNoYXJhY3Rl
cnMgdGFrZSBvbiB0aGUgbWV0YWRhdGEgb2YKKyAqIHRoZSBvbGQgY2hhcmFjdGVycy4gIEZvciBl
eGFtcGxlLCBpZiB0aGUgc3RyaW5nICJ0aGUgPGI+Ym9sZDwvYj4KKyAqIGZvbnQiIGhhcyByYW5n
ZSAoNCwgOCkgcmVwbGFjZWQgd2l0aCAic3Ryb25nIiwgdGhlbiBpdCBiZWNvbWVzICJ0aGUKKyAq
IDxiPnN0cm9uZzwvYj4gZm9udCIuCisgKgorICogPHA+PGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+
IHNwZWNpZmllcyByYW5nZXMgdXNpbmcgYSBzdGFydAorICogb2Zmc2V0IGFuZCBhIGxpbWl0IG9m
ZnNldC4gIFRoZSByYW5nZSBvZiBjaGFyYWN0ZXJzIHRodXMgc3BlY2lmaWVkCisgKiBpbmNsdWRl
cyB0aGUgY2hhcmFjdGVycyBhdCBvZmZzZXQgc3RhcnQuLmxpbWl0LTEuICBUaGF0IGlzLCB0aGUK
KyAqIHN0YXJ0IG9mZnNldCBpcyBpbmNsdXNpdmUsIGFuZCB0aGUgbGltaXQgb2Zmc2V0IGlzIGV4
Y2x1c2l2ZS4KKyAqCisgKiA8cD48Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gYWxzbyBpbmNsdWRl
cyBBUEkgdG8gYWNjZXNzIGNoYXJhY3RlcnMKKyAqIGluIHRoZSBzdHJpbmc6IDxjb2RlPmxlbmd0
aCgpPC9jb2RlPiwgPGNvZGU+Y2hhckF0KCk8L2NvZGU+LAorICogPGNvZGU+Y2hhcjMyQXQoKTwv
Y29kZT4sIGFuZCA8Y29kZT5leHRyYWN0QmV0d2VlbigpPC9jb2RlPi4KKyAqCisgKiA8cD5Gb3Ig
YSBzdWJjbGFzcyB0byBzdXBwb3J0IG1ldGFkYXRhLCB0eXBpY2FsIGJlaGF2aW9yIG9mCisgKiA8
Y29kZT5yZXBsYWNlKCk8L2NvZGU+IGlzIHRoZSBmb2xsb3dpbmc6CisgKiA8dWw+CisgKiAgIDxs
aT5TZXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBuZXcgdGV4dCB0byB0aGUgbWV0YWRhdGEgb2YgdGhl
IGZpcnN0CisgKiAgIGNoYXJhY3RlciByZXBsYWNlZDwvbGk+CisgKiAgIDxsaT5JZiBubyBjaGFy
YWN0ZXJzIGFyZSByZXBsYWNlZCwgdXNlIHRoZSBtZXRhZGF0YSBvZiB0aGUKKyAqICAgcHJldmlv
dXMgY2hhcmFjdGVyPC9saT4KKyAqICAgPGxpPklmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGNoYXJh
Y3RlciAoaS5lLiBzdGFydCA9PSAwKSwgdXNlIHRoZQorICogICBmb2xsb3dpbmcgY2hhcmFjdGVy
PC9saT4KKyAqICAgPGxpPklmIHRoZXJlIGlzIG5vIGZvbGxvd2luZyBjaGFyYWN0ZXIgKGkuZS4g
dGhlIHJlcGxhY2VhYmxlIHdhcworICogICBlbXB0eSksIHVzZSBkZWZhdWx0IG1ldGFkYXRhLjxi
cj4KKyAqICAgPGxpPklmIHRoZSBjb2RlIHBvaW50IFUrRkZGRiBpcyBzZWVuLCBpdCBzaG91bGQg
YmUgaW50ZXJwcmV0ZWQgYXMKKyAqICAgYSBzcGVjaWFsIG1hcmtlciBoYXZpbmcgbm8gbWV0YWRh
dGE8bGk+CisgKiAgIDwvbGk+CisgKiA8L3VsPgorICogSWYgdGhpcyBpcyBub3QgdGhlIGJlaGF2
aW9yLCB0aGUgc3ViY2xhc3Mgc2hvdWxkIGRvY3VtZW50IGFueSBkaWZmZXJlbmNlcy4KKyAqIEBh
dXRob3IgQWxhbiBMaXUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitjbGFzcyBVX0NPTU1PTl9B
UEkgUmVwbGFjZWFibGUgOiBwdWJsaWMgVU9iamVjdCB7CisKK3B1YmxpYzoKKyAgICAvKioKKyAg
ICAgKiBEZXN0cnVjdG9yLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZp
cnR1YWwgflJlcGxhY2VhYmxlKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgMTYtYml0IGNvZGUgdW5pdHMgaW4gdGhlIHRleHQuCisgICAgICogQHJldHVybiBudW1i
ZXIgb2YgMTYtYml0IGNvZGUgdW5pdHMgaW4gdGV4dAorICAgICAqIEBzdGFibGUgSUNVIDEuOAor
ICAgICAqLyAKKyAgICBpbmxpbmUgaW50MzJfdCBsZW5ndGgoKSBjb25zdDsKKworICAgIC8qKgor
ICAgICAqIFJldHVybnMgdGhlIDE2LWJpdCBjb2RlIHVuaXQgYXQgdGhlIGdpdmVuIG9mZnNldCBp
bnRvIHRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gaW50ZWdlciBiZXR3ZWVuIDAg
YW5kIDxjb2RlPmxlbmd0aCgpPC9jb2RlPi0xCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJl
dHVybiAxNi1iaXQgY29kZSB1bml0IG9mIHRleHQgYXQgZ2l2ZW4gb2Zmc2V0CisgICAgICogQHN0
YWJsZSBJQ1UgMS44CisgICAgICovCisgICAgaW5saW5lIFVDaGFyIGNoYXJBdChpbnQzMl90IG9m
ZnNldCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSAzMi1iaXQgY29kZSBw
b2ludCBhdCB0aGUgZ2l2ZW4gMTYtYml0IG9mZnNldCBpbnRvCisgICAgICogdGhlIHRleHQuICBU
aGlzIGFzc3VtZXMgdGhlIHRleHQgaXMgc3RvcmVkIGFzIDE2LWJpdCBjb2RlIHVuaXRzCisgICAg
ICogd2l0aCBzdXJyb2dhdGUgcGFpcnMgaW50ZXJtaXhlZC4gIElmIHRoZSBvZmZzZXQgb2YgYSBs
ZWFkaW5nIG9yCisgICAgICogdHJhaWxpbmcgY29kZSB1bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIg
aXMgZ2l2ZW4sIHJldHVybiB0aGUKKyAgICAgKiBjb2RlIHBvaW50IG9mIHRoZSBzdXJyb2dhdGUg
cGFpci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gaW50ZWdlciBiZXR3ZWVuIDAg
YW5kIDxjb2RlPmxlbmd0aCgpPC9jb2RlPi0xCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJl
dHVybiAzMi1iaXQgY29kZSBwb2ludCBvZiB0ZXh0IGF0IGdpdmVuIG9mZnNldAorICAgICAqIEBz
dGFibGUgSUNVIDEuOAorICAgICAqLworICAgIGlubGluZSBVQ2hhcjMyIGNoYXIzMkF0KGludDMy
X3Qgb2Zmc2V0KSBjb25zdDsKKworICAgIC8qKgorICAgICAqIENvcGllcyBjaGFyYWN0ZXJzIGlu
IHRoZSByYW5nZSBbPHR0PnN0YXJ0PC90dD4sIDx0dD5saW1pdDwvdHQ+KSAKKyAgICAgKiBpbnRv
IHRoZSBVbmljb2RlU3RyaW5nIDx0dD50YXJnZXQ8L3R0Pi4KKyAgICAgKiBAcGFyYW0gc3RhcnQg
b2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgICAqIEBw
YXJhbSBsaW1pdCBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3Rl
ciB0bworICAgICAqIGJlIGNvcGllZAorICAgICAqIEBwYXJhbSB0YXJnZXQgVW5pY29kZVN0cmlu
ZyBpbnRvIHdoaWNoIHRvIGNvcHkgY2hhcmFjdGVycy4KKyAgICAgKiBAcmV0dXJuIEEgcmVmZXJl
bmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLwor
ICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0QmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiB0YXJnZXQpIGNvbnN0ID0gMDsKKworICAgIC8q
KgorICAgICAqIFJlcGxhY2VzIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhlIGdp
dmVuIHRleHQuICBJZiB0aGUKKyAgICAgKiBjaGFyYWN0ZXJzIGJlaW5nIHJlcGxhY2VkIGhhdmUg
bWV0YWRhdGEsIHRoZSBuZXcgY2hhcmFjdGVycworICAgICAqIHRoYXQgcmVwbGFjZSB0aGVtIHNo
b3VsZCBiZSBnaXZlbiB0aGUgc2FtZSBtZXRhZGF0YS4KKyAgICAgKgorICAgICAqIDxwPlN1YmNs
YXNzZXMgbXVzdCBlbnN1cmUgdGhhdCBpZiB0aGUgdGV4dCBiZXR3ZWVuIHN0YXJ0IGFuZAorICAg
ICAqIGxpbWl0IGlzIGVxdWFsIHRvIHRoZSByZXBsYWNlbWVudCB0ZXh0LCB0aGF0IHJlcGxhY2Ug
aGFzIG5vCisgICAgICogZWZmZWN0LiBUaGF0IGlzLCBhbnkgbWV0YWRhdGEKKyAgICAgKiBzaG91
bGQgYmUgdW5hZmZlY3RlZC4gSW4gYWRkaXRpb24sIHN1YmNsYXNzZXMgYXJlIGVuY291cmFnZWQg
dG8KKyAgICAgKiBjaGVjayBmb3IgaW5pdGlhbCBhbmQgdHJhaWxpbmcgaWRlbnRpY2FsIGNoYXJh
Y3RlcnMsIGFuZCBtYWtlIGEKKyAgICAgKiBzbWFsbGVyIHJlcGxhY2VtZW50IGlmIHBvc3NpYmxl
LiBUaGlzIHdpbGwgcHJlc2VydmUgYXMgbXVjaAorICAgICAqIG1ldGFkYXRhIGFzIHBvc3NpYmxl
LgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxj
b2RlPjAgPD0gc3RhcnQKKyAgICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxp
bWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAg
ICAgKiA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8g
cmVwbGFjZSBjaGFyYWN0ZXJzIDxjb2RlPnN0YXJ0PC9jb2RlPgorICAgICAqIHRvIDxjb2RlPmxp
bWl0IC0gMTwvY29kZT4gCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZVJlcGxhY2VCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpID0gMDsK
KyAgICAvLyBOb3RlOiBBbGwgb3RoZXIgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIHRha2UgdGhlIG5h
bWVzIG9mCisgICAgLy8gZXhpc3RpbmcgVW5pY29kZVN0cmluZyBtZXRob2RzLiAgVGhpcyBtZXRo
b2QgaXMgdGhlIGV4Y2VwdGlvbi4KKyAgICAvLyBJdCBpcyBuYW1lZCBkaWZmZXJlbnRseSBiZWNh
dXNlIGFsbCByZXBsYWNlIG1ldGhvZHMgb2YKKyAgICAvLyBVbmljb2RlU3RyaW5nIHJldHVybiBh
IFVuaWNvZGVTdHJpbmcmLiAgVGhlICdiZXR3ZWVuJyBpcworICAgIC8vIHJlcXVpcmVkIGluIG9y
ZGVyIHRvIGNvbmZvcm0gdG8gdGhlIFVuaWNvZGVTdHJpbmcgbmFtaW5nCisgICAgLy8gY29udmVu
dGlvbjsgQVBJIHRha2luZyBzdGFydC9sZW5ndGggYXJlIG5hbWVkIDxvcGVyYXRpb24+LCBhbmQK
KyAgICAvLyB0aG9zZSB0YWtpbmcgc3RhcnQvbGltaXQgYXJlIG5hbWVkIDxvcGVyYXRpb25CZXR3
ZWVuPi4gIFRoZQorICAgIC8vICdoYW5kbGUnIGlzIGFkZGVkIGJlY2F1c2UgJ3JlcGxhY2VCZXR3
ZWVuJyBhbmQKKyAgICAvLyAnZG9SZXBsYWNlQmV0d2VlbicgYXJlIGFscmVhZHkgdGFrZW4uCisK
KyAgICAvKioKKyAgICAgKiBDb3BpZXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBvYmplY3QsIHJldGFp
bmluZyBtZXRhZGF0YS4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBv
ciByZW9yZGVyIHN1YnN0cmluZ3MuCisgICAgICogVGhlIGRlc3RpbmF0aW9uIGluZGV4IG11c3Qg
bm90IG92ZXJsYXAgdGhlIHNvdXJjZSByYW5nZS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gc3Rh
cnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9Cisg
ICAgICogbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4
LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0IDw9CisgICAgICogbGVuZ3RoKCk8L2Nv
ZGU+LgorICAgICAqIEBwYXJhbSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBpbmRleC4gIFRoZSBjaGFy
YWN0ZXJzIGZyb20KKyAgICAgKiA8Y29kZT5zdGFydC4ubGltaXQtMTwvY29kZT4gd2lsbCBiZSBj
b3BpZWQgdG8gPGNvZGU+ZGVzdDwvY29kZT4uCisgICAgICogSW1wbGVtZW50YXRpb25zIG9mIHRo
aXMgbWV0aG9kIG1heSBhc3N1bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8CisgICAgICog
ZGVzdCA+PSBsaW1pdDwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisg
ICAgdmlydHVhbCB2b2lkIGNvcHkoaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCwgaW50MzJf
dCBkZXN0KSA9IDA7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBvYmpl
Y3QgY29udGFpbnMgbWV0YWRhdGEuICBJZiBhCisgICAgICogUmVwbGFjZWFibGUgb2JqZWN0IGhh
cyBtZXRhZGF0YSwgY2FsbHMgdG8gdGhlIFJlcGxhY2VhYmxlIEFQSQorICAgICAqIG11c3QgYmUg
bWFkZSBzbyBhcyB0byBwcmVzZXJ2ZSBtZXRhZGF0YS4gIElmIGl0IGRvZXMgbm90LCBjYWxscwor
ICAgICAqIHRvIHRoZSBSZXBsYWNlYWJsZSBBUEkgbWF5IGJlIG9wdGltaXplZCB0byBpbXByb3Zl
IHBlcmZvcm1hbmNlLgorICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMg
dHJ1ZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBvYmplY3QgY29udGFpbnMgbWV0YWRh
dGEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVCb29sIGhh
c01ldGFEYXRhKCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBDbG9uZSB0aGlzIG9iamVjdCwg
YW4gaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiBSZXBsYWNlYWJsZS4KKyAgICAgKiBDbG9uZXMg
Y2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGluIG11bHRpcGxlIHRocmVhZHMuCisgICAgICogSWYg
YSBzdWJjbGFzcyBkb2VzIG5vdCBpbXBsZW1lbnQgY2xvbmUoKSwgb3IgaWYgYW4gZXJyb3Igb2Nj
dXJzLAorICAgICAqIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4KKyAgICAgKiBUaGUgY2xvbmUgZnVu
Y3Rpb25zIGluIGFsbCBzdWJjbGFzc2VzIHJldHVybiBhIHBvaW50ZXIgdG8gYSBSZXBsYWNlYWJs
ZQorICAgICAqIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgZG8gbm90IHN1cHBvcnQgY292YXJpYW50
IChzYW1lLWFzLXRoaXMpCisgICAgICogcmV0dXJuIHR5cGVzOyBjYXN0IHRvIHRoZSBhcHByb3By
aWF0ZSBzdWJjbGFzcyBpZiBuZWNlc3NhcnkuCisgICAgICogVGhlIGNhbGxlciBtdXN0IGRlbGV0
ZSB0aGUgY2xvbmUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgY2xvbmUgb2YgdGhpcyBvYmpl
Y3QKKyAgICAgKgorICAgICAqIEBzZWUgZ2V0RHluYW1pY0NsYXNzSUQKKyAgICAgKiBAc3RhYmxl
IElDVSAyLjYKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFJlcGxhY2VhYmxlICpjbG9uZSgpIGNvbnN0
OworCitwcm90ZWN0ZWQ6CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIFJlcGxhY2VhYmxlKCk7CisKKyAg
ICAvKgorICAgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3Igbm90IGRlY2xhcmVkLiBUaGUgY29tcGls
ZXIgd2lsbCBwcm92aWRlIG9uZQorICAgICAqIHdoaWNoIGRvZXMgbm90aGluZyBzaW5jZSB0aGlz
IGNsYXNzIGRvZXMgbm90IGNvbnRhaW4gYW55IGRhdGEgbWVtYmVycy4KKyAgICAgKiBBUEkvY29k
ZSBjb3ZlcmFnZSBtYXkgc2hvdyB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBhcyBwcmVzZW50IGFu
ZAorICAgICAqIHVudGVzdGVkIC0gaWdub3JlLgorICAgICAqIFN1YmNsYXNzZXMgbmVlZCB0aGlz
IGFzc2lnbm1lbnQgb3BlcmF0b3IgaWYgdGhleSB1c2UgY29tcGlsZXItcHJvdmlkZWQKKyAgICAg
KiBhc3NpZ25tZW50IG9wZXJhdG9ycyBvZiB0aGVpciBvd24uIEFuIGFsdGVybmF0aXZlIHRvIG5v
dCBkZWNsYXJpbmcgb25lCisgICAgICogaGVyZSB3b3VsZCBiZSB0byBkZWNsYXJlIGFuZCBlbXB0
eS1pbXBsZW1lbnQgYSBwcm90ZWN0ZWQgb3IgcHVibGljIG9uZS4KKyAgICBSZXBsYWNlYWJsZSAm
UmVwbGFjZWFibGU6Om9wZXJhdG9yPShjb25zdCBSZXBsYWNlYWJsZSAmKTsKKyAgICAgKi8KKwor
ICAgIC8qKgorICAgICAqIFZpcnR1YWwgdmVyc2lvbiBvZiBsZW5ndGgoKS4KKyAgICAgKiBAc3Rh
YmxlIElDVSAyLjQKKyAgICAgKi8gCisgICAgdmlydHVhbCBpbnQzMl90IGdldExlbmd0aCgpIGNv
bnN0ID0gMDsKKworICAgIC8qKgorICAgICAqIFZpcnR1YWwgdmVyc2lvbiBvZiBjaGFyQXQoKS4K
KyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVDaGFyIGdldENo
YXJBdChpbnQzMl90IG9mZnNldCkgY29uc3QgPSAwOworCisgICAgLyoqCisgICAgICogVmlydHVh
bCB2ZXJzaW9uIG9mIGNoYXIzMkF0KCkuCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICov
CisgICAgdmlydHVhbCBVQ2hhcjMyIGdldENoYXIzMkF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCA9
IDA7Cit9OworCitpbmxpbmUgaW50MzJfdAorUmVwbGFjZWFibGU6Omxlbmd0aCgpIGNvbnN0IHsK
KyAgICByZXR1cm4gZ2V0TGVuZ3RoKCk7Cit9CisKK2lubGluZSBVQ2hhcgorUmVwbGFjZWFibGU6
OmNoYXJBdChpbnQzMl90IG9mZnNldCkgY29uc3QgeworICAgIHJldHVybiBnZXRDaGFyQXQob2Zm
c2V0KTsKK30KKworaW5saW5lIFVDaGFyMzIKK1JlcGxhY2VhYmxlOjpjaGFyMzJBdChpbnQzMl90
IG9mZnNldCkgY29uc3QgeworICAgIHJldHVybiBnZXRDaGFyMzJBdChvZmZzZXQpOworfQorCisv
LyBUaGVyZSBpcyBubyByZXAuY3BwLCBzZWUgdW5pc3RyLmNwcCBmb3IgUmVwbGFjZWFibGUgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb25zLgorCitVX05BTUVTUEFDRV9FTkQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RkX3N0cmluZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3N0ZF9zdHJpbmcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZDQzYjc0NWEwMGM1MzQ1YWU5ODExMjZmYjI5MjM2OGVlNzJiZTM1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3N0ZF9zdHJpbmcuaApAQCAt
MCwwICsxLDc4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqICAgZmlsZSBuYW1lOiAgc3RkX3N0cmluZy5oCisqICAgZW5jb2Rpbmc6
ICAgVVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlv
bjo0CisqCisqICAgY3JlYXRlZCBvbjogMjAwOWZlYjE5CisqICAgY3JlYXRlZCBieTogTWFya3Vz
IFcuIFNjaGVyZXIKKyovCisKKyNpZm5kZWYgX19TVERfU1RSSU5HX0hfXworI2RlZmluZSBfX1NU
RF9TVFJJTkdfSF9fCisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogQ2VudHJh
bCBJQ1UgaGVhZGVyIGZvciBpbmNsdWRpbmcgdGhlIEMrKyBzdGFuZGFyZCAmbHQ7c3RyaW5nJmd0
OworICogICAgICAgICAgICAgICAgIGhlYWRlciBhbmQgZm9yIHJlbGF0ZWQgZGVmaW5pdGlvbnMu
CisgKi8KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisKKy8qKgorICogXGRlZiBVX0hB
VkVfU1REX1NUUklORworICogRGVmaW5lIHdoZXRoZXIgdGhlIHN0YW5kYXJkIEMrKyAoU1RMKSAm
bHQ7c3RyaW5nJmd0OyBoZWFkZXIgaXMgYXZhaWxhYmxlLgorICogQGludGVybmFsCisgKi8KKyNp
Zm5kZWYgVV9IQVZFX1NURF9TVFJJTkcKKyNkZWZpbmUgVV9IQVZFX1NURF9TVFJJTkcgMQorI2Vu
ZGlmCisKKyNpZiBVX0hBVkVfU1REX1NUUklORworCisjaW5jbHVkZSA8c3RyaW5nPgorCisvKioK
KyAqIFxkZWYgVV9TVERfTlMKKyAqIERlZmluZSB0aGUgbmFtZXNwYWNlIHRvIHVzZSBmb3Igc3Rh
bmRhcmQgQysrIChTVEwpIGNsYXNzZXMuCisgKiBFaXRoZXIgc3RkIG9yIGVtcHR5LgorICogQGRy
YWZ0IElDVSA0LjIKKyAqLworCisvKioKKyAqIFxkZWYgVV9TVERfTlNRCisgKiBEZWZpbmUgdGhl
IG5hbWVzcGFjZSBxdWFsaWZpZXIgdG8gdXNlIGZvciBzdGFuZGFyZCBDKysgKFNUTCkgY2xhc3Nl
cy4KKyAqIEVpdGhlciBzdGQ6OiBvciBlbXB0eS4KKyAqIEZvciBleGFtcGxlLAorICogICBVX1NU
RF9OU1Egc3RyaW5nIFN0cmluZ0Zyb21Vbmljb2RlU3RyaW5nKGNvbnN0IFVuaWNvZGVTdHJpbmcg
JnVuaXN0cik7CisgKiBAZHJhZnQgSUNVIDQuMgorICovCisKKy8qKgorICogXGRlZiBVX1NURF9O
U19VU0UKKyAqIFRoaXMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHJlc3Qgb2YgdGhlIGNv
ZGUgdXNlcyB0aGUKKyAqIHN0YW5kYXJkIChTVEwpIG5hbWVzcGFjZS4KKyAqIEVpdGhlciAidXNp
bmcgbmFtZXNwYWNlIHN0ZDsiIG9yIGVtcHR5LgorICogQGRyYWZ0IElDVSA0LjIKKyAqLworI2lm
bmRlZiBVX1NURF9OU1EKKyMgICBpZiBVX0hBVkVfTkFNRVNQQUNFCisjICAgICAgIGRlZmluZSBV
X1NURF9OUyBzdGQKKyMgICAgICAgZGVmaW5lIFVfU1REX05TUSBVX1NURF9OUzo6CisjICAgICAg
IGRlZmluZSBVX1NURF9OU19VU0UgdXNpbmcgbmFtZXNwYWNlIFVfU1REX05TOworIyAgIGVsc2UK
KyMgICAgICAgZGVmaW5lIFVfU1REX05TCisjICAgICAgIGRlZmluZSBVX1NURF9OU1EKKyMgICAg
ICAgZGVmaW5lIFVfU1REX05TX1VTRQorIyAgIGVuZGlmCisjZW5kaWYKKworI2VuZGlmICAvLyBV
X0hBVkVfU1REX1NUUklORworCisjZW5kaWYgIC8vIF9fU1REX1NUUklOR19IX18KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9zdHJlbnVtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RyZW51bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNDIxOTVh
NGYyY2IyMmMyZDM0NGNiOWY3YmRmODY3YTU3MDQzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RyZW51bS5oCkBAIC0wLDAgKzEsMjcxIEBA
CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMjAwMi0y
MDA3LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5k
IG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisqLworCisjaWZuZGVmIFNUUkVOVU1fSAorI2RlZmluZSBTVFJFTlVNX0gKKworI2luY2x1ZGUg
InVuaWNvZGUvdW9iamVjdC5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW5pc3RyLmgiCisKKy8qKgor
ICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogU3RyaW5nIEVudW1lcmF0aW9uCisgKi8KKyAK
K1VfTkFNRVNQQUNFX0JFR0lOCisKKy8qKgorICogQmFzZSBjbGFzcyBmb3IgJ3B1cmUnIEMrKyBp
bXBsZW1lbnRhdGlvbnMgb2YgdWVudW0gYXBpLiAgQWRkcyBhCisgKiBtZXRob2QgdGhhdCByZXR1
cm5zIHRoZSBuZXh0IFVuaWNvZGVTdHJpbmcgc2luY2UgaW4gQysrIHRoaXMgY2FuCisgKiBiZSBh
IGNvbW1vbiBzdG9yYWdlIGZvcm1hdCBmb3Igc3RyaW5ncy4KKyAqCisgKiA8cD5UaGUgbW9kZWwg
aXMgdGhhdCB0aGUgZW51bWVyYXRpb24gaXMgb3ZlciBzdHJpbmdzIG1haW50YWluZWQgYnkKKyAq
IGEgJ3NlcnZpY2UuJyAgQXQgYW55IHBvaW50LCB0aGUgc2VydmljZSBtaWdodCBjaGFuZ2UsIGlu
dmFsaWRhdGluZworICogdGhlIGVudW1lcmF0b3IgKHRob3VnaCB0aGlzIGlzIGV4cGVjdGVkIHRv
IGJlIHJhcmUpLiAgVGhlIGl0ZXJhdG9yCisgKiByZXR1cm5zIGFuIGVycm9yIGlmIHRoaXMgaGFz
IG9jY3VycmVkLiAgTGFjayBvZiB0aGUgZXJyb3IgaXMgbm8KKyAqIGd1YXJhbnRlZSB0aGF0IHRo
ZSBzZXJ2aWNlIGRpZG4ndCBjaGFuZ2UgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlCisgKiBjYWxsLCBz
byB0aGUgcmV0dXJuZWQgc3RyaW5nIHN0aWxsIG1pZ2h0IG5vdCBiZSAndmFsaWQnIG9uCisgKiBz
dWJzZXF1ZW50IHVzZS48L3A+CisgKgorICogPHA+U3RyaW5ncyBtYXkgdGFrZSB0aGUgZm9ybSBv
ZiBjb25zdCBjaGFyKiwgY29uc3QgVUNoYXIqLCBvciBjb25zdAorICogVW5pY29kZVN0cmluZyou
ICBUaGUgdHlwZSB5b3UgZ2V0IGlzIGRldGVybWluZSBieSB0aGUgdmFyaWFudCBvZgorICogJ25l
eHQnIHRoYXQgeW91IGNhbGwuICBJbiBnZW5lcmFsIHRoZSBTdHJpbmdFbnVtZXJhdGlvbiBpcwor
ICogb3B0aW1pemVkIGZvciBvbmUgb2YgdGhlc2UgdHlwZXMsIGJ1dCBhbGwgU3RyaW5nRW51bWVy
YXRpb25zIGNhbgorICogcmV0dXJuIGFsbCB0eXBlcy4gIFJldHVybmVkIHN0cmluZ3MgYXJlIGVh
Y2ggdGVybWluYXRlZCB3aXRoIGEgTlVMLgorICogRGVwZW5kaW5nIG9uIHRoZSBzZXJ2aWNlIGRh
dGEsIHRoZXkgbWlnaHQgYWxzbyBpbmNsdWRlIGVtYmVkZGVkIE5VTAorICogY2hhcmFjdGVycywg
c28gQVBJIGlzIHByb3ZpZGVkIHRvIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSB0cnVlCisgKiBsZW5n
dGgsIGNvdW50aW5nIHRoZSBlbWJlZGRlZCBOVUxzIGJ1dCBub3QgY291bnRpbmcgdGhlIHRlcm1p
bmF0aW5nCisgKiBOVUwuPC9wPgorICoKKyAqIDxwPlRoZSBwb2ludGVycyByZXR1cm5lZCBieSBu
ZXh0LCB1bmV4dCwgYW5kIHNuZXh0IGJlY29tZSBpbnZhbGlkCisgKiB1cG9uIGFueSBzdWJzZXF1
ZW50IGNhbGwgdG8gdGhlIGVudW1lcmF0aW9uJ3MgZGVzdHJ1Y3RvciwgbmV4dCwKKyAqIHVuZXh0
LCBzbmV4dCwgb3IgcmVzZXQuPC9wPgorICoKKyAqIElDVSAyLjggYWRkcyBzb21lIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zIGFuZCBoZWxwZXIgZnVuY3Rpb25zCisgKiBmb3Igc3ViY2xhc3Nlcy4K
KyAqCisgKiBAc3RhYmxlIElDVSAyLjQgCisgKi8KK2NsYXNzIFVfQ09NTU9OX0FQSSBTdHJpbmdF
bnVtZXJhdGlvbiA6IHB1YmxpYyBVT2JqZWN0IHsgCitwdWJsaWM6CisgICAgLyoqCisgICAgICog
RGVzdHJ1Y3Rvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICB2aXJ0dWFs
IH5TdHJpbmdFbnVtZXJhdGlvbigpOworCisgICAgLyoqCisgICAgICogQ2xvbmUgdGhpcyBvYmpl
Y3QsIGFuIGluc3RhbmNlIG9mIGEgc3ViY2xhc3Mgb2YgU3RyaW5nRW51bWVyYXRpb24uCisgICAg
ICogQ2xvbmVzIGNhbiBiZSB1c2VkIGNvbmN1cnJlbnRseSBpbiBtdWx0aXBsZSB0aHJlYWRzLgor
ICAgICAqIElmIGEgc3ViY2xhc3MgZG9lcyBub3QgaW1wbGVtZW50IGNsb25lKCksIG9yIGlmIGFu
IGVycm9yIG9jY3VycywKKyAgICAgKiB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuCisgICAgICogVGhl
IGNsb25lIGZ1bmN0aW9ucyBpbiBhbGwgc3ViY2xhc3NlcyByZXR1cm4gYSBiYXNlIGNsYXNzIHBv
aW50ZXIKKyAgICAgKiBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIGRvIG5vdCBzdXBwb3J0IGNvdmFy
aWFudCAoc2FtZS1hcy10aGlzKQorICAgICAqIHJldHVybiB0eXBlczsgY2FzdCB0byB0aGUgYXBw
cm9wcmlhdGUgc3ViY2xhc3MgaWYgbmVjZXNzYXJ5LgorICAgICAqIFRoZSBjYWxsZXIgbXVzdCBk
ZWxldGUgdGhlIGNsb25lLgorICAgICAqCisgICAgICogQHJldHVybiBhIGNsb25lIG9mIHRoaXMg
b2JqZWN0CisgICAgICoKKyAgICAgKiBAc2VlIGdldER5bmFtaWNDbGFzc0lECisgICAgICogQHN0
YWJsZSBJQ1UgMi44CisgICAgICovCisgICAgdmlydHVhbCBTdHJpbmdFbnVtZXJhdGlvbiAqY2xv
bmUoKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIDxwPlJldHVybiB0aGUgbnVtYmVyIG9mIGVs
ZW1lbnRzIHRoYXQgdGhlIGl0ZXJhdG9yIHRyYXZlcnNlcy4gIElmCisgICAgICogdGhlIGl0ZXJh
dG9yIGlzIG91dCBvZiBzeW5jIHdpdGggaXRzIHNlcnZpY2UsIHN0YXR1cyBpcyBzZXQgdG8KKyAg
ICAgKiBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHpl
cm8uPC9wPgorICAgICAqCisgICAgICogPHA+VGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBjaGFu
Z2UgZXhjZXB0IHBvc3NpYmx5IGFzIGEgcmVzdWx0IG9mCisgICAgICogYSBzdWJzZXF1ZW50IGNh
bGwgdG8gcmVzZXQsIG9yIGlmIHRoZSBpdGVyYXRvciBiZWNvbWVzIG91dCBvZiBzeW5jLjwvcD4K
KyAgICAgKgorICAgICAqIDxwPlRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbi4gSXQgY2Fu
IGVuZCB1cCBiZWluZyB2ZXJ5CisgICAgICogZXhwZW5zaXZlIGFzIGFsbCB0aGUgaXRlbXMgbWln
aHQgaGF2ZSB0byBiZSBwcmUtZmV0Y2hlZAorICAgICAqIChkZXBlbmRpbmcgb24gdGhlIHN0b3Jh
Z2UgZm9ybWF0IG9mIHRoZSBkYXRhIGJlaW5nCisgICAgICogdHJhdmVyc2VkKS48L3A+CisgICAg
ICoKKyAgICAgKiBAcGFyYW0gc3RhdHVzIHRoZSBlcnJvciBjb2RlLgorICAgICAqIEByZXR1cm4g
bnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBpdGVyYXRvci4KKyAgICAgKgorICAgICAqIEBzdGFi
bGUgSUNVIDIuNCAqLworICAgIHZpcnR1YWwgaW50MzJfdCBjb3VudChVRXJyb3JDb2RlJiBzdGF0
dXMpIGNvbnN0ID0gMDsKKworICAgIC8qKgorICAgICAqIDxwPlJldHVybnMgdGhlIG5leHQgZWxl
bWVudCBhcyBhIE5VTC10ZXJtaW5hdGVkIGNoYXIqLiAgSWYgdGhlcmUKKyAgICAgKiBhcmUgbm8g
bW9yZSBlbGVtZW50cywgcmV0dXJucyBOVUxMLiAgSWYgdGhlIHJlc3VsdExlbmd0aCBwb2ludGVy
CisgICAgICogaXMgbm90IE5VTEwsIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAobm90IGNvdW50
aW5nIHRoZQorICAgICAqIHRlcm1pbmF0aW5nIE5VTCkgaXMgcmV0dXJuZWQgYXQgdGhhdCBhZGRy
ZXNzLiAgSWYgYW4gZXJyb3IKKyAgICAgKiBzdGF0dXMgaXMgcmV0dXJuZWQsIHRoZSB2YWx1ZSBh
dCByZXN1bHRMZW5ndGggaXMgdW5kZWZpbmVkLjwvcD4KKyAgICAgKgorICAgICAqIDxwPlRoZSBy
ZXR1cm5lZCBwb2ludGVyIGlzIG93bmVkIGJ5IHRoaXMgaXRlcmF0b3IgYW5kIG11c3Qgbm90IGJl
CisgICAgICogZGVsZXRlZCBieSB0aGUgY2FsbGVyLiAgVGhlIHBvaW50ZXIgaXMgdmFsaWQgdW50
aWwgdGhlIG5leHQgY2FsbAorICAgICAqIHRvIG5leHQsIHVuZXh0LCBzbmV4dCwgcmVzZXQsIG9y
IHRoZSBlbnVtZXJhdG9yJ3MgZGVzdHJ1Y3Rvci48L3A+CisgICAgICoKKyAgICAgKiA8cD5JZiB0
aGUgaXRlcmF0b3IgaXMgb3V0IG9mIHN5bmMgd2l0aCBpdHMgc2VydmljZSwgc3RhdHVzIGlzIHNl
dAorICAgICAqIHRvIFVfRU5VTV9PVVRfT0ZfU1lOQ19FUlJPUiBhbmQgTlVMTCBpcyByZXR1cm5l
ZC48L3A+CisgICAgICoKKyAgICAgKiA8cD5JZiB0aGUgbmF0aXZlIHNlcnZpY2Ugc3RyaW5nIGlz
IGEgVUNoYXIqIHN0cmluZywgaXQgaXMKKyAgICAgKiBjb252ZXJ0ZWQgdG8gY2hhciogd2l0aCB0
aGUgaW52YXJpYW50IGNvbnZlcnRlci4gIElmIHRoZQorICAgICAqIGNvbnZlcnNpb24gZmFpbHMg
KGJlY2F1c2UgYSBjaGFyYWN0ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCkgdGhlbgorICAgICAqIHN0
YXR1cyBpcyBzZXQgdG8gVV9JTlZBUklBTlRfQ09OVkVSU0lPTl9FUlJPUiBhbmQgdGhlIHJldHVy
bgorICAgICAqIHZhbHVlIGlzIHVuZGVmaW5lZCAodGhvdWdoIG5vdCBOVUxMKS48L3A+CisgICAg
ICoKKyAgICAgKiBTdGFydGluZyB3aXRoIElDVSAyLjgsIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0
aW9uIGNhbGxzIHNuZXh0KCkKKyAgICAgKiBhbmQgaGFuZGxlcyB0aGUgY29udmVyc2lvbi4KKyAg
ICAgKgorICAgICAqIEBwYXJhbSBzdGF0dXMgdGhlIGVycm9yIGNvZGUuCisgICAgICogQHBhcmFt
IHJlc3VsdExlbmd0aCBhIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgbGVuZ3RoLCBjYW4gYmUgTlVM
TC4KKyAgICAgKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLCBvciBOVUxMLgorICAg
ICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi40IAorICAgICAqLworICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogbmV4dChpbnQzMl90ICpyZXN1bHRMZW5ndGgsIFVFcnJvckNvZGUmIHN0YXR1cyk7CisK
KyAgICAvKioKKyAgICAgKiA8cD5SZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgYXMgYSBOVUwtdGVy
bWluYXRlZCBVQ2hhciouICBJZiB0aGVyZQorICAgICAqIGFyZSBubyBtb3JlIGVsZW1lbnRzLCBy
ZXR1cm5zIE5VTEwuICBJZiB0aGUgcmVzdWx0TGVuZ3RoIHBvaW50ZXIKKyAgICAgKiBpcyBub3Qg
TlVMTCwgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIChub3QgY291bnRpbmcgdGhlCisgICAgICog
dGVybWluYXRpbmcgTlVMKSBpcyByZXR1cm5lZCBhdCB0aGF0IGFkZHJlc3MuICBJZiBhbiBlcnJv
cgorICAgICAqIHN0YXR1cyBpcyByZXR1cm5lZCwgdGhlIHZhbHVlIGF0IHJlc3VsdExlbmd0aCBp
cyB1bmRlZmluZWQuPC9wPgorICAgICAqCisgICAgICogPHA+VGhlIHJldHVybmVkIHBvaW50ZXIg
aXMgb3duZWQgYnkgdGhpcyBpdGVyYXRvciBhbmQgbXVzdCBub3QgYmUKKyAgICAgKiBkZWxldGVk
IGJ5IHRoZSBjYWxsZXIuICBUaGUgcG9pbnRlciBpcyB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxs
CisgICAgICogdG8gbmV4dCwgdW5leHQsIHNuZXh0LCByZXNldCwgb3IgdGhlIGVudW1lcmF0b3In
cyBkZXN0cnVjdG9yLjwvcD4KKyAgICAgKgorICAgICAqIDxwPklmIHRoZSBpdGVyYXRvciBpcyBv
dXQgb2Ygc3luYyB3aXRoIGl0cyBzZXJ2aWNlLCBzdGF0dXMgaXMgc2V0CisgICAgICogdG8gVV9F
TlVNX09VVF9PRl9TWU5DX0VSUk9SIGFuZCBOVUxMIGlzIHJldHVybmVkLjwvcD4KKyAgICAgKgor
ICAgICAqIFN0YXJ0aW5nIHdpdGggSUNVIDIuOCwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24g
Y2FsbHMgc25leHQoKQorICAgICAqIGFuZCBoYW5kbGVzIHRoZSBjb252ZXJzaW9uLgorICAgICAq
CisgICAgICogQHBhcmFtIHN0YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKiBAcGFyYW0gcmVz
dWx0TGVuZ3RoIGEgcG9udGVyIHRvIHJlY2VpdmUgdGhlIGxlbmd0aCwgY2FuIGJlIE5VTEwuCisg
ICAgICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZywgb3IgTlVMTC4KKyAgICAgKgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNCAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIGNvbnN0IFVDaGFy
KiB1bmV4dChpbnQzMl90ICpyZXN1bHRMZW5ndGgsIFVFcnJvckNvZGUmIHN0YXR1cyk7CisKKyAg
ICAvKioKKyAgICAgKiA8cD5SZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgYSBVbmljb2RlU3RyaW5n
Ki4gIElmIHRoZXJlIGFyZSBubworICAgICAqIG1vcmUgZWxlbWVudHMsIHJldHVybnMgTlVMTC48
L3A+CisgICAgICoKKyAgICAgKiA8cD5UaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBvd25lZCBieSB0
aGlzIGl0ZXJhdG9yIGFuZCBtdXN0IG5vdCBiZQorICAgICAqIGRlbGV0ZWQgYnkgdGhlIGNhbGxl
ci4gIFRoZSBwb2ludGVyIGlzIHZhbGlkIHVudGlsIHRoZSBuZXh0IGNhbGwKKyAgICAgKiB0byBu
ZXh0LCB1bmV4dCwgc25leHQsIHJlc2V0LCBvciB0aGUgZW51bWVyYXRvcidzIGRlc3RydWN0b3Iu
PC9wPgorICAgICAqCisgICAgICogPHA+SWYgdGhlIGl0ZXJhdG9yIGlzIG91dCBvZiBzeW5jIHdp
dGggaXRzIHNlcnZpY2UsIHN0YXR1cyBpcyBzZXQKKyAgICAgKiB0byBVX0VOVU1fT1VUX09GX1NZ
TkNfRVJST1IgYW5kIE5VTEwgaXMgcmV0dXJuZWQuPC9wPgorICAgICAqCisgICAgICogQHBhcmFt
IHN0YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUg
c3RyaW5nLCBvciBOVUxMLgorICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi40IAorICAgICAq
LworICAgIHZpcnR1YWwgY29uc3QgVW5pY29kZVN0cmluZyogc25leHQoVUVycm9yQ29kZSYgc3Rh
dHVzKSA9IDA7CisKKyAgICAvKioKKyAgICAgKiA8cD5SZXNldHMgdGhlIGl0ZXJhdG9yLiAgVGhp
cyByZS1lc3RhYmxpc2hlcyBzeW5jIHdpdGggdGhlCisgICAgICogc2VydmljZSBhbmQgcmV3aW5k
cyB0aGUgaXRlcmF0b3IgdG8gc3RhcnQgYXQgdGhlIGZpcnN0CisgICAgICogZWxlbWVudC48L3A+
CisgICAgICoKKyAgICAgKiA8cD5QcmV2aW91cyBwb2ludGVycyByZXR1cm5lZCBieSBuZXh0LCB1
bmV4dCwgb3Igc25leHQgYmVjb21lCisgICAgICogaW52YWxpZCwgYW5kIHRoZSB2YWx1ZSByZXR1
cm5lZCBieSBjb3VudCBtaWdodCBjaGFuZ2UuPC9wPgorICAgICAqCisgICAgICogQHBhcmFtIHN0
YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDIuNCAKKyAg
ICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoVUVycm9yQ29kZSYgc3RhdHVzKSA9IDA7CisK
KyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0aGlzIGVudW1lcmF0aW9uIHRvIG90aGVyIHRvIGNo
ZWNrIGlmIGJvdGggYXJlIGVxdWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3Ro
ZXIgc3RyaW5nIGVudW1lcmF0aW9uIHRvIGNvbXBhcmUgdGhpcyBvYmplY3QgdG8KKyAgICAgKiBA
cmV0dXJuIFRSVUUgaWYgdGhlIGVudW1lcmF0aW9ucyBhcmUgZXF1YWwuIEZBTFNFIGlmIG5vdC4K
KyAgICAgKiBAc3RhYmxlIElDVSAzLjYgCisgICAgICovCisgICAgdmlydHVhbCBVQm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0cmluZ0VudW1lcmF0aW9uJiB0aGF0KWNvbnN0OworICAgIC8qKgorICAg
ICAqIENvbXBhcmVzIHRoaXMgZW51bWVyYXRpb24gdG8gb3RoZXIgdG8gY2hlY2sgaWYgYm90aCBh
cmUgbm90IGVxdWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3RoZXIgc3RyaW5n
IGVudW1lcmF0aW9uIHRvIGNvbXBhcmUgdGhpcyBvYmplY3QgdG8KKyAgICAgKiBAcmV0dXJuIFRS
VUUgaWYgdGhlIGVudW1lcmF0aW9ucyBhcmUgZXF1YWwuIEZBTFNFIGlmIG5vdC4KKyAgICAgKiBA
c3RhYmxlIElDVSAzLjYgCisgICAgICovCisgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0cmluZ0VudW1lcmF0aW9uJiB0aGF0KWNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgLyoq
CisgICAgICogVW5pY29kZVN0cmluZyBmaWVsZCBmb3IgdXNlIHdpdGggZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbnMgYW5kIHN1YmNsYXNzZXMuCisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICov
CisgICAgVW5pY29kZVN0cmluZyB1bmlzdHI7CisgICAgLyoqCisgICAgICogY2hhciAqIGRlZmF1
bHQgYnVmZmVyIGZvciB1c2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBhbmQgc3ViY2xh
c3Nlcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8KKyAgICBjaGFyIGNoYXJzQnVm
ZmVyWzMyXTsKKyAgICAvKioKKyAgICAgKiBjaGFyICogYnVmZmVyIGZvciB1c2Ugd2l0aCBkZWZh
dWx0IGltcGxlbWVudGF0aW9ucyBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgKiBBbGxvY2F0ZWQgaW4g
Y29uc3RydWN0b3IgYW5kIGluIGVuc3VyZUNoYXJzQ2FwYWNpdHkoKS4KKyAgICAgKiBAc3RhYmxl
IElDVSAyLjgKKyAgICAgKi8KKyAgICBjaGFyICpjaGFyczsKKyAgICAvKioKKyAgICAgKiBDYXBh
Y2l0eSBvZiBjaGFycywgZm9yIHVzZSB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGFuZCBz
dWJjbGFzc2VzLgorICAgICAqIEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIGludDMyX3Qg
Y2hhcnNDYXBhY2l0eTsKKworICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IgZm9y
IHVzZSB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGFuZCBzdWJjbGFzc2VzLgorICAgICAq
IEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIFN0cmluZ0VudW1lcmF0aW9uKCk7CisKKyAg
ICAvKioKKyAgICAgKiBFbnN1cmVzIHRoYXQgY2hhcnMgaXMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMg
dGhlIHJlcXVlc3RlZCBjYXBhY2l0eS4KKyAgICAgKiBGb3IgdXNlIHdpdGggZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbnMgYW5kIHN1YmNsYXNzZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2FwYWNp
dHkgUmVxdWVzdGVkIGNhcGFjaXR5LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGluL291dCBl
cnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIHZvaWQgZW5z
dXJlQ2hhcnNDYXBhY2l0eShpbnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICZzdGF0dXMpOwor
CisgICAgLyoqCisgICAgICogQ29udmVydHMgcyB0byBVbmljb2RlIGFuZCBzZXRzIHVuaXN0ciB0
byB0aGUgcmVzdWx0LgorICAgICAqIEZvciB1c2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9u
cyBhbmQgc3ViY2xhc3NlcywKKyAgICAgKiBlc3BlY2lhbGx5IGZvciBpbXBsZW1lbnRhdGlvbnMg
b2Ygc25leHQoKSBpbiB0ZXJtcyBvZiBuZXh0KCkuCisgICAgICogVGhpcyBpcyBwcm92aWRlZCB3
aXRoIGEgaGVscGVyIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9u
CisgICAgICogb2Ygc25leHQoKSB0byBhdm9pZCBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcHMgYmV0
d2VlbiBuZXh0KCkgYW5kIHNuZXh0KCkuCisgICAgICoKKyAgICAgKiBGb3IgZXhhbXBsZToKKyAg
ICAgKiBcY29kZQorICAgICAqIGNvbnN0IFVuaWNvZGVTdHJpbmcqIHNuZXh0KFVFcnJvckNvZGUm
IHN0YXR1cykgeworICAgICAqICAgaW50MzJfdCByZXN1bHRMZW5ndGg9MDsKKyAgICAgKiAgIGNv
bnN0IGNoYXIgKnM9bmV4dCgmcmVzdWx0TGVuZ3RoLCBzdGF0dXMpOworICAgICAqICAgcmV0dXJu
IHNldENoYXJzKHMsIHJlc3VsdExlbmd0aCwgc3RhdHVzKTsKKyAgICAgKiB9CisgICAgICogXGVu
ZGNvZGUKKyAgICAgKgorICAgICAqIEBwYXJhbSBzIFN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8g
VW5pY29kZS4KKyAgICAgKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiB0aGUgc3RyaW5nLgorICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGluL291dCBlcnJvciBjb2RlLgorICAgICAqIEByZXR1cm4g
QSBwb2ludGVyIHRvIHVuaXN0ci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8KKyAg
ICBVbmljb2RlU3RyaW5nICpzZXRDaGFycyhjb25zdCBjaGFyICpzLCBpbnQzMl90IGxlbmd0aCwg
VUVycm9yQ29kZSAmc3RhdHVzKTsKK307CisKK1VfTkFNRVNQQUNFX0VORAorCisvKiBTVFJFTlVN
X0ggKi8KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmlj
b2RlL3N0cmluZ3BpZWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3Ry
aW5ncGllY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWQ1YTA1MGVjNzQ3NWU5YmRkZmNjNWEwYTk1MmM5NmYy
M2UyOGJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmlj
b2RlL3N0cmluZ3BpZWNlLmgKQEAgLTAsMCArMSwyMjQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx
MCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworLy8gQ29ycG9yYXRpb24gYW5kIG90
aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBDb3B5cmlnaHQgMjAwMSBhbmQgb253
YXJkcyBHb29nbGUgSW5jLgorLy8gQXV0aG9yOiBTYW5qYXkgR2hlbWF3YXQKKworLy8gVGhpcyBj
b2RlIGlzIGEgY29udHJpYnV0aW9uIG9mIEdvb2dsZSBjb2RlLCBhbmQgdGhlIHN0eWxlIHVzZWQg
aGVyZSBpcworLy8gYSBjb21wcm9taXNlIGJldHdlZW4gdGhlIG9yaWdpbmFsIEdvb2dsZSBjb2Rl
IGFuZCB0aGUgSUNVIGNvZGluZyBndWlkZWxpbmVzLgorLy8gRm9yIGV4YW1wbGUsIGRhdGEgdHlw
ZXMgYXJlIElDVS1pZmllZCAoc2l6ZV90LGludC0+aW50MzJfdCksCisvLyBhbmQgQVBJIGNvbW1l
bnRzIGRveHlnZW4taWZpZWQsIGJ1dCBmdW5jdGlvbiBuYW1lcyBhbmQgYmVoYXZpb3IgYXJlCisv
LyBhcyBpbiB0aGUgb3JpZ2luYWwsIGlmIHBvc3NpYmxlLgorLy8gQXNzZXJ0aW9uLXN0eWxlIGVy
cm9yIGhhbmRsaW5nLCBub3QgYXZhaWxhYmxlIGluIElDVSwgd2FzIGNoYW5nZWQgdG8KKy8vIHBh
cmFtZXRlciAicGlubmluZyIgc2ltaWxhciB0byBVbmljb2RlU3RyaW5nLgorLy8KKy8vIEluIGFk
ZGl0aW9uLCB0aGlzIGlzIG9ubHkgYSBwYXJ0aWFsIHBvcnQgb2YgdGhlIG9yaWdpbmFsIEdvb2ds
ZSBjb2RlLAorLy8gbGltaXRlZCB0byB3aGF0IHdhcyBuZWVkZWQgc28gZmFyLiBUaGUgKG5lYXJs
eSkgY29tcGxldGUgb3JpZ2luYWwgY29kZQorLy8gaXMgaW4gdGhlIElDVSBzdm4gcmVwb3NpdG9y
eSBhdCBpY3VodG1sL3RydW5rL2Rlc2lnbi9zdHJpbmdzL2NvbnRyaWIKKy8vIChzZWUgSUNVIHRp
Y2tldCA2NzY1LCByMjU1MTcpLgorCisjaWZuZGVmIF9fU1RSSU5HUElFQ0VfSF9fCisjZGVmaW5l
IF9fU1RSSU5HUElFQ0VfSF9fCisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTog
U3RyaW5nUGllY2U6IFJlYWQtb25seSBieXRlIHN0cmluZyB3cmFwcGVyIGNsYXNzLgorICovCisK
KyNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5o
IgorI2luY2x1ZGUgInVuaWNvZGUvc3RkX3N0cmluZy5oIgorCisvLyBBcmdoaCEgIEkgd2lzaCBD
KysgbGl0ZXJhbHMgd2VyZSAic3RyaW5nIi4KKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisg
KiBBIHN0cmluZy1saWtlIG9iamVjdCB0aGF0IHBvaW50cyB0byBhIHNpemVkIHBpZWNlIG9mIG1l
bW9yeS4KKyAqCisgKiBXZSBwcm92aWRlIG5vbi1leHBsaWNpdCBzaW5nbGV0b24gY29uc3RydWN0
b3JzIHNvIHVzZXJzIGNhbiBwYXNzCisgKiBpbiBhICJjb25zdCBjaGFyKiIgb3IgYSAic3RyaW5n
IiB3aGVyZXZlciBhICJTdHJpbmdQaWVjZSIgaXMKKyAqIGV4cGVjdGVkLgorICoKKyAqIEZ1bmN0
aW9ucyBvciBtZXRob2RzIG1heSB1c2UgY29uc3QgU3RyaW5nUGllY2UmIHBhcmFtZXRlcnMgdG8g
YWNjZXB0IGVpdGhlcgorICogYSAiY29uc3QgY2hhcioiIG9yIGEgInN0cmluZyIgdmFsdWUgdGhh
dCB3aWxsIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvCisgKiBhIFN0cmluZ1BpZWNlLgorICoK
KyAqIFN5c3RlbWF0aWMgdXNhZ2Ugb2YgU3RyaW5nUGllY2UgaXMgZW5jb3VyYWdlZCBhcyBpdCB3
aWxsIHJlZHVjZSB1bm5lY2Vzc2FyeQorICogY29udmVyc2lvbnMgZnJvbSAiY29uc3QgY2hhcioi
IHRvICJzdHJpbmciIGFuZCBiYWNrIGFnYWluLgorICoKKyAqIEBzdGFibGUgSUNVIDQuMgorICov
CitjbGFzcyBVX0NPTU1PTl9BUEkgU3RyaW5nUGllY2UgOiBwdWJsaWMgVU1lbW9yeSB7CisgcHJp
dmF0ZToKKyAgY29uc3QgY2hhciogICBwdHJfOworICBpbnQzMl90ICAgICAgIGxlbmd0aF87CisK
KyBwdWJsaWM6CisgIC8qKgorICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLCBjcmVhdGVzIGFuIGVt
cHR5IFN0cmluZ1BpZWNlLgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1Bp
ZWNlKCkgOiBwdHJfKE5VTEwpLCBsZW5ndGhfKDApIHsgfQorICAvKioKKyAgICogQ29uc3RydWN0
cyBmcm9tIGEgTlVMLXRlcm1pbmF0ZWQgY29uc3QgY2hhciAqIHBvaW50ZXIuCisgICAqIEBwYXJh
bSBzdHIgYSBOVUwtdGVybWluYXRlZCBjb25zdCBjaGFyICogcG9pbnRlcgorICAgKiBAc3RhYmxl
IElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IGNoYXIqIHN0cik7CisjaWYgVV9I
QVZFX1NURF9TVFJJTkcKKyAgLyoqCisgICAqIENvbnN0cnVjdHMgZnJvbSBhIHN0ZDo6c3RyaW5n
LgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IFVfU1RE
X05TUSBzdHJpbmcmIHN0cikKKyAgICA6IHB0cl8oc3RyLmRhdGEoKSksIGxlbmd0aF8oc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc3RyLnNpemUoKSkpIHsgfQorI2VuZGlmCisgIC8qKgorICAgKiBDb25z
dHJ1Y3RzIGZyb20gYSBjb25zdCBjaGFyICogcG9pbnRlciBhbmQgYSBzcGVjaWZpZWQgbGVuZ3Ro
LgorICAgKiBAcGFyYW0gb2Zmc2V0IGEgY29uc3QgY2hhciAqIHBvaW50ZXIgKG5lZWQgbm90IGJl
IHRlcm1pbmF0ZWQpCisgICAqIEBwYXJhbSBsZW4gdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nOyBt
dXN0IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmlu
Z1BpZWNlKGNvbnN0IGNoYXIqIG9mZnNldCwgaW50MzJfdCBsZW4pIDogcHRyXyhvZmZzZXQpLCBs
ZW5ndGhfKGxlbikgeyB9CisgIC8qKgorICAgKiBTdWJzdHJpbmcgb2YgYW5vdGhlciBTdHJpbmdQ
aWVjZS4KKyAgICogQHBhcmFtIHggdGhlIG90aGVyIFN0cmluZ1BpZWNlCisgICAqIEBwYXJhbSBw
b3Mgc3RhcnQgcG9zaXRpb24gaW4geDsgbXVzdCBiZSBub24tbmVnYXRpdmUgYW5kIDw9IHgubGVu
Z3RoKCkuCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgU3RyaW5nUGllY2UoY29uc3Qg
U3RyaW5nUGllY2UmIHgsIGludDMyX3QgcG9zKTsKKyAgLyoqCisgICAqIFN1YnN0cmluZyBvZiBh
bm90aGVyIFN0cmluZ1BpZWNlLgorICAgKiBAcGFyYW0geCB0aGUgb3RoZXIgU3RyaW5nUGllY2UK
KyAgICogQHBhcmFtIHBvcyBzdGFydCBwb3NpdGlvbiBpbiB4OyBtdXN0IGJlIG5vbi1uZWdhdGl2
ZSBhbmQgPD0geC5sZW5ndGgoKS4KKyAgICogQHBhcmFtIGxlbiBsZW5ndGggb2YgdGhlIHN1YnN0
cmluZzsKKyAgICogICAgICAgICAgICBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgd2lsbCBiZSBw
aW5uZWQgdG8gYXQgbW9zdCB4Lmxlbmd0aCgpIC0gcG9zLgorICAgKiBAc3RhYmxlIElDVSA0LjIK
KyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IFN0cmluZ1BpZWNlJiB4LCBpbnQzMl90IHBvcywg
aW50MzJfdCBsZW4pOworCisgIC8qKgorICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcG9pbnRlci4g
TWF5IGJlIE5VTEwgaWYgaXQgaXMgZW1wdHkuCisgICAqCisgICAqIGRhdGEoKSBtYXkgcmV0dXJu
IGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aXRoIGVtYmVkZGVkIE5VTHMsIGFuZCB0aGUKKyAgICog
cmV0dXJuZWQgYnVmZmVyIG1heSBvciBtYXkgbm90IGJlIG51bGwgdGVybWluYXRlZC4gIFRoZXJl
Zm9yZSBpdCBpcworICAgKiB0eXBpY2FsbHkgYSBtaXN0YWtlIHRvIHBhc3MgZGF0YSgpIHRvIGEg
cm91dGluZSB0aGF0IGV4cGVjdHMgYSBOVUwKKyAgICogdGVybWluYXRlZCBzdHJpbmcuCisgICAq
IEByZXR1cm4gdGhlIHN0cmluZyBwb2ludGVyCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8K
KyAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHB0cl87IH0KKyAgLyoqCisgICAq
IFJldHVybnMgdGhlIHN0cmluZyBsZW5ndGguIFNhbWUgYXMgbGVuZ3RoKCkuCisgICAqIEByZXR1
cm4gdGhlIHN0cmluZyBsZW5ndGgKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBpbnQz
Ml90IHNpemUoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9CisgIC8qKgorICAgKiBSZXR1cm5z
IHRoZSBzdHJpbmcgbGVuZ3RoLiBTYW1lIGFzIHNpemUoKS4KKyAgICogQHJldHVybiB0aGUgc3Ry
aW5nIGxlbmd0aAorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIGludDMyX3QgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQorICAvKioKKyAgICogUmV0dXJucyB3aGV0aGVy
IHRoZSBzdHJpbmcgaXMgZW1wdHkuCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgc3RyaW5nIGlz
IGVtcHR5CisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgVUJvb2wgZW1wdHkoKSBjb25z
dCB7IHJldHVybiBsZW5ndGhfID09IDA7IH0KKworICAvKioKKyAgICogU2V0cyB0byBhbiBlbXB0
eSBzdHJpbmcuCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgdm9pZCBjbGVhcigpIHsg
cHRyXyA9IE5VTEw7IGxlbmd0aF8gPSAwOyB9CisKKyAgLyoqCisgICAqIFJlc2V0IHRoZSBzdHJp
bmdwaWVjZSB0byByZWZlciB0byBuZXcgZGF0YS4KKyAgICogQHBhcmFtIGRhdGEgcG9pbnRlciB0
aGUgbmV3IHN0cmluZyBkYXRhLiAgTmVlZCBub3QgYmUgbnVsIHRlcm1pbmF0ZWQuCisgICAqIEBw
YXJhbSBsZW4gdGhlIGxlbmd0aCBvZiB0aGUgbmV3IGRhdGEKKyAgICogQGludGVybmFsCisgICAq
LworICB2b2lkIHNldChjb25zdCBjaGFyKiBkYXRhLCBpbnQzMl90IGxlbikgeyBwdHJfID0gZGF0
YTsgbGVuZ3RoXyA9IGxlbjsgfQorCisgIC8qKgorICAgKiBSZXNldCB0aGUgc3RyaW5ncGllY2Ug
dG8gcmVmZXIgdG8gbmV3IGRhdGEuCisgICAqIEBwYXJhbSBzdHIgYSBwb2ludGVyIHRvIGEgTlVM
LXRlcm1pbmF0ZWQgc3RyaW5nLiAKKyAgICogQGludGVybmFsCisgICAqLworICB2b2lkIHNldChj
b25zdCBjaGFyKiBzdHIpOworCisgIC8qKgorICAgKiBSZW1vdmVzIHRoZSBmaXJzdCBuIHN0cmlu
ZyB1bml0cy4KKyAgICogQHBhcmFtIG4gcHJlZml4IGxlbmd0aCwgbXVzdCBiZSBub24tbmVnYXRp
dmUgYW5kIDw9bGVuZ3RoKCkKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2b2lkIHJl
bW92ZV9wcmVmaXgoaW50MzJfdCBuKSB7CisgICAgaWYgKG4gPj0gMCkgeworICAgICAgaWYgKG4g
PiBsZW5ndGhfKSB7CisgICAgICAgIG4gPSBsZW5ndGhfOworICAgICAgfQorICAgICAgcHRyXyAr
PSBuOworICAgICAgbGVuZ3RoXyAtPSBuOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBSZW1v
dmVzIHRoZSBsYXN0IG4gc3RyaW5nIHVuaXRzLgorICAgKiBAcGFyYW0gbiBzdWZmaXggbGVuZ3Ro
LCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgPD1sZW5ndGgoKQorICAgKiBAc3RhYmxlIElDVSA0
LjIKKyAgICovCisgIHZvaWQgcmVtb3ZlX3N1ZmZpeChpbnQzMl90IG4pIHsKKyAgICBpZiAobiA+
PSAwKSB7CisgICAgICBpZiAobiA8PSBsZW5ndGhfKSB7CisgICAgICAgIGxlbmd0aF8gLT0gbjsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIGxlbmd0aF8gPSAwOworICAgICAgfQorICAgIH0KKyAg
fQorCisgIC8qKgorICAgKiBNYXhpbXVtIGludGVnZXIsIHVzZWQgYXMgYSBkZWZhdWx0IHZhbHVl
IGZvciBzdWJzdHJpbmcgbWV0aG9kcy4KKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBz
dGF0aWMgY29uc3QgaW50MzJfdCBucG9zID0gMHg3ZmZmZmZmZjsKKworICAvKioKKyAgICogUmV0
dXJucyBhIHN1YnN0cmluZyBvZiB0aGlzIFN0cmluZ1BpZWNlLgorICAgKiBAcGFyYW0gcG9zIHN0
YXJ0IHBvc2l0aW9uOyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgPD0gbGVuZ3RoKCkuCisgICAq
IEBwYXJhbSBsZW4gbGVuZ3RoIG9mIHRoZSBzdWJzdHJpbmc7CisgICAqICAgICAgICAgICAgbXVz
dCBiZSBub24tbmVnYXRpdmUgYW5kIHdpbGwgYmUgcGlubmVkIHRvIGF0IG1vc3QgbGVuZ3RoKCkg
LSBwb3MuCisgICAqIEByZXR1cm4gdGhlIHN1YnN0cmluZyBTdHJpbmdQaWVjZQorICAgKiBAc3Rh
YmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlIHN1YnN0cihpbnQzMl90IHBvcywgaW50
MzJfdCBsZW4gPSBucG9zKSBjb25zdCB7CisgICAgcmV0dXJuIFN0cmluZ1BpZWNlKCp0aGlzLCBw
b3MsIGxlbik7CisgIH0KK307CisKKy8qKgorICogR2xvYmFsIG9wZXJhdG9yID09IGZvciBTdHJp
bmdQaWVjZQorICogQHBhcmFtIHggVGhlIGZpcnN0IFN0cmluZ1BpZWNlIHRvIGNvbXBhcmUuCisg
KiBAcGFyYW0geSBUaGUgc2Vjb25kIFN0cmluZ1BpZWNlIHRvIGNvbXBhcmUuCisgKiBAcmV0dXJu
IFRSVUUgaWYgdGhlIHN0cmluZyBkYXRhIGlzIGVxdWFsCisgKiBAaW50ZXJuYWwKKyAqLworVV9F
WFBPUlQgVUJvb2wgVV9FWFBPUlQyIAorb3BlcmF0b3I9PShjb25zdCBTdHJpbmdQaWVjZSYgeCwg
Y29uc3QgU3RyaW5nUGllY2UmIHkpOworCisvKioKKyAqIEdsb2JhbCBvcGVyYXRvciAhPSBmb3Ig
U3RyaW5nUGllY2UKKyAqIEBwYXJhbSB4IFRoZSBmaXJzdCBTdHJpbmdQaWVjZSB0byBjb21wYXJl
LgorICogQHBhcmFtIHkgVGhlIHNlY29uZCBTdHJpbmdQaWVjZSB0byBjb21wYXJlLgorICogQHJl
dHVybiBUUlVFIGlmIHRoZSBzdHJpbmcgZGF0YSBpcyBub3QgZXF1YWwKKyAqIEBpbnRlcm5hbAor
ICovCitpbmxpbmUgVUJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmdQaWVjZSYgeCwgY29uc3Qg
U3RyaW5nUGllY2UmIHkpIHsKKyAgcmV0dXJuICEoeCA9PSB5KTsKK30KKworVV9OQU1FU1BBQ0Vf
RU5ECisKKyNlbmRpZiAgLy8gX19TVFJJTkdQSUVDRV9IX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bWlzYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ljdS91bmljb2RlL3VtaXNjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg1NDUxZmM3NjdjMDU4MzVmNmMxNWY1
NjZmMzU2MmUyZDRhZjgzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pY3UvdW5pY29kZS91bWlzYy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisqICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFj
aGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyogICBmaWxlIG5hbWU6ICB1bWlzYy5oCisqICAgZW5jb2Rpbmc6ICAg
VVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0
CisqCisqICAgY3JlYXRlZCBvbjogMTk5OW9jdDE1CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcu
IFNjaGVyZXIKKyovCisKKyNpZm5kZWYgVU1JU0NfSAorI2RlZmluZSBVTUlTQ19ICisKKyNpbmNs
dWRlICJ1bmljb2RlL3V0eXBlcy5oIgorCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgIEMgQVBJ
Om1pc2MgZGVmaW5pdGlvbnMgCisgKgorICogIFRoaXMgZmlsZSBjb250YWlucyBtaXNjZWxsYW5l
b3VzIGRlZmluaXRpb25zIGZvciB0aGUgQyBBUElzLiAKKyAqLworCitVX0NERUNMX0JFR0lOCisK
Ky8qKiBBIHN0cnVjdCByZXByZXNlbnRpbmcgYSByYW5nZSBvZiB0ZXh0IGNvbnRhaW5pbmcgYSBz
cGVjaWZpYyBmaWVsZCAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBzdHJ1Y3Qg
VUZpZWxkUG9zaXRpb24geworICAvKioKKyAgICogVGhlIGZpZWxkIAorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGludDMyX3QgZmllbGQ7CisgIC8qKgorICAgKiBUaGUgc3RhcnQgb2Yg
dGhlIHRleHQgcmFuZ2UgY29udGFpbmluZyBmaWVsZCAKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisg
ICAqLworICBpbnQzMl90IGJlZ2luSW5kZXg7CisgIC8qKiAKKyAgICogVGhlIGxpbWl0IG9mIHRo
ZSB0ZXh0IHJhbmdlIGNvbnRhaW5pbmcgZmllbGQgCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW50MzJfdCBlbmRJbmRleDsKK30gVUZpZWxkUG9zaXRpb247CisKKyNpZiAhVUNPTkZJ
R19OT19TRVJWSUNFCisvKioKKyAqIE9wYXF1ZSB0eXBlIHJldHVybmVkIGJ5IHJlZ2lzdGVySW5z
dGFuY2UsIHJlZ2lzdGVyRmFjdG9yeSBhbmQgdW5yZWdpc3RlciBmb3Igc2VydmljZSByZWdpc3Ry
YXRpb24uCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLwordHlwZWRlZiBjb25zdCB2b2lkKiBVUmVn
aXN0cnlLZXk7CisjZW5kaWYKKworVV9DREVDTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW5pc3RyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1L3VuaWNvZGUvdW5pc3RyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZjMTgwZjM2MjM1ZTZm
MzA5OWQyMTg1MTBkMDExOWI3MGQzYTE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bmlzdHIuaApAQCAtMCwwICsxLDQ0NDYgQEAKKy8qCisq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMTAsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogRmlsZSB1bmlzdHIuaAorKgorKiBNb2Rp
ZmljYXRpb24gSGlzdG9yeToKKyoKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlw
dGlvbgorKiAgIDA5LzI1Lzk4ICAgIHN0ZXBoZW4gICAgIENyZWF0aW9uLgorKiAgIDExLzExLzk4
ICAgIHN0ZXBoZW4gICAgIENoYW5nZWQgcGVyIDExLzkgY29kZSByZXZpZXcuCisqICAgMDQvMjAv
OTkgICAgc3RlcGhlbiAgICAgT3ZlcmhhdWxlZCBwZXIgNC8xNiBjb2RlIHJldmlldy4KKyogICAx
MS8xOC85OSAgICBhbGl1ICAgICAgICBNYWRlIHRvIGluaGVyaXQgZnJvbSBSZXBsYWNlYWJsZS4g
IEFkZGVkIG1ldGhvZAorKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2VC
ZXR3ZWVuKCk7IG90aGVyIG1ldGhvZHMgdW5jaGFuZ2VkLgorKiAgIDA2LzI1LzAxICAgIGdyaG90
ZW4gICAgIFJlbW92ZSBkZXBlbmRlbmN5IG9uIGlvc3RyZWFtLgorKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisqLworCisjaWZuZGVmIFVOSVNUUl9ICisjZGVmaW5lIFVOSVNUUl9ICisKKy8qKgorICog
XGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogVW5pY29kZSBTdHJpbmcgCisgKi8KKworI2luY2x1
ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisjaW5jbHVkZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRl
ICJ1bmljb2RlL3N0ZF9zdHJpbmcuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmluZ3BpZWNlLmgi
CisjaW5jbHVkZSAidW5pY29kZS9ieXRlc3RyZWFtLmgiCisKK3N0cnVjdCBVQ29udmVydGVyOyAg
ICAgICAgICAvLyB1bmljb2RlL3VjbnYuaAorY2xhc3MgIFN0cmluZ1RocmVhZFRlc3Q7CisKKyNp
Zm5kZWYgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKy8qIHNlZSBhbHNvIHVzdHJpbmcuaCBh
bmQgdW5vcm0uaCAqLworLyoqCisgKiBPcHRpb24gYml0IGZvciB1X3N0ckNhc2VDb21wYXJlLCB1
X3N0cmNhc2VjbXAsIHVub3JtX2NvbXBhcmUsIGV0YzoKKyAqIENvbXBhcmUgc3RyaW5ncyBpbiBj
b2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyLgorICogQHN0YWJsZSBJ
Q1UgMi4yCisgKi8KKyNkZWZpbmUgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIgIDB4ODAwMAor
I2VuZGlmCisKKyNpZm5kZWYgVVNUUklOR19ICisvKioKKyAqIFxpbmdyb3VwIHVzdHJpbmdfdXN0
cmxlbgorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9zdHJsZW4oY29uc3QgVUNo
YXIgKnMpOworI2VuZGlmCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKK2NsYXNzIExvY2FsZTsgICAg
ICAgICAgICAgICAvLyB1bmljb2RlL2xvY2lkLmgKK2NsYXNzIFN0cmluZ0NoYXJhY3Rlckl0ZXJh
dG9yOworY2xhc3MgQnJlYWtJdGVyYXRvcjsgICAgICAgIC8vIHVuaWNvZGUvYnJraXRlci5oCisK
Ky8qIFRoZSA8aW9zdHJlYW0+IGluY2x1ZGUgaGFzIGJlZW4gbW92ZWQgdG8gdW5pY29kZS91c3Ry
ZWFtLmggKi8KKworLyoqCisgKiBDb25zdGFudCB0byBiZSB1c2VkIGluIHRoZSBVbmljb2RlU3Ry
aW5nKGNoYXIgKiwgaW50MzJfdCwgRUludmFyaWFudCkgY29uc3RydWN0b3IKKyAqIHdoaWNoIGNv
bnN0cnVjdHMgYSBVbmljb2RlIHN0cmluZyBmcm9tIGFuIGludmFyaWFudC1jaGFyYWN0ZXIgY2hh
ciAqIHN0cmluZy4KKyAqIEFib3V0IGludmFyaWFudCBjaGFyYWN0ZXJzIHNlZSB1dHlwZXMuaC4K
KyAqIFRoaXMgY29uc3RydWN0b3IgaGFzIG5vIHJ1bnRpbWUgZGVwZW5kZW5jeSBvbiBjb252ZXJz
aW9uIGNvZGUgYW5kIGlzCisgKiB0aGVyZWZvcmUgcmVjb21tZW5kZWQgb3ZlciBvbmVzIHRha2lu
ZyBhIGNoYXJzZXQgbmFtZSBzdHJpbmcKKyAqICh3aGVyZSB0aGUgZW1wdHkgc3RyaW5nICIiIGlu
ZGljYXRlcyBpbnZhcmlhbnQtY2hhcmFjdGVyIGNvbnZlcnNpb24pLgorICoKKyAqIEBzdGFibGUg
SUNVIDMuMgorICovCisjZGVmaW5lIFVTX0lOViBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29k
ZVN0cmluZzo6a0ludmFyaWFudAorCisvKioKKyAqIFVuaWNvZGUgU3RyaW5nIGxpdGVyYWxzIGlu
IEMrKy4KKyAqIERlcGVuZGVudCBvbiB0aGUgcGxhdGZvcm0gcHJvcGVydGllcywgZGlmZmVyZW50
IFVuaWNvZGVTdHJpbmcKKyAqIGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUg
YSBVbmljb2RlU3RyaW5nIG9iamVjdCBmcm9tCisgKiBhIHN0cmluZyBsaXRlcmFsLgorICogVGhl
IG1hY3JvcyBhcmUgZGVmaW5lZCBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZS4KKyAqIFRoZXkgd29y
ayBvbmx5IGZvciBzdHJpbmdzIHRoYXQgY29udGFpbiAiaW52YXJpYW50IGNoYXJhY3RlcnMiLCBp
LmUuLAorICogb25seSBsYXRpbiBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9u
LgorICogU2VlIHV0eXBlcy5oIGZvciBkZXRhaWxzLgorICoKKyAqIFRoZSBzdHJpbmcgcGFyYW1l
dGVyIG11c3QgYmUgYSBDIHN0cmluZyBsaXRlcmFsLgorICogVGhlIGxlbmd0aCBvZiB0aGUgc3Ry
aW5nLCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZworICogPGNvZGU+TlVMPC9jb2RlPiwg
bXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBjb25zdGFudC4KKyAqIFRoZSBVX1NUUklOR19ERUNMIG1h
Y3JvIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBmb3Igb25lCisgKiBzdWNoIHN0cmlu
ZyB2YXJpYWJsZSBiZWZvcmUgaXQgaXMgdXNlZC4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisj
aWYgZGVmaW5lZChVX0RFQ0xBUkVfVVRGMTYpCisjICAgZGVmaW5lIFVOSUNPREVfU1RSSU5HKGNz
LCBfbGVuZ3RoKSBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyhUUlVFLCAoY29u
c3QgVUNoYXIgKilVX0RFQ0xBUkVfVVRGMTYoY3MpLCBfbGVuZ3RoKQorI2VsaWYgVV9TSVpFT0Zf
V0NIQVJfVD09VV9TSVpFT0ZfVUNIQVIgJiYgKFVfQ0hBUlNFVF9GQU1JTFk9PVVfQVNDSUlfRkFN
SUxZIHx8IChVX1NJWkVPRl9VQ0hBUiA9PSAyICYmIGRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikp
KQorIyAgIGRlZmluZSBVTklDT0RFX1NUUklORyhjcywgX2xlbmd0aCkgVV9OQU1FU1BBQ0VfUVVB
TElGSUVSIFVuaWNvZGVTdHJpbmcoVFJVRSwgKGNvbnN0IFVDaGFyICopTCAjIyBjcywgX2xlbmd0
aCkKKyNlbGlmIFVfU0laRU9GX1VDSEFSPT0xICYmIFVfQ0hBUlNFVF9GQU1JTFk9PVVfQVNDSUlf
RkFNSUxZCisjICAgZGVmaW5lIFVOSUNPREVfU1RSSU5HKGNzLCBfbGVuZ3RoKSBVX05BTUVTUEFD
RV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyhUUlVFLCAoY29uc3QgVUNoYXIgKiljcywgX2xlbmd0
aCkKKyNlbHNlCisjICAgZGVmaW5lIFVOSUNPREVfU1RSSU5HKGNzLCBfbGVuZ3RoKSBVX05BTUVT
UEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyhjcywgX2xlbmd0aCwgVVNfSU5WKQorI2VuZGlm
CisKKy8qKgorICogVW5pY29kZSBTdHJpbmcgbGl0ZXJhbHMgaW4gQysrLgorICogRGVwZW5kZW50
IG9uIHRoZSBwbGF0Zm9ybSBwcm9wZXJ0aWVzLCBkaWZmZXJlbnQgVW5pY29kZVN0cmluZworICog
Y29uc3RydWN0b3JzIHNob3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIFVuaWNvZGVTdHJpbmcgb2Jq
ZWN0IGZyb20KKyAqIGEgc3RyaW5nIGxpdGVyYWwuCisgKiBUaGUgbWFjcm9zIGFyZSBkZWZpbmVk
IGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZS4KKyAqIFRoZXkgd29yayBvbmx5IGZvciBzdHJpbmdz
IHRoYXQgY29udGFpbiAiaW52YXJpYW50IGNoYXJhY3RlcnMiLCBpLmUuLAorICogb25seSBsYXRp
biBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogU2VlIHV0eXBlcy5o
IGZvciBkZXRhaWxzLgorICoKKyAqIFRoZSBzdHJpbmcgcGFyYW1ldGVyIG11c3QgYmUgYSBDIHN0
cmluZyBsaXRlcmFsLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVU5JQ09ERV9T
VFJJTkdfU0lNUExFKGNzKSBVTklDT0RFX1NUUklORyhjcywgLTEpCisKKy8qKgorICogVW5pY29k
ZVN0cmluZyBpcyBhIHN0cmluZyBjbGFzcyB0aGF0IHN0b3JlcyBVbmljb2RlIGNoYXJhY3RlcnMg
ZGlyZWN0bHkgYW5kIHByb3ZpZGVzCisgKiBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgYXMgdGhlIEph
dmEgU3RyaW5nIGFuZCBTdHJpbmdCdWZmZXIgY2xhc3Nlcy4KKyAqIEl0IGlzIGEgY29uY3JldGUg
aW1wbGVtZW50YXRpb24gb2YgdGhlIGFic3RyYWN0IGNsYXNzIFJlcGxhY2VhYmxlIChmb3IgdHJh
bnNsaXRlcmF0aW9uKS4KKyAqCisgKiBUaGUgVW5pY29kZVN0cmluZyBjbGFzcyBpcyBub3Qgc3Vp
dGFibGUgZm9yIHN1YmNsYXNzaW5nLgorICoKKyAqIDxwPkZvciBhbiBvdmVydmlldyBvZiBVbmlj
b2RlIHN0cmluZ3MgaW4gQyBhbmQgQysrIHNlZSB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6Ly9pY3Ut
cHJvamVjdC5vcmcvdXNlcmd1aWRlL3N0cmluZ3MuaHRtbCI+VXNlciBHdWlkZSBTdHJpbmdzIGNo
YXB0ZXI8L2E+LjwvcD4KKyAqCisgKiA8cD5JbiBJQ1UsIGEgVW5pY29kZSBzdHJpbmcgY29uc2lz
dHMgb2YgMTYtYml0IFVuaWNvZGUgPGVtPmNvZGUgdW5pdHM8L2VtPi4KKyAqIEEgVW5pY29kZSBj
aGFyYWN0ZXIgbWF5IGJlIHN0b3JlZCB3aXRoIGVpdGhlciBvbmUgY29kZSB1bml0CisgKiAodGhl
IG1vc3QgY29tbW9uIGNhc2UpIG9yIHdpdGggYSBtYXRjaGVkIHBhaXIgb2Ygc3BlY2lhbCBjb2Rl
IHVuaXRzCisgKiAoInN1cnJvZ2F0ZXMiKS4gVGhlIGRhdGEgdHlwZSBmb3IgY29kZSB1bml0cyBp
cyBVQ2hhci4gCisgKiBGb3Igc2luZ2xlLWNoYXJhY3RlciBoYW5kbGluZywgYSBVbmljb2RlIGNo
YXJhY3RlciBjb2RlIDxlbT5wb2ludDwvZW0+IGlzIGEgdmFsdWUKKyAqIGluIHRoZSByYW5nZSAw
Li4weDEwZmZmZi4gSUNVIHVzZXMgdGhlIFVDaGFyMzIgdHlwZSBmb3IgY29kZSBwb2ludHMuPC9w
PgorICoKKyAqIDxwPkluZGV4ZXMgYW5kIG9mZnNldHMgaW50byBhbmQgbGVuZ3RocyBvZiBzdHJp
bmdzIGFsd2F5cyBjb3VudCBjb2RlIHVuaXRzLCBub3QgY29kZSBwb2ludHMuCisgKiBUaGlzIGlz
IHRoZSBzYW1lIGFzIHdpdGggbXVsdGktYnl0ZSBjaGFyKiBzdHJpbmdzIGluIHRyYWRpdGlvbmFs
IHN0cmluZyBoYW5kbGluZy4KKyAqIE9wZXJhdGlvbnMgb24gcGFydGlhbCBzdHJpbmdzIHR5cGlj
YWxseSBkbyBub3QgdGVzdCBmb3IgY29kZSBwb2ludCBib3VuZGFyaWVzLgorICogSWYgbmVjZXNz
YXJ5LCB0aGUgdXNlciBuZWVkcyB0byB0YWtlIGNhcmUgb2Ygc3VjaCBib3VuZGFyaWVzIGJ5IHRl
c3RpbmcgZm9yIHRoZSBjb2RlIHVuaXQKKyAqIHZhbHVlcyBvciBieSB1c2luZyBmdW5jdGlvbnMg
bGlrZQorICogVW5pY29kZVN0cmluZzo6Z2V0Q2hhcjMyU3RhcnQoKSBhbmQgVW5pY29kZVN0cmlu
Zzo6Z2V0Q2hhcjMyTGltaXQoKQorICogKG9yLCBpbiBDLCB0aGUgZXF1aXZhbGVudCBtYWNyb3Mg
VTE2X1NFVF9DUF9TVEFSVCgpIGFuZCBVMTZfU0VUX0NQX0xJTUlUKCksIHNlZSB1dGYuaCkuPC9w
PgorICoKKyAqIFVuaWNvZGVTdHJpbmcgbWV0aG9kcyBhcmUgbW9yZSBsZW5pZW50IHdpdGggcmVn
YXJkIHRvIGlucHV0IHBhcmFtZXRlciB2YWx1ZXMKKyAqIHRoYW4gb3RoZXIgSUNVIEFQSXMuIElu
IHBhcnRpY3VsYXI6CisgKiAtIElmIGluZGV4ZXMgYXJlIG91dCBvZiBib3VuZHMgZm9yIGEgVW5p
Y29kZVN0cmluZyBvYmplY3QKKyAqICAgKDwwIG9yID5sZW5ndGgoKSkgdGhlbiB0aGV5IGFyZSAi
cGlubmVkIiB0byB0aGUgbmVhcmVzdCBib3VuZGFyeS4KKyAqIC0gSWYgcHJpbWl0aXZlIHN0cmlu
ZyBwb2ludGVyIHZhbHVlcyAoZS5nLiwgY29uc3QgVUNoYXIgKiBvciBjaGFyICopCisgKiAgIGZv
ciBpbnB1dCBzdHJpbmdzIGFyZSBOVUxMLCB0aGVuIHRob3NlIGlucHV0IHN0cmluZyBwYXJhbWV0
ZXJzIGFyZSB0cmVhdGVkCisgKiAgIGFzIGlmIHRoZXkgcG9pbnRlZCB0byBhbiBlbXB0eSBzdHJp
bmcuCisgKiAgIEhvd2V2ZXIsIHRoaXMgaXMgPGVtPm5vdDwvZW0+IHRoZSBjYXNlIGZvciBjaGFy
ICogcGFyYW1ldGVycyBmb3IgY2hhcnNldCBuYW1lcworICogICBvciBvdGhlciBJRHMuCisgKiAt
IE1vc3QgVW5pY29kZVN0cmluZyBtZXRob2RzIGRvIG5vdCB0YWtlIGEgVUVycm9yQ29kZSBwYXJh
bWV0ZXIgYmVjYXVzZQorICogICB0aGVyZSBhcmUgdXN1YWxseSB2ZXJ5IGZldyBvcHBvcnR1bml0
aWVzIGZvciBmYWlsdXJlIG90aGVyIHRoYW4gYSBzaG9ydGFnZQorICogICBvZiBtZW1vcnksIGVy
cm9yIGNvZGVzIGluIGxvdy1sZXZlbCBDKysgc3RyaW5nIG1ldGhvZHMgd291bGQgYmUgaW5jb252
ZW5pZW50LAorICogICBhbmQgdGhlIGVycm9yIGNvZGUgYXMgdGhlIGxhc3QgcGFyYW1ldGVyIChJ
Q1UgY29udmVudGlvbikgd291bGQgcHJldmVudAorICogICB0aGUgdXNlIG9mIGRlZmF1bHQgcGFy
YW1ldGVyIHZhbHVlcy4KKyAqICAgSW5zdGVhZCwgc3VjaCBtZXRob2RzIHNldCB0aGUgVW5pY29k
ZVN0cmluZyBpbnRvIGEgImJvZ3VzIiBzdGF0ZQorICogICAoc2VlIGlzQm9ndXMoKSkgaWYgYW4g
ZXJyb3Igb2NjdXJzLgorICoKKyAqIEluIHN0cmluZyBjb21wYXJpc29ucywgdHdvIFVuaWNvZGVT
dHJpbmcgb2JqZWN0cyB0aGF0IGFyZSBib3RoICJib2d1cyIKKyAqIGNvbXBhcmUgZXF1YWwgKHRv
IGJlIHRyYW5zaXRpdmUgYW5kIHByZXZlbnQgZW5kbGVzcyBsb29wcyBpbiBzb3J0aW5nKSwKKyAq
IGFuZCBhICJib2d1cyIgc3RyaW5nIGNvbXBhcmVzIGxlc3MgdGhhbiBhbnkgbm9uLSJib2d1cyIg
b25lLgorICoKKyAqIENvbnN0IFVuaWNvZGVTdHJpbmcgbWV0aG9kcyBhcmUgdGhyZWFkLXNhZmUu
IE11bHRpcGxlIHRocmVhZHMgY2FuIHVzZQorICogY29uc3QgbWV0aG9kcyBvbiB0aGUgc2FtZSBV
bmljb2RlU3RyaW5nIG9iamVjdCBzaW11bHRhbmVvdXNseSwKKyAqIGJ1dCBub24tY29uc3QgbWV0
aG9kcyBtdXN0IG5vdCBiZSBjYWxsZWQgY29uY3VycmVudGx5IChpbiBtdWx0aXBsZSB0aHJlYWRz
KQorICogd2l0aCBhbnkgb3RoZXIgKGNvbnN0IG9yIG5vbi1jb25zdCkgbWV0aG9kcy4KKyAqCisg
KiBTaW1pbGFybHksIGNvbnN0IFVuaWNvZGVTdHJpbmcgJiBwYXJhbWV0ZXJzIGFyZSB0aHJlYWQt
c2FmZS4KKyAqIE9uZSBvYmplY3QgbWF5IGJlIHBhc3NlZCBpbiBhcyBzdWNoIGEgcGFyYW1ldGVy
IGNvbmN1cnJlbnRseSBpbiBtdWx0aXBsZSB0aHJlYWRzLgorICogVGhpcyBpbmNsdWRlcyB0aGUg
Y29uc3QgVW5pY29kZVN0cmluZyAmIHBhcmFtZXRlcnMgZm9yCisgKiBjb3B5IGNvbnN0cnVjdGlv
biwgYXNzaWdubWVudCwgYW5kIGNsb25pbmcuCisgKgorICogPHA+VW5pY29kZVN0cmluZyB1c2Vz
IHNldmVyYWwgc3RvcmFnZSBtZXRob2RzLgorICogU3RyaW5nIGNvbnRlbnRzIGNhbiBiZSBzdG9y
ZWQgaW5zaWRlIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCBpdHNlbGYsCisgKiBpbiBhbiBhbGxv
Y2F0ZWQgYW5kIHNoYXJlZCBidWZmZXIsIG9yIGluIGFuIG91dHNpZGUgYnVmZmVyIHRoYXQgaXMg
ImFsaWFzZWQiLgorICogTW9zdCBvZiB0aGlzIGlzIGRvbmUgdHJhbnNwYXJlbnRseSwgYnV0IGNh
cmVmdWwgYWxpYXNpbmcgaW4gcGFydGljdWxhciBwcm92aWRlcworICogc2lnbmlmaWNhbnQgcGVy
Zm9ybWFuY2UgaW1wcm92ZW1lbnRzLgorICogQWxzbywgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBh
Y2Nlc3NpYmxlIHZpYSBzcGVjaWFsIGZ1bmN0aW9ucy4KKyAqIEZvciBkZXRhaWxzIHNlZSB0aGUK
KyAqIDxhIGhyZWY9Imh0dHA6Ly9pY3UtcHJvamVjdC5vcmcvdXNlcmd1aWRlL3N0cmluZ3MuaHRt
bCI+VXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXI8L2E+LjwvcD4KKyAqCisgKiBAc2VlIHV0Zi5o
CisgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworY2xh
c3MgVV9DT01NT05fQVBJIFVuaWNvZGVTdHJpbmcgOiBwdWJsaWMgUmVwbGFjZWFibGUKK3sKK3B1
YmxpYzoKKworICAvKioKKyAgICogQ29uc3RhbnQgdG8gYmUgdXNlZCBpbiB0aGUgVW5pY29kZVN0
cmluZyhjaGFyICosIGludDMyX3QsIEVJbnZhcmlhbnQpIGNvbnN0cnVjdG9yCisgICAqIHdoaWNo
IGNvbnN0cnVjdHMgYSBVbmljb2RlIHN0cmluZyBmcm9tIGFuIGludmFyaWFudC1jaGFyYWN0ZXIg
Y2hhciAqIHN0cmluZy4KKyAgICogVXNlIHRoZSBtYWNybyBVU19JTlYgaW5zdGVhZCBvZiB0aGUg
ZnVsbCBxdWFsaWZpY2F0aW9uIGZvciB0aGlzIHZhbHVlLgorICAgKgorICAgKiBAc2VlIFVTX0lO
VgorICAgKiBAc3RhYmxlIElDVSAzLjIKKyAgICovCisgIGVudW0gRUludmFyaWFudCB7CisgICAg
LyoqCisgICAgICogQHNlZSBFSW52YXJpYW50CisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAg
ICovCisgICAga0ludmFyaWFudAorICB9OworCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorICAvLyBSZWFkLW9ubHkgb3BlcmF0aW9ucworICAvLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAvKiBDb21wYXJpc29uIC0gYml0
d2lzZSBvbmx5IC0gZm9yIGludGVybmF0aW9uYWwgY29tcGFyaXNvbiB1c2UgY29sbGF0aW9uICov
CisKKyAgLyoqCisgICAqIEVxdWFsaXR5IG9wZXJhdG9yLiBQZXJmb3JtcyBvbmx5IGJpdHdpc2Ug
Y29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHRleHQgVGhlIFVuaWNvZGVTdHJpbmcgdG8gY29tcGFy
ZSB0byB0aGlzIG9uZS4KKyAgICogQHJldHVybiBUUlVFIGlmIDxUVD50ZXh0PC9UVD4gY29udGFp
bnMgdGhlIHNhbWUgY2hhcmFjdGVycyBhcyB0aGlzIG9uZSwKKyAgICogRkFMU0Ugb3RoZXJ3aXNl
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBvcGVyYXRvcj09
IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogSW5lcXVh
bGl0eSBvcGVyYXRvci4gUGVyZm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBw
YXJhbSB0ZXh0IFRoZSBVbmljb2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAq
IEByZXR1cm4gRkFMU0UgaWYgPFRUPnRleHQ8L1RUPiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0
ZXJzIGFzIHRoaXMgb25lLAorICAgKiBUUlVFIG90aGVyd2lzZS4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgb3BlcmF0b3IhPSAoY29uc3QgVW5pY29kZVN0cmlu
ZyYgdGV4dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIEdyZWF0ZXIgdGhhbiBvcGVyYXRvci4gUGVy
Zm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBVbmlj
b2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gVFJVRSBpZiB0
aGUgY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlCisgICAqIGdyZWF0ZXIgdGhhbiB0aGUg
Y2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIG9wZXJhdG9yPiAoY29uc3QgVW5p
Y29kZVN0cmluZyYgdGV4dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExlc3MgdGhhbiBvcGVyYXRv
ci4gUGVyZm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRo
ZSBVbmljb2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gVFJV
RSBpZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlCisgICAqIGxlc3MgdGhhbiB0
aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIG9wZXJhdG9yPCAoY29uc3Qg
VW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIEdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCBvcGVyYXRvci4gUGVyZm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAq
IEBwYXJhbSB0ZXh0IFRoZSBVbmljb2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisg
ICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlCisg
ICAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0
PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAg
aW5saW5lIFVCb29sIG9wZXJhdG9yPj0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0
OworCisgIC8qKgorICAgKiBMZXNzIHRoYW4gb3IgZXF1YWwgb3BlcmF0b3IuIFBlcmZvcm1zIG9u
bHkgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gdGV4dCBUaGUgVW5pY29kZVN0cmlu
ZyB0byBjb21wYXJlIHRvIHRoaXMgb25lLgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNoYXJh
Y3RlcnMgaW4gdGhpcyBhcmUgYml0d2lzZQorICAgKiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhl
IGNoYXJhY3RlcnMgaW4gPGNvZGU+dGV4dDwvY29kZT4sIEZBTFNFIG90aGVyd2lzZQorICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBvcGVyYXRvcjw9IChjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hh
cmFjdGVycyBiaXR3aXNlIGluIHRoaXMgVW5pY29kZVN0cmluZyB0bworICAgKiB0aGUgY2hhcmFj
dGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPi4KKyAgICogQHBhcmFtIHRleHQgVGhlIFVuaWNvZGVT
dHJpbmcgdG8gY29tcGFyZSB0byB0aGlzIG9uZS4KKyAgICogQHJldHVybiBUaGUgcmVzdWx0IG9m
IGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBhcmlzb246IDAgaWYgdGhpcworICAgKiBjb250YWlucyB0
aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxjb2RlPnRleHQ8L2NvZGU+LCAtMSBpZiB0aGUgY2hhcmFj
dGVycyBpbgorICAgKiB0aGlzIGFyZSBiaXR3aXNlIGxlc3MgdGhhbiB0aGUgY2hhcmFjdGVycyBp
biA8Y29kZT50ZXh0PC9jb2RlPiwgKzEgaWYgdGhlCisgICAqIGNoYXJhY3RlcnMgaW4gdGhpcyBh
cmUgYml0d2lzZSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPGNvZGU+dGV4
dDwvY29kZT4uCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBj
b21wYXJlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAgKiBD
b21wYXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3Rh
cnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyAg
ICogaW4gPFRUPnRleHQ8L1RUPgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGlj
aCB0aGUgY29tcGFyZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHRleHQgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHRleHQg
dGhlIG90aGVyIHRleHQgdG8gYmUgY29tcGFyZWQgYWdhaW5zdCB0aGlzIHN0cmluZy4KKyAgICog
QHJldHVybiBUaGUgcmVzdWx0IG9mIGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBhcmlzb246IDAgaWYg
dGhpcworICAgKiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxjb2RlPnRleHQ8L2Nv
ZGU+LCAtMSBpZiB0aGUgY2hhcmFjdGVycyBpbgorICAgKiB0aGlzIGFyZSBiaXR3aXNlIGxlc3Mg
dGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgKzEgaWYgdGhlCisgICAq
IGNoYXJhY3RlcnMgaW4gdGhpcyBhcmUgYml0d2lzZSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3Rl
cnMKKyAgICogaW4gPGNvZGU+dGV4dDwvY29kZT4uCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQz
Ml90IGxlbmd0aCwKKyAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Owor
CisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdl
CisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhl
IGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICog
WzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikuCisgICAq
IEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBi
ZWdpbnMKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhp
cyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgdGV4dCB0byBiZSBjb21wYXJl
ZAorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4g
dG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2Yg
Y2hhcmFjdGVycyBpbiA8VFQ+c3JjPC9UVD4gdG8gY29tcGFyZQorICAgKiBAcmV0dXJuIFRoZSBy
ZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29tcGFyaXNvbjogMCBpZiB0aGlzCisgICAqIGNv
bnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgPGNvZGU+c3JjVGV4dDwvY29kZT4sIC0xIGlm
IHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIHRoaXMgYXJlIGJpdHdpc2UgbGVzcyB0aGFuIHRoZSBj
aGFyYWN0ZXJzIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+LCArMSBpZiB0aGUKKyAgICogY2hhcmFj
dGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0ZXIgdGhhbiB0aGUgY2hhcmFjdGVycworICAg
KiBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPi4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICAgaW5saW5lIGludDhfdCBjb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQzMl90
IGxlbmd0aCwKKyAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAg
ICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Owor
CisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhpcyBVbmlj
b2RlU3RyaW5nIHdpdGggdGhlIGZpcnN0CisgICAqIDxUVD5zcmNMZW5ndGg8L1RUPiBjaGFyYWN0
ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIGNoYXJh
Y3RlcnMgdG8gY29tcGFyZSB0byB0aGlzIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSBzcmNM
ZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IHRvIGNv
bXBhcmUKKyAgICogQHJldHVybiBUaGUgcmVzdWx0IG9mIGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBh
cmlzb246IDAgaWYgdGhpcworICAgKiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxj
b2RlPnNyY0NoYXJzPC9jb2RlPiwgLTEgaWYgdGhlIGNoYXJhY3RlcnMgaW4KKyAgICogdGhpcyBh
cmUgYml0d2lzZSBsZXNzIHRoYW4gdGhlIGNoYXJhY3RlcnMgaW4gPGNvZGU+c3JjQ2hhcnM8L2Nv
ZGU+LCArMSBpZiB0aGUKKyAgICogY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0
ZXIgdGhhbiB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8Y29kZT5zcmNDaGFyczwvY29kZT4uCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlKGNvbnN0
IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKKwor
ICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hhcmFjdGVycyBiaXR3aXNlIGluIHRoZSByYW5nZQor
ICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBm
aXJzdAorICAgKiA8VFQ+bGVuZ3RoPC9UVD4gY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RU
PgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVy
YXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IHRvIGNvbXBhcmUuCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUgY2hhcmFjdGVycyB0byBiZSBj
b21wYXJlZAorICAgKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29t
cGFyaXNvbjogMCBpZiB0aGlzCisgICAqIGNvbnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMg
PGNvZGU+c3JjQ2hhcnM8L2NvZGU+LCAtMSBpZiB0aGUgY2hhcmFjdGVycyBpbgorICAgKiB0aGlz
IGFyZSBiaXR3aXNlIGxlc3MgdGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT5zcmNDaGFyczwv
Y29kZT4sICsxIGlmIHRoZQorICAgKiBjaGFyYWN0ZXJzIGluIHRoaXMgYXJlIGJpdHdpc2UgZ3Jl
YXRlciB0aGFuIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxjb2RlPnNyY0NoYXJzPC9jb2RlPi4K
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBhcmUoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVUNo
YXIgKnNyY0NoYXJzKSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hhcmFjdGVy
cyBiaXR3aXNlIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCAr
IGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD5zcmNDaGFyczwv
VFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCAr
IHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2gg
dGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiB0aGlzIHRvIGNvbXBhcmUKKyAgICogQHBhcmFtIHNyY0NoYXJz
IHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGNvbXBhcmVkCisgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUg
b2Zmc2V0IGludG8gPFRUPnNyY0NoYXJzPC9UVD4gdG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBA
cGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8
L1RUPiB0byBjb21wYXJlCisgICAqIEByZXR1cm4gVGhlIHJlc3VsdCBvZiBiaXR3aXNlIGNoYXJh
Y3RlciBjb21wYXJpc29uOiAwIGlmIHRoaXMKKyAgICogY29udGFpbnMgdGhlIHNhbWUgY2hhcmFj
dGVycyBhcyA8Y29kZT5zcmNDaGFyczwvY29kZT4sIC0xIGlmIHRoZSBjaGFyYWN0ZXJzIGluCisg
ICAqIHRoaXMgYXJlIGJpdHdpc2UgbGVzcyB0aGFuIHRoZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnNy
Y0NoYXJzPC9jb2RlPiwgKzEgaWYgdGhlCisgICAqIGNoYXJhY3RlcnMgaW4gdGhpcyBhcmUgYml0
d2lzZSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPGNvZGU+c3JjQ2hhcnM8
L2NvZGU+LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29t
cGFyZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICBj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBj
aGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRU
PmxpbWl0PC9UVD4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RU
PiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjTGltaXQ8L1RU
PikuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9w
ZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkg
Zm9sbG93aW5nIHRoZSBjb21wYXJlIG9wZXJhdGlvbgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUg
dGV4dCB0byBiZSBjb21wYXJlZAorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRv
IDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBAcGFyYW0gc3JjTGlt
aXQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gbGltaXQgY29tcGFyaXNvbgor
ICAgKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29tcGFyaXNvbjog
MCBpZiB0aGlzCisgICAqIGNvbnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgPGNvZGU+c3Jj
VGV4dDwvY29kZT4sIC0xIGlmIHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIHRoaXMgYXJlIGJpdHdp
c2UgbGVzcyB0aGFuIHRoZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+LCArMSBp
ZiB0aGUKKyAgICogY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0ZXIgdGhhbiB0
aGUgY2hhcmFjdGVycworICAgKiBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPi4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBhcmVCZXR3ZWVuKGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgY29uc3QgVW5p
Y29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAg
ICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0
d28gVW5pY29kZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIuCisgICAqIFRoZSByZXN1bHQg
bWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSByZXN1bHRzIG9mIGNvbXBhcmUoKSwgb3BlcmF0b3I8
LCBldGMuCisgICAqIGlmIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBhcmUgcHJlc2VudDoKKyAg
ICoKKyAgICogSW4gVVRGLTE2LCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgKHdpdGggY29kZSBw
b2ludHMgVSsxMDAwMCBhbmQgYWJvdmUpIGFyZQorICAgKiBzdG9yZWQgd2l0aCBwYWlycyBvZiBz
dXJyb2dhdGUgY29kZSB1bml0cy4gVGhlc2UgaGF2ZSB2YWx1ZXMgZnJvbSAweGQ4MDAgdG8gMHhk
ZmZmLAorICAgKiB3aGljaCBtZWFucyB0aGF0IHRoZXkgY29tcGFyZSBhcyBsZXNzIHRoYW4gc29t
ZSBvdGhlciBCTVAgY2hhcmFjdGVycyBsaWtlIFUrZmVmZi4KKyAgICogVGhpcyBmdW5jdGlvbiBj
b21wYXJlcyBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogSWYgZWl0
aGVyIG9mIHRoZSBVVEYtMTYgc3RyaW5ncyBpcyBtYWxmb3JtZWQgKGkuZS4sIGl0IGNvbnRhaW5z
IHVucGFpcmVkIHN1cnJvZ2F0ZXMpLCB0aGVuIHRoZSByZXN1bHQgaXMgbm90IGRlZmluZWQuCisg
ICAqCisgICAqIEBwYXJhbSB0ZXh0IEFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUg
dG8uCisgICAqIEByZXR1cm4gYSBuZWdhdGl2ZS96ZXJvL3Bvc2l0aXZlIGludGVnZXIgY29ycmVz
cG9uZGluZyB0byB3aGV0aGVyCisgICAqIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbi9lcXVhbCB0
by9ncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvbmUKKyAgICogaW4gY29kZSBwb2ludCBvcmRlcgor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQ
b2ludE9yZGVyKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAg
KiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICog
VGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgp
LCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBw
cmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAo
d2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRo
IHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4
ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxl
c3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlz
IGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgor
ICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwg
aXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3Qg
ZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhp
cyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBh
cmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0byBj
b21wYXJlLgorICAgKiBAcGFyYW0gc3JjVGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRo
aXMgb25lIHRvLgorICAgKiBAcmV0dXJuIGEgbmVnYXRpdmUvemVyby9wb3NpdGl2ZSBpbnRlZ2Vy
IGNvcnJlc3BvbmRpbmcgdG8gd2hldGhlcgorICAgKiB0aGlzIHN0cmluZyBpcyBsZXNzIHRoYW4v
ZXF1YWwgdG8vZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQgb25lCisgICAqIGluIGNvZGUgcG9pbnQg
b3JkZXIKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBh
cmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkgY29uc3Q7CisKKyAgLyoq
CisgICAqIENvbXBhcmUgdHdvIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgor
ICAgKiBUaGUgcmVzdWx0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcmVzdWx0cyBvZiBjb21w
YXJlKCksIG9wZXJhdG9yPCwgZXRjLgorICAgKiBpZiBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMg
YXJlIHByZXNlbnQ6CisgICAqCisgICAqIEluIFVURi0xNiwgc3VwcGxlbWVudGFyeSBjaGFyYWN0
ZXJzICh3aXRoIGNvZGUgcG9pbnRzIFUrMTAwMDAgYW5kIGFib3ZlKSBhcmUKKyAgICogc3RvcmVk
IHdpdGggcGFpcnMgb2Ygc3Vycm9nYXRlIGNvZGUgdW5pdHMuIFRoZXNlIGhhdmUgdmFsdWVzIGZy
b20gMHhkODAwIHRvIDB4ZGZmZiwKKyAgICogd2hpY2ggbWVhbnMgdGhhdCB0aGV5IGNvbXBhcmUg
YXMgbGVzcyB0aGFuIHNvbWUgb3RoZXIgQk1QIGNoYXJhY3RlcnMgbGlrZSBVK2ZlZmYuCisgICAq
IFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgVW5pY29kZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3Jk
ZXIuCisgICAqIElmIGVpdGhlciBvZiB0aGUgVVRGLTE2IHN0cmluZ3MgaXMgbWFsZm9ybWVkIChp
LmUuLCBpdCBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzKSwgdGhlbiB0aGUgcmVzdWx0IGlz
IG5vdCBkZWZpbmVkLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IG9mZnNldCBp
biB0aGlzIHN0cmluZyBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVyYXRpb24gYmVnaW5zLgorICAg
KiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY29kZSB1bml0cyBmcm9tIHRoaXMgc3RyaW5n
IHRvIGNvbXBhcmUuCisgICAqIEBwYXJhbSBzcmNUZXh0IEFub3RoZXIgc3RyaW5nIHRvIGNvbXBh
cmUgdGhpcyBvbmUgdG8uCisgICAqIEBwYXJhbSBzcmNTdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGlu
IHRoYXQgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAq
IEBwYXJhbSBzcmNMZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhhdCBzdHJp
bmcgdG8gY29tcGFyZS4KKyAgICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50
ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIKKyAgICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0
aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICAgKiBpbiBjb2RlIHBv
aW50IG9yZGVyCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgIGlubGluZSBpbnQ4X3Qg
Y29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0
OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2lu
dCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3Vs
dHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBj
aGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRh
cnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisg
ICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZl
IHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhl
eSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStm
ZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2Rl
IHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1h
bGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhl
IHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9p
bnRlciB0byBhbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFy
YW0gc3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY29kZSB1bml0cyBmcm9tIHRoYXQgc3RyaW5nIHRv
IGNvbXBhcmUuCisgICAqIEByZXR1cm4gYSBuZWdhdGl2ZS96ZXJvL3Bvc2l0aXZlIGludGVnZXIg
Y29ycmVzcG9uZGluZyB0byB3aGV0aGVyCisgICAqIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbi9l
cXVhbCB0by9ncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvbmUKKyAgICogaW4gY29kZSBwb2ludCBv
cmRlcgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFy
ZUNvZGVQb2ludE9yZGVyKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgor
ICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAg
ICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFy
ZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFy
ZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVy
cyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3
aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9t
IDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFz
IGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBU
aGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVy
LgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5l
LiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBu
b3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4g
dGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICog
QHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0
byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgQSBwb2ludGVyIHRvIGFub3RoZXIgc3Ry
aW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8uCisgICAqIEByZXR1cm4gYSBuZWdhdGl2ZS96ZXJv
L3Bvc2l0aXZlIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB3aGV0aGVyCisgICAqIHRoaXMgc3Ry
aW5nIGlzIGxlc3MgdGhhbi9lcXVhbCB0by9ncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvbmUKKyAg
ICogaW4gY29kZSBwb2ludCBvcmRlcgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlu
bGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMpIGNvbnN0
OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2lu
dCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3Vs
dHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBj
aGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRh
cnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisg
ICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZl
IHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhl
eSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStm
ZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2Rl
IHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1h
bGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhl
IHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFy
dCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJl
Z2lucy4KKyAgICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0
aGlzIHN0cmluZyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgQSBwb2ludGVyIHRv
IGFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8uCisgICAqIEBwYXJhbSBzcmNT
dGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoYXQgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJl
IG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIG51bWJlciBvZiBj
b2RlIHVuaXRzIGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHJldHVybiBhIG5l
Z2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIKKyAg
ICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhhbiB0aGUgc2Vj
b25kIG9uZQorICAgKiBpbiBjb2RlIHBvaW50IG9yZGVyCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmND
aGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3Mg
aW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZy
b20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3Vw
cGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYs
IHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBh
Ym92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRz
LiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1l
YW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0
ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3Ry
aW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBz
dHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRl
cyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0
YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUg
b3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIGxpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIgdGhl
IGxhc3QgY29kZSB1bml0IGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFt
IHNyY1RleHQgQW5vdGhlciBzdHJpbmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICogQHBh
cmFtIHNyY1N0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2ggdGhl
IGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIHNyY0xpbWl0IFRoZSBvZmZz
ZXQgYWZ0ZXIgdGhlIGxhc3QgY29kZSB1bml0IGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFyZS4K
KyAgICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25k
aW5nIHRvIHdoZXRoZXIKKyAgICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dy
ZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICAgKiBpbiBjb2RlIHBvaW50IG9yZGVyCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlQ29kZVBvaW50
T3JkZXJCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNy
Y0xpbWl0KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0d28gc3RyaW5ncyBjYXNlLWlu
c2Vuc2l0aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRpbmcuCisgICAqIFRoaXMgaXMgZXF1aXZh
bGVudCB0byB0aGlzLT5mb2xkQ2FzZShvcHRpb25zKS5jb21wYXJlKHRleHQuZm9sZENhc2Uob3B0
aW9ucykpLgorICAgKgorICAgKiBAcGFyYW0gdGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21wYXJl
IHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9uczoK
KyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9w
dGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRlZmF1
bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRfT1JE
RVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNv
ZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgor
ICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAgICog
QHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcg
dGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlu
bGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwgdWludDMy
X3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2Fz
ZS1pbnNlbnNpdGl2ZWx5IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlzIGVx
dWl2YWxlbnQgdG8gdGhpcy0+Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNUZXh0LmZvbGRD
YXNlKG9wdGlvbnMpKS4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQg
aW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAg
ICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmlu
ZyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjVGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21w
YXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9u
czoKKyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0
IG9wdGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRl
ZmF1bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRf
T1JERVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9m
IGNvZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMp
LgorICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAg
ICogQHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRp
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAg
ICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBz
dHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAgICog
VGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoaXMtPmZvbGRDYXNlKG9wdGlvbnMpLmNvbXBhcmUoc3Jj
VGV4dC5mb2xkQ2FzZShvcHRpb25zKSkuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3Rh
cnQgb2Zmc2V0IGluIHRoaXMgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBi
ZWdpbnMuCisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20g
dGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHNyY1RleHQgQW5vdGhlciBzdHJp
bmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IFRoZSBzdGFy
dCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJl
Z2lucy4KKyAgICogQHBhcmFtIHNyY0xlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJv
bSB0aGF0IHN0cmluZyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQg
b2Ygb3B0aW9uczoKKyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZv
ciBkZWZhdWx0IG9wdGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRl
ciB3aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NP
REVfUE9JTlRfT1JERVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBp
bnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9y
IGRldGFpbHMpLgorICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kK
KyAgICoKKyAgICogQHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2Vy
IGluZGljYXRpbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4
dCwKKyAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCwKKyAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21w
YXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGlu
Zy4KKyAgICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoaXMtPmZvbGRDYXNlKG9wdGlvbnMpLmNv
bXBhcmUoc3JjQ2hhcnMuZm9sZENhc2Uob3B0aW9ucykpLgorICAgKgorICAgKiBAcGFyYW0gc3Jj
Q2hhcnMgQSBwb2ludGVyIHRvIGFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8u
CisgICAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhh
dCBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9mIG9w
dGlvbnM6CisgICAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVm
YXVsdCBvcHRpb25zOgorICAgKiAgICAgQ29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIgd2l0
aCBkZWZhdWx0IGNhc2UgZm9sZGluZy4KKyAgICoKKyAgICogICAtIFVfQ09NUEFSRV9DT0RFX1BP
SU5UX09SREVSCisgICAqICAgICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVh
ZCBvZiBjb2RlIHVuaXQgb3JkZXIKKyAgICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRh
aWxzKS4KKyAgICoKKyAgICogICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgICAq
CisgICAqIEByZXR1cm4gQSBuZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRp
Y2F0aW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgaW50OF90IGNhc2VDb21wYXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29u
c3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5
IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhp
cy0+Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNDaGFycy5mb2xkQ2FzZShvcHRpb25zKSku
CisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoaXMgc3RyaW5n
IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJhbSBsZW5n
dGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4K
KyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9pbnRlciB0byBhbm90aGVyIHN0cmluZyB0byBjb21w
YXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9u
czoKKyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0
IG9wdGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRl
ZmF1bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRf
T1JERVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9m
IGNvZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMp
LgorICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAg
ICogQHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRp
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgdWlu
dDMyX3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3Mg
Y2FzZS1pbnNlbnNpdGl2ZWx5IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlz
IGVxdWl2YWxlbnQgdG8gdGhpcy0+Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNDaGFycy5m
b2xkQ2FzZShvcHRpb25zKSkuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2Zm
c2V0IGluIHRoaXMgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMu
CisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhpcyBz
dHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9pbnRlciB0byBhbm90
aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gc3JjU3RhcnQg
VGhlIHN0YXJ0IG9mZnNldCBpbiB0aGF0IHN0cmluZyBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVy
YXRpb24gYmVnaW5zLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY29kZSB1
bml0cyBmcm9tIHRoYXQgc3RyaW5nIHRvIGNvbXBhcmUuCisgICAqIEBwYXJhbSBvcHRpb25zIEEg
Yml0IHNldCBvZiBvcHRpb25zOgorICAgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlz
IHVzZWQgZm9yIGRlZmF1bHQgb3B0aW9uczoKKyAgICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1
bml0IG9yZGVyIHdpdGggZGVmYXVsdCBjYXNlIGZvbGRpbmcuCisgICAqCisgICAqICAgLSBVX0NP
TVBBUkVfQ09ERV9QT0lOVF9PUkRFUgorICAgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50
IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyCisgICAqICAgICAoc2VlIHVfc3RyQ29t
cGFyZSBmb3IgZGV0YWlscykuCisgICAqCisgICAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQ
RUNJQUxfSQorICAgKgorICAgKiBAcmV0dXJuIEEgbmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZl
IGludGVnZXIgaW5kaWNhdGluZyB0aGUgY29tcGFyaXNvbiByZXN1bHQuCisgICAqIEBzdGFibGUg
SUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjYXNlQ29tcGFyZShpbnQzMl90IHN0YXJ0
LAorICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgsCisgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdDsKKworICAvKioKKyAgICogQ29t
cGFyZSB0d28gc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRp
bmcuCisgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGlzLT5mb2xkQ2FzZShvcHRpb25zKS5j
b21wYXJlQmV0d2Vlbih0ZXh0LmZvbGRDYXNlKG9wdGlvbnMpKS4KKyAgICoKKyAgICogQHBhcmFt
IHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBh
cmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIGxpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIg
dGhlIGxhc3QgY29kZSB1bml0IGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBh
cmFtIHNyY1RleHQgQW5vdGhlciBzdHJpbmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICog
QHBhcmFtIHNyY1N0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2gg
dGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIHNyY0xpbWl0IFRoZSBv
ZmZzZXQgYWZ0ZXIgdGhlIGxhc3QgY29kZSB1bml0IGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFy
ZS4KKyAgICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9mIG9wdGlvbnM6CisgICAqICAgLSBV
X0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVmYXVsdCBvcHRpb25zOgorICAg
KiAgICAgQ29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIgd2l0aCBkZWZhdWx0IGNhc2UgZm9s
ZGluZy4KKyAgICoKKyAgICogICAtIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisgICAqICAg
ICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3Jk
ZXIKKyAgICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxzKS4KKyAgICoKKyAgICog
ICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgICAqCisgICAqIEByZXR1cm4gQSBu
ZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90
IGNhc2VDb21wYXJlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBs
aW1pdCwKKyAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAg
ICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMaW1pdCwKKyAg
ICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1p
bmUgaWYgdGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+Cisg
ICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIG1hdGNoLgorICAgKiBAcmV0dXJuIFRSVUUgaWYg
dGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBG
QUxTRSBvdGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJv
b2wgc3RhcnRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioK
KyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgc3RhcnRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRU
PnNyY1RleHQ8L1RUPgorICAgKiBpbiB0aGUgcmFuZ2UgWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+
c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikuCisgICAqIEBwYXJhbSBzcmNUZXh0IFRoZSB0ZXh0
IHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNU
ZXh0PC9UVD4gdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVt
YmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiB0byBtYXRjaAorICAgKiBAcmV0
dXJuIFRSVUUgaWYgdGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwv
VFQ+LAorICAgKiBGQUxTRSBvdGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBpbmxpbmUgVUJvb2wgc3RhcnRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAor
ICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoKSBjb25zdDsKKworICAvKioKKyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgc3RhcnRzIHdpdGgg
dGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogQHBhcmFtIHNyY0NoYXJz
IFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPgorICAgKiBAcmV0dXJuIFRSVUUg
aWYgdGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiwK
KyAgICogRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5s
aW5lIFVCb29sIHN0YXJ0c1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhp
cyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4g
dGhlIHJhbmdlICBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwv
VFQ+KS4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgorICAg
KiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gc3Rh
cnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gKKyAgICogQHJldHVybiBUUlVFIGlmIHRo
aXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LCBGQUxTRSBv
dGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgc3Rh
cnRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAg
KiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnRleHQ8
L1RUPgorICAgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBtYXRjaC4KKyAgICogQHJldHVybiBU
UlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4sCisg
ICAqIEZBTFNFIG90aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBVQm9vbCBlbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAv
KioKKyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxU
VD5zcmNUZXh0PC9UVD4KKyAgICogaW4gdGhlIHJhbmdlIFs8VFQ+c3JjU3RhcnQ8L1RUPiwgPFRU
PnNyY1N0YXJ0ICsgc3JjTGVuZ3RoPC9UVD4pLgorICAgKiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4
dCB0byBtYXRjaC4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3Jj
VGV4dDwvVFQ+IHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gdG8gbWF0Y2gKKyAgICogQHJl
dHVybiBUUlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9U
VD4sCisgICAqIEZBTFNFIG90aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSBVQm9vbCBlbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNv
bnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNoYXJh
Y3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSBjaGFy
YWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhpcyBl
bmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIEZBTFNF
IG90aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBl
bmRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhl
IGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4gdGhlIHJhbmdlICBbPFRU
PnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogQHBh
cmFtIHNyY0NoYXJzIFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjU3Rh
cnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQgbWF0Y2hpbmcKKyAg
ICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0No
YXJzPC9UVD4gdG8gbWF0Y2gKKyAgICogQHJldHVybiBUUlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRo
ZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LAorICAgKiBGQUxTRSBvdGhlcndpc2UK
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgZW5kc1dpdGgoY29u
c3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisKKyAgLyogU2VhcmNoaW5nIC0gYml0d2lz
ZSBvbmx5ICovCisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJl
bmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4sCisgICAqIHVzaW5nIGJpdHdp
c2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4K
KyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRl
eHQ8L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIGlubGluZSBpbnQzMl90IGluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4
dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJl
bmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4KKyAgICogc3RhcnRpbmcgYXQg
b2Zmc2V0IDxUVD5zdGFydDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBw
YXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUg
b2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBv
ZmZzZXQgaW50byB0aGlzIG9mIHRoZSBzdGFydCBvZiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBvciAt
MSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGlu
dDMyX3QgaW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0KSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGZp
cnN0IG9jY3VycmVuY2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0
YXJ0ICsgbGVuZ3RoPC9UVD4pIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD50ZXh0PC9U
VD4sIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHRleHQgVGhlIHRleHQg
dG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBvZmZzZXQgYXQgd2hpY2ggc2Vh
cmNoaW5nIHdpbGwgc3RhcnQuCisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIHRvIHNlYXJjaAorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIHRo
ZSBzdGFydCBvZiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBvciAtMSBpZiBub3QgZm91bmQuCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0
aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9U
VD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSBvZiB0aGUgY2hhcmFjdGVycworICAgKiAgaW4g
PFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8
VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPiksCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFy
aXNvbi4KKyAgICogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICog
QHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IGF0IHdoaWNo
CisgICAqIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJl
ciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gdG8gbWF0Y2gKKyAgICogQHBhcmFt
IHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisg
ICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gc2Vh
cmNoCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxU
VD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0
aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIDxUVD5z
cmNDaGFyczwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNp
bmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIHRleHQgdG8g
c2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gKKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBv
ZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEByZXR1cm4g
VGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAq
IG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxp
bmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0Owor
CisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBpbiB0aGUg
cmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgb2Yg
dGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY0NoYXJzPC9UVD4sIHVzaW5nIGJpdHdpc2Ug
Y29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3Iu
CisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5z
cmNDaGFyczwvVFQ+CisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNlYXJj
aGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUg
c3RhcnQgb2YgPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKGNvbnN0
IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAg
ICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBj
b25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGZpcnN0IG9jY3VycmVuY2Ug
aW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9U
VD4pIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSBy
YW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwv
VFQ+KSwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3JjQ2hh
cnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZz
ZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiBhdCB3aGljaAorICAgKiB0byBzdGFydCBtYXRjaGlu
ZworICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+
c3JjQ2hhcnM8L1RUPiB0byBtYXRjaAorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBpbnRv
IHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUg
b2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3Ig
LTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGludDMyX3Qg
aW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAg
LyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBCTVAg
Y29kZSBwb2ludCA8Y29kZT5jPC9jb2RlPiwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29u
LgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0IHRvIHNlYXJjaCBmb3IuCisgICAqIEByZXR1
cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5k
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGluZGV4T2Yo
VUNoYXIgYykgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBv
Y2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4sCisgICAqIHVzaW5nIGJpdHdp
c2UgY29tcGFyaXNvbi4KKyAgICoKKyAgICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gc2Vh
cmNoIGZvci4KKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+
LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5s
aW5lIGludDMyX3QgaW5kZXhPZihVQ2hhcjMyIGMpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2Nh
dGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUgcG9pbnQgPGNv
ZGU+YzwvY29kZT4sCisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNp
bmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0IHRvIHNl
YXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGlu
ZyB3aWxsIHN0YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIDxUVD5j
PC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKFVDaGFyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2Nj
dXJyZW5jZSBvZiB0aGUgY29kZSBwb2ludCA8VFQ+YzwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9m
ZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKgorICAg
KiBAcGFyYW0gYyBUaGUgY29kZSBwb2ludCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3Rh
cnQgVGhlIG9mZnNldCBhdCB3aGljaCBzZWFyY2hpbmcgd2lsbCBzdGFydC4KKyAgICogQHJldHVy
biBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQu
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihV
Q2hhcjMyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgor
ICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUg
cG9pbnQgPGNvZGU+YzwvY29kZT4KKyAgICogaW4gdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwg
PFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLAorICAgKiB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24u
CisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHVuaXQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFt
IHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisg
ICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gc2Vh
cmNoCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3Ig
LTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBp
bnQzMl90IGluZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUg
aW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29kZSBwb2ludCA8VFQ+YzwvVFQ+
CisgICAqIGluIHRoZSByYW5nZSBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwv
VFQ+KSwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKgorICAgKiBAcGFyYW0g
YyBUaGUgY29kZSBwb2ludCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9m
ZnNldCBpbnRvIHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxl
bmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJl
dHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91
bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhP
ZihVQ2hhcjMyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAg
IGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhl
IGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+LAorICAg
KiB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRv
IHNlYXJjaCBmb3IuCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0
YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMg
dGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+Cisg
ICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21w
YXJpc29uLgorICAgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBzZWFyY2ggZm9yLgorICAgKiBA
cGFyYW0gc3RhcnQgVGhlIG9mZnNldCBhdCB3aGljaCBzZWFyY2hpbmcgd2lsbCBzdGFydC4KKyAg
ICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8
L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRl
eHQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBM
b2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIGluIHRoZSByYW5nZQorICAgKiBbPFRU
PnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSBvZiB0aGUgY2hhcmFjdGVycwor
ICAgKiBpbiA8VFQ+dGV4dDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBw
YXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUg
b2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3Ro
IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zm
c2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3IgLTEg
aWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQz
Ml90IGxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAg
IGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKwor
ICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBpbiB0aGUgcmFu
Z2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgb2YgdGhl
IGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICog
WzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPiksCisgICAq
IHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQg
dG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+
c3JjVGV4dDwvVFQ+IGF0IHdoaWNoCisgICAqIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJh
bSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4g
dG8gbWF0Y2gKKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNo
IHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIHRoaXMgdG8gc2VhcmNoCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRo
aXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3Vu
ZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5k
ZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAg
ICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0Owor
CisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBj
aGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8
VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3Jj
Q2hhcnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gKKyAgICog
QHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNo
aW5nCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxU
VD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0KSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxh
c3Qgb2NjdXJyZW5jZSBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3Rh
cnQgKyBsZW5ndGg8L1RUPikgb2YgdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY0NoYXJz
PC9UVD4sIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRo
ZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+CisgICAqIEBwYXJhbSBzdGFydCBUaGUg
b2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3Ro
IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zm
c2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIG9y
IC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUg
aW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0
aGlzIHRoZSBsYXN0IG9jY3VycmVuY2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RU
PiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxU
VD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxU
VD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KSwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJp
c29uLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICog
QHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiBhdCB3aGlj
aAorICAgKiB0byBzdGFydCBtYXRjaGluZworICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiB0byBtYXRjaAorICAgKiBAcGFy
YW0gc3RhcnQgdGhlIG9mZnNldCBpbnRvIHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcK
KyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBz
ZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2Yg
PFRUPnRleHQ8L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGludDMyX3QgbGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
aW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUg
bGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBCTVAgY29kZSBwb2ludCA8Y29kZT5jPC9jb2RlPiwKKyAg
ICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0
IHRvIHNlYXJjaCBmb3IuCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRU
PmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKFVDaGFyIGMpIGNvbnN0OworCisgIC8qKgor
ICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50
IDxUVD5jPC9UVD4sCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICoKKyAgICog
QHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gc2VhcmNoIGZvci4KKyAgICogQHJldHVybiBUaGUg
b2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoVUNo
YXIzMiBjKSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2Nj
dXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUgcG9pbnQgPGNvZGU+YzwvY29kZT4KKyAgICogc3RhcnRp
bmcgYXQgb2Zmc2V0IDxUVD5zdGFydDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisg
ICAqIEBwYXJhbSBjIFRoZSBjb2RlIHVuaXQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHN0
YXJ0IFRoZSBvZmZzZXQgYXQgd2hpY2ggc2VhcmNoaW5nIHdpbGwgc3RhcnQuCisgICAqIEByZXR1
cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5k
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRl
eE9mKFVDaGFyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8q
KgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBv
aW50IDxUVD5jPC9UVD4KKyAgICogc3RhcnRpbmcgYXQgb2Zmc2V0IDxUVD5zdGFydDwvVFQ+LCB1
c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqCisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHBv
aW50IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNo
IHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlz
IG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhcjMyIGMsCisgICAgICAg
ICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhp
cyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBCTVAgY29kZSBwb2ludCA8Y29kZT5jPC9jb2Rl
PgorICAgKiBpbiB0aGUgcmFuZ2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8
L1RUPiksCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIGMgVGhl
IGNvZGUgdW5pdCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBp
bnRvIHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0aCB0
aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVybiBU
aGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2Yo
VUNoYXIgYywKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50
MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFz
dCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4KKyAgICogaW4gdGhlIHJh
bmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLAorICAgKiB1c2lu
ZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqCisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50
IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGludG8gdGhpcyBh
dCB3aGljaCB0byBzdGFydCBtYXRjaGluZworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyBpbiB0aGlzIHRvIHNlYXJjaAorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQg
aW50byB0aGlzIG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhcjMyIGMs
CisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoKSBjb25zdDsKKworCisgIC8qIENoYXJhY3RlciBhY2Nlc3MgKi8KKworICAvKioKKyAgICog
UmV0dXJuIHRoZSBjb2RlIHVuaXQgYXQgb2Zmc2V0IDx0dD5vZmZzZXQ8L3R0Pi4KKyAgICogSWYg
dGhlIG9mZnNldCBpcyBub3QgdmFsaWQgKDAuLmxlbmd0aCgpLTEpIHRoZW4gVStmZmZmIGlzIHJl
dHVybmVkLgorICAgKiBAcGFyYW0gb2Zmc2V0IGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQK
KyAgICogQHJldHVybiB0aGUgY29kZSB1bml0IGF0IG9mZnNldCA8dHQ+b2Zmc2V0PC90dD4KKyAg
ICogICAgICAgICBvciAweGZmZmYgaWYgdGhlIG9mZnNldCBpcyBub3QgdmFsaWQgZm9yIHRoaXMg
c3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVDaGFyIGNoYXJB
dChpbnQzMl90IG9mZnNldCkgY29uc3Q7CisKKyAgLyoqCisgICAqIFJldHVybiB0aGUgY29kZSB1
bml0IGF0IG9mZnNldCA8dHQ+b2Zmc2V0PC90dD4uCisgICAqIElmIHRoZSBvZmZzZXQgaXMgbm90
IHZhbGlkICgwLi5sZW5ndGgoKS0xKSB0aGVuIFUrZmZmZiBpcyByZXR1cm5lZC4KKyAgICogQHBh
cmFtIG9mZnNldCBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisgICAqIEByZXR1cm4gdGhl
IGNvZGUgdW5pdCBhdCBvZmZzZXQgPHR0Pm9mZnNldDwvdHQ+CisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIFVDaGFyIG9wZXJhdG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25z
dDsKKworICAvKioKKyAgICogUmV0dXJuIHRoZSBjb2RlIHBvaW50IHRoYXQgY29udGFpbnMgdGhl
IGNvZGUgdW5pdAorICAgKiBhdCBvZmZzZXQgPHR0Pm9mZnNldDwvdHQ+LgorICAgKiBJZiB0aGUg
b2Zmc2V0IGlzIG5vdCB2YWxpZCAoMC4ubGVuZ3RoKCktMSkgdGhlbiBVK2ZmZmYgaXMgcmV0dXJu
ZWQuCisgICAqIEBwYXJhbSBvZmZzZXQgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorICAg
KiB0aGF0IGluZGljYXRlcyB0aGUgdGV4dCBvZmZzZXQgb2YgYW55IG9mIHRoZSBjb2RlIHVuaXRz
CisgICAqIHRoYXQgd2lsbCBiZSBhc3NlbWJsZWQgaW50byBhIGNvZGUgcG9pbnQgKDIxLWJpdCB2
YWx1ZSkgYW5kIHJldHVybmVkCisgICAqIEByZXR1cm4gdGhlIGNvZGUgcG9pbnQgb2YgdGV4dCBh
dCA8dHQ+b2Zmc2V0PC90dD4KKyAgICogICAgICAgICBvciAweGZmZmYgaWYgdGhlIG9mZnNldCBp
cyBub3QgdmFsaWQgZm9yIHRoaXMgc3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8K
KyAgaW5saW5lIFVDaGFyMzIgY2hhcjMyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0OworCisgIC8q
KgorICAgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNldCBzbyB0aGF0CisgICAqIGl0IHBv
aW50cyB0byB0aGUgYmVnaW5uaW5nIG9mIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAqIFRoZSBv
ZmZzZXQgdGhhdCBpcyBwYXNzZWQgaW4gcG9pbnRzIHRvCisgICAqIGFueSBjb2RlIHVuaXQgb2Yg
YSBjb2RlIHBvaW50LAorICAgKiB3aGlsZSB0aGUgcmV0dXJuZWQgb2Zmc2V0IHdpbGwgcG9pbnQg
dG8gdGhlIGZpcnN0IGNvZGUgdW5pdAorICAgKiBvZiB0aGUgc2FtZSBjb2RlIHBvaW50LgorICAg
KiBJbiBVVEYtMTYsIGlmIHRoZSBpbnB1dCBvZmZzZXQgcG9pbnRzIHRvIGEgc2Vjb25kIHN1cnJv
Z2F0ZQorICAgKiBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCB0aGVuIHRoZSByZXR1cm5lZCBvZmZzZXQg
d2lsbCBwb2ludAorICAgKiB0byB0aGUgZmlyc3Qgc3Vycm9nYXRlLgorICAgKiBAcGFyYW0gb2Zm
c2V0IGEgdmFsaWQgb2Zmc2V0IGludG8gb25lIGNvZGUgcG9pbnQgb2YgdGhlIHRleHQKKyAgICog
QHJldHVybiBvZmZzZXQgb2YgdGhlIGZpcnN0IGNvZGUgdW5pdCBvZiB0aGUgc2FtZSBjb2RlIHBv
aW50CisgICAqIEBzZWUgVTE2X1NFVF9DUF9TVEFSVAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBpbnQzMl90IGdldENoYXIzMlN0YXJ0KGludDMyX3Qgb2Zmc2V0KSBjb25z
dDsKKworICAvKioKKyAgICogQWRqdXN0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQgc28gdGhhdAor
ICAgKiBpdCBwb2ludHMgYmVoaW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAqIFRoZSBvZmZz
ZXQgdGhhdCBpcyBwYXNzZWQgaW4gcG9pbnRzIGJlaGluZAorICAgKiBhbnkgY29kZSB1bml0IG9m
IGEgY29kZSBwb2ludCwKKyAgICogd2hpbGUgdGhlIHJldHVybmVkIG9mZnNldCB3aWxsIHBvaW50
IGJlaGluZCB0aGUgbGFzdCBjb2RlIHVuaXQKKyAgICogb2YgdGhlIHNhbWUgY29kZSBwb2ludC4K
KyAgICogSW4gVVRGLTE2LCBpZiB0aGUgaW5wdXQgb2Zmc2V0IHBvaW50cyBiZWhpbmQgdGhlIGZp
cnN0IHN1cnJvZ2F0ZQorICAgKiAoaS5lLiwgdG8gdGhlIHNlY29uZCBzdXJyb2dhdGUpCisgICAq
IG9mIGEgc3Vycm9nYXRlIHBhaXIsIHRoZW4gdGhlIHJldHVybmVkIG9mZnNldCB3aWxsIHBvaW50
CisgICAqIGJlaGluZCB0aGUgc2Vjb25kIHN1cnJvZ2F0ZSAoaS5lLiwgdG8gdGhlIGZpcnN0IHN1
cnJvZ2F0ZSkuCisgICAqIEBwYXJhbSBvZmZzZXQgYSB2YWxpZCBvZmZzZXQgYWZ0ZXIgYW55IGNv
ZGUgdW5pdCBvZiBhIGNvZGUgcG9pbnQgb2YgdGhlIHRleHQKKyAgICogQHJldHVybiBvZmZzZXQg
b2YgdGhlIGZpcnN0IGNvZGUgdW5pdCBhZnRlciB0aGUgc2FtZSBjb2RlIHBvaW50CisgICAqIEBz
ZWUgVTE2X1NFVF9DUF9MSU1JVAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBpbnQzMl90IGdldENoYXIzMkxpbWl0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKworICAvKioK
KyAgICogTW92ZSB0aGUgY29kZSB1bml0IGluZGV4IGFsb25nIHRoZSBzdHJpbmcgYnkgZGVsdGEg
Y29kZSBwb2ludHMuCisgICAqIEludGVycHJldCB0aGUgaW5wdXQgaW5kZXggYXMgYSBjb2RlIHVu
aXQtYmFzZWQgb2Zmc2V0IGludG8gdGhlIHN0cmluZywKKyAgICogbW92ZSB0aGUgaW5kZXggZm9y
d2FyZCBvciBiYWNrd2FyZCBieSBkZWx0YSBjb2RlIHBvaW50cywgYW5kCisgICAqIHJldHVybiB0
aGUgcmVzdWx0aW5nIGluZGV4LgorICAgKiBUaGUgaW5wdXQgaW5kZXggc2hvdWxkIHBvaW50IHRv
IHRoZSBmaXJzdCBjb2RlIHVuaXQgb2YgYSBjb2RlIHBvaW50LAorICAgKiBpZiB0aGVyZSBpcyBt
b3JlIHRoYW4gb25lLgorICAgKgorICAgKiBCb3RoIGlucHV0IGFuZCBvdXRwdXQgaW5kZXhlcyBh
cmUgY29kZSB1bml0LWJhc2VkIGFzIGZvciBhbGwKKyAgICogc3RyaW5nIGluZGV4ZXMvb2Zmc2V0
cyBpbiBJQ1UgKGFuZCBvdGhlciBsaWJyYXJpZXMsIGxpa2UgTUJDUyBjaGFyKikuCisgICAqIElm
IGRlbHRhPDAgdGhlbiB0aGUgaW5kZXggaXMgbW92ZWQgYmFja3dhcmQgKHRvd2FyZCB0aGUgc3Rh
cnQgb2YgdGhlIHN0cmluZykuCisgICAqIElmIGRlbHRhPjAgdGhlbiB0aGUgaW5kZXggaXMgbW92
ZWQgZm9yd2FyZCAodG93YXJkIHRoZSBlbmQgb2YgdGhlIHN0cmluZykuCisgICAqCisgICAqIFRo
aXMgYmVoYXZlcyBsaWtlIENoYXJhY3Rlckl0ZXJhdG9yOjptb3ZlMzIoZGVsdGEsIGtDdXJyZW50
KS4KKyAgICoKKyAgICogQmVoYXZpb3IgZm9yIG91dC1vZi1ib3VuZHMgaW5kZXhlczoKKyAgICog
PGNvZGU+bW92ZUluZGV4MzI8L2NvZGU+IHBpbnMgdGhlIGlucHV0IGluZGV4IHRvIDAuLmxlbmd0
aCgpLCBpLmUuLAorICAgKiBpZiB0aGUgaW5wdXQgaW5kZXg8MCB0aGVuIGl0IGlzIHBpbm5lZCB0
byAwOworICAgKiBpZiBpdCBpcyBpbmRleD5sZW5ndGgoKSB0aGVuIGl0IGlzIHBpbm5lZCB0byBs
ZW5ndGgoKS4KKyAgICogQWZ0ZXJ3YXJkcywgdGhlIGluZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRl
bHRhPC9jb2RlPiBjb2RlIHBvaW50cworICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkLAorICAgKiBi
dXQgbm8gZnVydGhlciBiYWNrd2FyZCB0aGFuIHRvIDAgYW5kIG5vIGZ1cnRoZXIgZm9yd2FyZCB0
aGFuIHRvIGxlbmd0aCgpLgorICAgKiBUaGUgcmVzdWx0aW5nIGluZGV4IHJldHVybiB2YWx1ZSB3
aWxsIGJlIGluIGJldHdlZW4gMCBhbmQgbGVuZ3RoKCksIGluY2x1c2l2ZWx5LgorICAgKgorICAg
KiBFeGFtcGxlczoKKyAgICogPHByZT4KKyAgICogLy8gcyBoYXMgY29kZSBwb2ludHMgJ2EnIFUr
MTAwMDAgJ2InIFUrMTBmZmZmIFUrMjAyOQorICAgKiBVbmljb2RlU3RyaW5nIHM9VU5JQ09ERV9T
VFJJTkcoImFcXFUwMDAxMDAwMGJcXFUwMDEwZmZmZlxcdTIwMjkiLCAzMSkudW5lc2NhcGUoKTsK
KyAgICoKKyAgICogLy8gaW5pdGlhbCBpbmRleDogcG9zaXRpb24gb2YgVSsxMDAwMAorICAgKiBp
bnQzMl90IGluZGV4PTE7CisgICAqCisgICAqIC8vIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgd2ls
bCBhbGwgcmVzdWx0IGluIGluZGV4PT00LCBwb3NpdGlvbiBvZiBVKzEwZmZmZgorICAgKgorICAg
KiAvLyBza2lwIDIgY29kZSBwb2ludHMgZnJvbSBzb21lIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcK
KyAgICogaW5kZXg9cy5tb3ZlSW5kZXgzMihpbmRleCwgMik7IC8vIHNraXBzIFUrMTAwMDAgYW5k
ICdiJworICAgKgorICAgKiAvLyBnbyB0byB0aGUgM3JkIGNvZGUgcG9pbnQgZnJvbSB0aGUgc3Rh
cnQgb2YgcyAoMC1iYXNlZCkKKyAgICogaW5kZXg9cy5tb3ZlSW5kZXgzMigwLCAzKTsgLy8gc2tp
cHMgJ2EnLCBVKzEwMDAwLCBhbmQgJ2InCisgICAqCisgICAqIC8vIGdvIHRvIHRoZSBuZXh0LXRv
LWxhc3QgY29kZSBwb2ludCBvZiBzCisgICAqIGluZGV4PXMubW92ZUluZGV4MzIocy5sZW5ndGgo
KSwgLTIpOyAvLyBiYWNrd2FyZC1za2lwcyBVKzIwMjkgYW5kIFUrMTBmZmZmCisgICAqIDwvcHJl
PgorICAgKgorICAgKiBAcGFyYW0gaW5kZXggaW5wdXQgY29kZSB1bml0IGluZGV4CisgICAqIEBw
YXJhbSBkZWx0YSAoc2lnbmVkKSBjb2RlIHBvaW50IGNvdW50IHRvIG1vdmUgdGhlIGluZGV4IGZv
cndhcmQgb3IgYmFja3dhcmQKKyAgICogICAgICAgIGluIHRoZSBzdHJpbmcKKyAgICogQHJldHVy
biB0aGUgcmVzdWx0aW5nIGNvZGUgdW5pdCBpbmRleAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGludDMyX3QgbW92ZUluZGV4MzIoaW50MzJfdCBpbmRleCwgaW50MzJfdCBkZWx0YSkg
Y29uc3Q7CisKKyAgLyogU3Vic3RyaW5nIGV4dHJhY3Rpb24gKi8KKworICAvKioKKyAgICogQ29w
eSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFydDwvdHQ+LCA8dHQ+
c3RhcnQgKyBsZW5ndGg8L3R0PikgaW50byB0aGUgYXJyYXkgPHR0PmRzdDwvdHQ+LAorICAgKiBi
ZWdpbm5pbmcgYXQgPHR0PmRzdFN0YXJ0PC90dD4uCisgICAqIElmIHRoZSBzdHJpbmcgYWxpYXNl
cyB0byA8Y29kZT5kc3Q8L2NvZGU+IGl0c2VsZiBhcyBhbiBleHRlcm5hbCBidWZmZXIsCisgICAq
IHRoZW4gZXh0cmFjdCgpIHdpbGwgbm90IGNvcHkgdGhlIGNvbnRlbnRzLgorICAgKgorICAgKiBA
cGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGll
ZCBpbnRvIHRoZSBhcnJheQorICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyB0byBleHRyYWN0CisgICAqIEBwYXJhbSBkc3QgYXJyYXkgaW4gd2hpY2ggdG8gY29weSBj
aGFyYWN0ZXJzLiAgVGhlIGxlbmd0aCBvZiA8dHQ+ZHN0PC90dD4KKyAgICogbXVzdCBiZSBhdCBs
ZWFzdCAoPHR0PmRzdFN0YXJ0ICsgbGVuZ3RoPC90dD4pLgorICAgKiBAcGFyYW0gZHN0U3RhcnQg
dGhlIG9mZnNldCBpbiA8VFQ+ZHN0PC9UVD4gd2hlcmUgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAg
KiB3aWxsIGJlIGV4dHJhY3RlZAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSB2b2lkIGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
CisgICAgICAgICAgIFVDaGFyICpkc3QsCisgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQgPSAw
KSBjb25zdDsKKworICAvKioKKyAgICogQ29weSB0aGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBp
bnRvIGRlc3QuCisgICAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0CisgICAq
IGNoZWNrcyBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gZGVzdCwKKyAgICogZXh0cmFjdHMg
dGhlIGVudGlyZSBzdHJpbmcgaWYgcG9zc2libGUsCisgICAqIGFuZCBOVUwtdGVybWluYXRlcyBk
ZXN0IGlmIHBvc3NpYmxlLgorICAgKgorICAgKiBJZiB0aGUgc3RyaW5nIGZpdHMgaW50byBkZXN0
IGJ1dCBjYW5ub3QgYmUgTlVMLXRlcm1pbmF0ZWQKKyAgICogKGxlbmd0aCgpPT1kZXN0Q2FwYWNp
dHkpIHRoZW4gdGhlIGVycm9yIGNvZGUgaXMgc2V0IHRvIFVfU1RSSU5HX05PVF9URVJNSU5BVEVE
X1dBUk5JTkcuCisgICAqIElmIHRoZSBzdHJpbmcgaXRzZWxmIGRvZXMgbm90IGZpdCBpbnRvIGRl
c3QKKyAgICogKGxlbmd0aCgpPmRlc3RDYXBhY2l0eSkgdGhlbiB0aGUgZXJyb3IgY29kZSBpcyBz
ZXQgdG8gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IuCisgICAqCisgICAqIElmIHRoZSBzdHJpbmcg
YWxpYXNlcyB0byA8Y29kZT5kZXN0PC9jb2RlPiBpdHNlbGYgYXMgYW4gZXh0ZXJuYWwgYnVmZmVy
LAorICAgKiB0aGVuIGV4dHJhY3QoKSB3aWxsIG5vdCBjb3B5IHRoZSBjb250ZW50cy4KKyAgICoK
KyAgICogQHBhcmFtIGRlc3QgRGVzdGluYXRpb24gc3RyaW5nIGJ1ZmZlci4KKyAgICogQHBhcmFt
IGRlc3RDYXBhY2l0eSBOdW1iZXIgb2YgVUNoYXJzIGF2YWlsYWJsZSBhdCBkZXN0LgorICAgKiBA
cGFyYW0gZXJyb3JDb2RlIElDVSBlcnJvciBjb2RlLgorICAgKiBAcmV0dXJuIGxlbmd0aCgpCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdAorICBleHRyYWN0KFVDaGFyICpk
ZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNv
ZGUpIGNvbnN0OworCisgIC8qKgorICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5n
ZQorICAgKiBbPHR0PnN0YXJ0PC90dD4sIDx0dD5zdGFydCArIGxlbmd0aDwvdHQ+KSBpbnRvIHRo
ZSAgVW5pY29kZVN0cmluZworICAgKiA8dHQ+dGFyZ2V0PC90dD4uCisgICAqIEBwYXJhbSBzdGFy
dCBvZmZzZXQgb2YgZmlyc3QgY2hhcmFjdGVyIHdoaWNoIHdpbGwgYmUgY29waWVkCisgICAqIEBw
YXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBh
cmFtIHRhcmdldCBVbmljb2RlU3RyaW5nIGludG8gd2hpY2ggdG8gY29weSBjaGFyYWN0ZXJzLgor
ICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICovCisgIGlubGluZSB2b2lkIGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHRhcmdl
dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIENvcHkgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdl
IFs8dHQ+c3RhcnQ8L3R0PiwgPHR0PmxpbWl0PC90dD4pCisgICAqIGludG8gdGhlIGFycmF5IDx0
dD5kc3Q8L3R0PiwgYmVnaW5uaW5nIGF0IDx0dD5kc3RTdGFydDwvdHQ+LgorICAgKiBAcGFyYW0g
c3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRv
IHRoZSBhcnJheQorICAgKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2lu
ZyB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkCisgICAqIEBwYXJhbSBkc3QgYXJyYXkg
aW4gd2hpY2ggdG8gY29weSBjaGFyYWN0ZXJzLiAgVGhlIGxlbmd0aCBvZiA8dHQ+ZHN0PC90dD4K
KyAgICogbXVzdCBiZSBhdCBsZWFzdCAoPHR0PmRzdFN0YXJ0ICsgKGxpbWl0IC0gc3RhcnQpPC90
dD4pLgorICAgKiBAcGFyYW0gZHN0U3RhcnQgdGhlIG9mZnNldCBpbiA8VFQ+ZHN0PC9UVD4gd2hl
cmUgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAgKiB3aWxsIGJlIGV4dHJhY3RlZAorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSB2b2lkIGV4dHJhY3RCZXR3ZWVuKGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgIFVDaGFy
ICpkc3QsCisgICAgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQgPSAwKSBjb25zdDsKKworICAv
KioKKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzx0dD5zdGFydDwvdHQ+
LCA8dHQ+bGltaXQ8L3R0PikKKyAgICogaW50byB0aGUgVW5pY29kZVN0cmluZyA8dHQ+dGFyZ2V0
PC90dD4uICBSZXBsYWNlYWJsZSBBUEkuCisgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmly
c3QgY2hhcmFjdGVyIHdoaWNoIHdpbGwgYmUgY29waWVkCisgICAqIEBwYXJhbSBsaW1pdCBvZmZz
ZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQK
KyAgICogQHBhcmFtIHRhcmdldCBVbmljb2RlU3RyaW5nIGludG8gd2hpY2ggdG8gY29weSBjaGFy
YWN0ZXJzLgorICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZpcnR1YWwgdm9pZCBleHRyYWN0QmV0d2Vlbihp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAg
ICBVbmljb2RlU3RyaW5nJiB0YXJnZXQpIGNvbnN0OworCisgIC8qKgorICAgKiBDb3B5IHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSByYW5nZSAKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3RhcnQg
KyBsZW5ndGg8L1RUPikgaW50byBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLgorICAgKiBBbGwgY2hh
cmFjdGVycyBtdXN0IGJlIGludmFyaWFudCAoc2VlIHV0eXBlcy5oKS4KKyAgICogVXNlIFVTX0lO
ViBhcyB0aGUgbGFzdCwgc2lnbmF0dXJlLWRpc3Rpbmd1aXNoaW5nIHBhcmFtZXRlci4KKyAgICoK
KyAgICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB3cml0ZSBhbnkgbW9yZSB0aGFuIDxjb2RlPnRh
cmdldExlbmd0aDwvY29kZT4KKyAgICogY2hhcmFjdGVycyBidXQgcmV0dXJucyB0aGUgbGVuZ3Ro
IG9mIHRoZSBlbnRpcmUgb3V0cHV0IHN0cmluZworICAgKiBzbyB0aGF0IG9uZSBjYW4gYWxsb2Nh
dGUgYSBsYXJnZXIgYnVmZmVyIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiBhZ2FpbgorICAgKiBpZiBu
ZWNlc3NhcnkuCisgICAqIFRoZSBvdXRwdXQgc3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkIGlmIHBv
c3NpYmxlLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3Rl
ciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgKiBAcGFyYW0gc3RhcnRMZW5ndGggdGhlIG51bWJl
ciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0
IGJ1ZmZlciBmb3IgZXh0cmFjdGlvbiwgY2FuIGJlIE5VTEwKKyAgICogICAgICAgICAgICAgICBp
ZiB0YXJnZXRMZW5ndGggaXMgMAorICAgKiBAcGFyYW0gdGFyZ2V0Q2FwYWNpdHkgdGhlIGxlbmd0
aCBvZiB0aGUgdGFyZ2V0IGJ1ZmZlcgorICAgKiBAcGFyYW0gaW52IFNpZ25hdHVyZS1kaXN0aW5n
dWlzaGluZyBwYXJhbWF0ZXIsIHVzZSBVU19JTlYuCisgICAqIEByZXR1cm4gdGhlIG91dHB1dCBz
dHJpbmcgbGVuZ3RoLCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBOVUwKKyAgICogQHN0
YWJsZSBJQ1UgMy4yCisgICAqLworICBpbnQzMl90IGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgaW50MzJfdCBzdGFydExlbmd0aCwKKyAgICAgICAgICAgY2hhciAqdGFyZ2V0LAor
ICAgICAgICAgICBpbnQzMl90IHRhcmdldENhcGFjaXR5LAorICAgICAgICAgICBlbnVtIEVJbnZh
cmlhbnQgaW52KSBjb25zdDsKKworI2lmIFVfQ0hBUlNFVF9JU19VVEY4IHx8ICFVQ09ORklHX05P
X0NPTlZFUlNJT04KKworICAvKioKKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFu
Z2UKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgaW50byBh
biBhcnJheSBvZiBjaGFyYWN0ZXJzCisgICAqIGluIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY29k
ZXBhZ2UuCisgICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd3JpdGUgYW55IG1vcmUgdGhhbiA8
Y29kZT50YXJnZXRMZW5ndGg8L2NvZGU+CisgICAqIGNoYXJhY3RlcnMgYnV0IHJldHVybnMgdGhl
IGxlbmd0aCBvZiB0aGUgZW50aXJlIG91dHB1dCBzdHJpbmcKKyAgICogc28gdGhhdCBvbmUgY2Fu
IGFsbG9jYXRlIGEgbGFyZ2VyIGJ1ZmZlciBhbmQgY2FsbCB0aGUgZnVuY3Rpb24gYWdhaW4KKyAg
ICogaWYgbmVjZXNzYXJ5LgorICAgKiBUaGUgb3V0cHV0IHN0cmluZyBpcyBOVUwtdGVybWluYXRl
ZCBpZiBwb3NzaWJsZS4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBmaXJzdCBj
aGFyYWN0ZXIgd2hpY2ggd2lsbCBiZSBjb3BpZWQKKyAgICogQHBhcmFtIHN0YXJ0TGVuZ3RoIHRo
ZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBleHRyYWN0CisgICAqIEBwYXJhbSB0YXJnZXQgdGhl
IHRhcmdldCBidWZmZXIgZm9yIGV4dHJhY3Rpb24KKyAgICogQHBhcmFtIHRhcmdldExlbmd0aCB0
aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgYnVmZmVyCisgICAqIElmIDxUVD50YXJnZXQ8L1RUPiBp
cyBOVUxMLCB0aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgZm9yCisgICAqIDxUVD50
YXJnZXQ8L1RUPiBpcyByZXR1cm5lZC4KKyAgICogQHJldHVybiB0aGUgb3V0cHV0IHN0cmluZyBs
ZW5ndGgsIG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTAorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGludDMyX3QgZXh0cmFjdChpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICBpbnQzMl90IHN0YXJ0TGVuZ3RoLAorICAgICAgICAgICBjaGFyICp0YXJnZXQsCisgICAgICAg
ICAgIHVpbnQzMl90IHRhcmdldExlbmd0aCkgY29uc3Q7CisKKyNlbmRpZgorCisjaWYgIVVDT05G
SUdfTk9fQ09OVkVSU0lPTgorCisgIC8qKgorICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRo
ZSByYW5nZQorICAgKiBbPHR0PnN0YXJ0PC9UVD4sIDx0dD5zdGFydCArIGxlbmd0aDwvVFQ+KSBp
bnRvIGFuIGFycmF5IG9mIGNoYXJhY3RlcnMKKyAgICogaW4gYSBzcGVjaWZpZWQgY29kZXBhZ2Uu
CisgICAqIFRoZSBvdXRwdXQgc3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkLgorICAgKgorICAgKiBS
ZWNvbW1lbmRhdGlvbjogRm9yIGludmFyaWFudC1jaGFyYWN0ZXIgc3RyaW5ncyB1c2UKKyAgICog
ZXh0cmFjdChpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGxlbmd0aCwgY2hhciAqdGFyZ2V0LCBpbnQz
Ml90IHRhcmdldENhcGFjaXR5LCBlbnVtIEVJbnZhcmlhbnQgaW52KSBjb25zdAorICAgKiBiZWNh
dXNlIGl0IGF2b2lkcyBvYmplY3QgY29kZSBkZXBlbmRlbmNpZXMgb2YgVW5pY29kZVN0cmluZyBv
bgorICAgKiB0aGUgY29udmVyc2lvbiBjb2RlLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgb2Zm
c2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgKiBAcGFyYW0g
c3RhcnRMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBh
cmFtIHRhcmdldCB0aGUgdGFyZ2V0IGJ1ZmZlciBmb3IgZXh0cmFjdGlvbgorICAgKiBAcGFyYW0g
Y29kZXBhZ2UgdGhlIGRlc2lyZWQgY29kZXBhZ2UgZm9yIHRoZSBjaGFyYWN0ZXJzLiAgMCBoYXMK
KyAgICogdGhlIHNwZWNpYWwgbWVhbmluZyBvZiB0aGUgZGVmYXVsdCBjb2RlcGFnZQorICAgKiBJ
ZiA8Y29kZT5jb2RlcGFnZTwvY29kZT4gaXMgYW4gZW1wdHkgc3RyaW5nICg8Y29kZT4iIjwvY29k
ZT4pLAorICAgKiB0aGVuIGEgc2ltcGxlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBj
b2RlcGFnZS1pbnZhcmlhbnQKKyAgICogc3Vic2V0ICgiaW52YXJpYW50IGNoYXJhY3RlcnMiKSBv
ZiB0aGUgcGxhdGZvcm0gZW5jb2RpbmcuIFNlZSB1dHlwZXMuaC4KKyAgICogSWYgPFRUPnRhcmdl
dDwvVFQ+IGlzIE5VTEwsIHRoZW4gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBmb3IKKyAg
ICogPFRUPnRhcmdldDwvVFQ+IGlzIHJldHVybmVkLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHRh
cmdldCBpcyBiaWcgZW5vdWdoCisgICAqIHRvIGZpdCBhbGwgb2YgdGhlIGNoYXJhY3RlcnMuCisg
ICAqIEByZXR1cm4gdGhlIG91dHB1dCBzdHJpbmcgbGVuZ3RoLCBub3QgaW5jbHVkaW5nIHRoZSB0
ZXJtaW5hdGluZyBOVUwKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50
MzJfdCBleHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgIGludDMyX3Qgc3Rh
cnRMZW5ndGgsCisgICAgICAgICAgICAgICAgIGNoYXIgKnRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqY29kZXBhZ2UgPSAwKSBjb25zdDsKKworICAvKioKKyAgICogQ29weSB0
aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3Rh
cnQgKyBsZW5ndGg8L1RUPikgaW50byBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzCisgICAqIGluIGEg
c3BlY2lmaWVkIGNvZGVwYWdlLgorICAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdyaXRlIGFu
eSBtb3JlIHRoYW4gPGNvZGU+dGFyZ2V0TGVuZ3RoPC9jb2RlPgorICAgKiBjaGFyYWN0ZXJzIGJ1
dCByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGVudGlyZSBvdXRwdXQgc3RyaW5nCisgICAqIHNv
IHRoYXQgb25lIGNhbiBhbGxvY2F0ZSBhIGxhcmdlciBidWZmZXIgYW5kIGNhbGwgdGhlIGZ1bmN0
aW9uIGFnYWluCisgICAqIGlmIG5lY2Vzc2FyeS4KKyAgICogVGhlIG91dHB1dCBzdHJpbmcgaXMg
TlVMLXRlcm1pbmF0ZWQgaWYgcG9zc2libGUuCisgICAqCisgICAqIFJlY29tbWVuZGF0aW9uOiBG
b3IgaW52YXJpYW50LWNoYXJhY3RlciBzdHJpbmdzIHVzZQorICAgKiBleHRyYWN0KGludDMyX3Qg
c3RhcnQsIGludDMyX3QgbGVuZ3RoLCBjaGFyICp0YXJnZXQsIGludDMyX3QgdGFyZ2V0Q2FwYWNp
dHksIGVudW0gRUludmFyaWFudCBpbnYpIGNvbnN0CisgICAqIGJlY2F1c2UgaXQgYXZvaWRzIG9i
amVjdCBjb2RlIGRlcGVuZGVuY2llcyBvZiBVbmljb2RlU3RyaW5nIG9uCisgICAqIHRoZSBjb252
ZXJzaW9uIGNvZGUuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmlyc3QgY2hh
cmFjdGVyIHdoaWNoIHdpbGwgYmUgY29waWVkCisgICAqIEBwYXJhbSBzdGFydExlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gZXh0cmFjdAorICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSB0
YXJnZXQgYnVmZmVyIGZvciBleHRyYWN0aW9uCisgICAqIEBwYXJhbSB0YXJnZXRMZW5ndGggdGhl
IGxlbmd0aCBvZiB0aGUgdGFyZ2V0IGJ1ZmZlcgorICAgKiBAcGFyYW0gY29kZXBhZ2UgdGhlIGRl
c2lyZWQgY29kZXBhZ2UgZm9yIHRoZSBjaGFyYWN0ZXJzLiAgMCBoYXMKKyAgICogdGhlIHNwZWNp
YWwgbWVhbmluZyBvZiB0aGUgZGVmYXVsdCBjb2RlcGFnZQorICAgKiBJZiA8Y29kZT5jb2RlcGFn
ZTwvY29kZT4gaXMgYW4gZW1wdHkgc3RyaW5nICg8Y29kZT4iIjwvY29kZT4pLAorICAgKiB0aGVu
IGEgc2ltcGxlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBjb2RlcGFnZS1pbnZhcmlh
bnQKKyAgICogc3Vic2V0ICgiaW52YXJpYW50IGNoYXJhY3RlcnMiKSBvZiB0aGUgcGxhdGZvcm0g
ZW5jb2RpbmcuIFNlZSB1dHlwZXMuaC4KKyAgICogSWYgPFRUPnRhcmdldDwvVFQ+IGlzIE5VTEws
IHRoZW4gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBmb3IKKyAgICogPFRUPnRhcmdldDwv
VFQ+IGlzIHJldHVybmVkLgorICAgKiBAcmV0dXJuIHRoZSBvdXRwdXQgc3RyaW5nIGxlbmd0aCwg
bm90IGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgTlVMCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW50MzJfdCBleHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgIGludDMy
X3Qgc3RhcnRMZW5ndGgsCisgICAgICAgICAgIGNoYXIgKnRhcmdldCwKKyAgICAgICAgICAgdWlu
dDMyX3QgdGFyZ2V0TGVuZ3RoLAorICAgICAgICAgICBjb25zdCBjaGFyICpjb2RlcGFnZSkgY29u
c3Q7CisKKyAgLyoqCisgICAqIENvbnZlcnQgdGhlIFVuaWNvZGVTdHJpbmcgaW50byBhIGNvZGVw
YWdlIHN0cmluZyB1c2luZyBhbiBleGlzdGluZyBVQ29udmVydGVyLgorICAgKiBUaGUgb3V0cHV0
IHN0cmluZyBpcyBOVUwtdGVybWluYXRlZCBpZiBwb3NzaWJsZS4KKyAgICoKKyAgICogVGhpcyBm
dW5jdGlvbiBhdm9pZHMgdGhlIG92ZXJoZWFkIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBjb252
ZXJ0ZXIgaWYKKyAgICogbXVsdGlwbGUgc3RyaW5ncyBhcmUgZXh0cmFjdGVkLgorICAgKgorICAg
KiBAcGFyYW0gZGVzdCBkZXN0aW5hdGlvbiBzdHJpbmcgYnVmZmVyLCBjYW4gYmUgTlVMTCBpZiBk
ZXN0Q2FwYWNpdHk9PTAKKyAgICogQHBhcmFtIGRlc3RDYXBhY2l0eSB0aGUgbnVtYmVyIG9mIGNo
YXJzIGF2YWlsYWJsZSBhdCBkZXN0CisgICAqIEBwYXJhbSBjbnYgdGhlIGNvbnZlcnRlciBvYmpl
Y3QgdG8gYmUgdXNlZCAodWNudl9yZXNldEZyb21Vbmljb2RlKCkgd2lsbCBiZSBjYWxsZWQpLAor
ICAgKiAgICAgICAgb3IgTlVMTCBmb3IgdGhlIGRlZmF1bHQgY29udmVydGVyCisgICAqIEBwYXJh
bSBlcnJvckNvZGUgbm9ybWFsIElDVSBlcnJvciBjb2RlCisgICAqIEByZXR1cm4gdGhlIGxlbmd0
aCBvZiB0aGUgb3V0cHV0IHN0cmluZywgbm90IGNvdW50aW5nIHRoZSB0ZXJtaW5hdGluZyBOVUw7
CisgICAqICAgICAgICAgaWYgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gZGVzdENhcGFjaXR5
LCB0aGVuIHRoZSBzdHJpbmcgd2lsbCBub3QgZml0CisgICAqICAgICAgICAgYW5kIGEgYnVmZmVy
IG9mIHRoZSBpbmRpY2F0ZWQgbGVuZ3RoIHdvdWxkIG5lZWQgdG8gYmUgcGFzc2VkIGluCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdCBleHRyYWN0KGNoYXIgKmRlc3QsIGlu
dDMyX3QgZGVzdENhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlciAqY252LAor
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKworI2VuZGlm
CisKKyAgLyoqCisgICAqIENyZWF0ZSBhIHRlbXBvcmFyeSBzdWJzdHJpbmcgZm9yIHRoZSBzcGVj
aWZpZWQgcmFuZ2UuCisgICAqIFVubGlrZSB0aGUgc3Vic3RyaW5nIGNvbnN0cnVjdG9yIGFuZCBz
ZXRUbygpIGZ1bmN0aW9ucywKKyAgICogdGhlIG9iamVjdCByZXR1cm5lZCBoZXJlIHdpbGwgYmUg
YSByZWFkLW9ubHkgYWxpYXMgKHVzaW5nIGdldEJ1ZmZlcigpKQorICAgKiByYXRoZXIgdGhhbiBj
b3B5aW5nIHRoZSB0ZXh0LgorICAgKiBBcyBhIHJlc3VsdCwgdGhpcyBzdWJzdHJpbmcgb3BlcmF0
aW9uIGlzIG11Y2ggZmFzdGVyIGJ1dCByZXF1aXJlcworICAgKiB0aGF0IHRoZSBvcmlnaW5hbCBz
dHJpbmcgbm90IGJlIG1vZGlmaWVkIG9yIGRlbGV0ZWQgZHVyaW5nIHRoZSBsaWZldGltZQorICAg
KiBvZiB0aGUgcmV0dXJuZWQgc3Vic3RyaW5nIG9iamVjdC4KKyAgICogQHBhcmFtIHN0YXJ0IG9m
ZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHZpc2libGUgaW4gdGhlIHN1YnN0cmluZworICAg
KiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBvZiB0aGUgc3Vic3RyaW5nCisgICAqIEByZXR1cm4gYSBy
ZWFkLW9ubHkgYWxpYXMgVW5pY29kZVN0cmluZyBvYmplY3QgZm9yIHRoZSBzdWJzdHJpbmcKKyAg
ICogQHN0YWJsZSBJQ1UgNC40CisgICAqLworICBVbmljb2RlU3RyaW5nIHRlbXBTdWJTdHJpbmco
aW50MzJfdCBzdGFydD0wLCBpbnQzMl90IGxlbmd0aD1JTlQzMl9NQVgpIGNvbnN0OworCisgIC8q
KgorICAgKiBDcmVhdGUgYSB0ZW1wb3Jhcnkgc3Vic3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIHJh
bmdlLgorICAgKiBTYW1lIGFzIHRlbXBTdWJTdHJpbmcoc3RhcnQsIGxlbmd0aCkgZXhjZXB0IHRo
YXQgdGhlIHN1YnN0cmluZyByYW5nZQorICAgKiBpcyBzcGVjaWZpZWQgYXMgYSAoc3RhcnQsIGxp
bWl0KSBwYWlyICh3aXRoIGFuIGV4Y2x1c2l2ZSBsaW1pdCBpbmRleCkKKyAgICogcmF0aGVyIHRo
YW4gYSAoc3RhcnQsIGxlbmd0aCkgcGFpci4KKyAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiB0
aGUgZmlyc3QgY2hhcmFjdGVyIHZpc2libGUgaW4gdGhlIHN1YnN0cmluZworICAgKiBAcGFyYW0g
bGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgdmlz
aWJsZSBpbiB0aGUgc3Vic3RyaW5nCisgICAqIEByZXR1cm4gYSByZWFkLW9ubHkgYWxpYXMgVW5p
Y29kZVN0cmluZyBvYmplY3QgZm9yIHRoZSBzdWJzdHJpbmcKKyAgICogQHN0YWJsZSBJQ1UgNC40
CisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyB0ZW1wU3ViU3RyaW5nQmV0d2VlbihpbnQz
Ml90IHN0YXJ0LCBpbnQzMl90IGxpbWl0PUlOVDMyX01BWCkgY29uc3Q7CisKKyAgLyoqCisgICAq
IENvbnZlcnQgdGhlIFVuaWNvZGVTdHJpbmcgdG8gVVRGLTggYW5kIHdyaXRlIHRoZSByZXN1bHQK
KyAgICogdG8gYSBCeXRlU2luay4gVGhpcyBpcyBjYWxsZWQgYnkgdG9VVEY4U3RyaW5nKCkuCisg
ICAqIFVucGFpcmVkIHN1cnJvZ2F0ZXMgYXJlIHJlcGxhY2VkIHdpdGggVStGRkZELgorICAgKiBD
YWxscyB1X3N0clRvVVRGOFdpdGhTdWIoKS4KKyAgICoKKyAgICogQHBhcmFtIHNpbmsgQSBCeXRl
U2luayB0byB3aGljaCB0aGUgVVRGLTggdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGlzIHdyaXR0ZW4u
CisgICAqICAgICAgICAgICAgIHNpbmsuRmx1c2goKSBpcyBjYWxsZWQgYXQgdGhlIGVuZC4KKyAg
ICogQHN0YWJsZSBJQ1UgNC4yCisgICAqIEBzZWUgdG9VVEY4U3RyaW5nCisgICAqLworICB2b2lk
IHRvVVRGOChCeXRlU2luayAmc2luaykgY29uc3Q7CisKKyNpZiBVX0hBVkVfU1REX1NUUklORwor
CisgIC8qKgorICAgKiBDb252ZXJ0IHRoZSBVbmljb2RlU3RyaW5nIHRvIFVURi04IGFuZCBhcHBl
bmQgdGhlIHJlc3VsdAorICAgKiB0byBhIHN0YW5kYXJkIHN0cmluZy4KKyAgICogVW5wYWlyZWQg
c3Vycm9nYXRlcyBhcmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQuCisgICAqIENhbGxzIHRvVVRGOCgp
LgorICAgKgorICAgKiBAcGFyYW0gcmVzdWx0IEEgc3RhbmRhcmQgc3RyaW5nIChvciBhIGNvbXBh
dGlibGUgb2JqZWN0KQorICAgKiAgICAgICAgdG8gd2hpY2ggdGhlIFVURi04IHZlcnNpb24gb2Yg
dGhlIHN0cmluZyBpcyBhcHBlbmRlZC4KKyAgICogQHJldHVybiBUaGUgc3RyaW5nIG9iamVjdC4K
KyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqIEBzZWUgdG9VVEY4CisgICAqLworICB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KKyAgU3RyaW5nQ2xhc3MgJnRvVVRGOFN0cmluZyhTdHJp
bmdDbGFzcyAmcmVzdWx0KSBjb25zdCB7CisgICAgU3RyaW5nQnl0ZVNpbms8U3RyaW5nQ2xhc3M+
IHNicygmcmVzdWx0KTsKKyAgICB0b1VURjgoc2JzKTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9
CisKKyNlbmRpZgorCisgIC8qKgorICAgKiBDb252ZXJ0IHRoZSBVbmljb2RlU3RyaW5nIHRvIFVU
Ri0zMi4KKyAgICogVW5wYWlyZWQgc3Vycm9nYXRlcyBhcmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQu
CisgICAqIENhbGxzIHVfc3RyVG9VVEYzMldpdGhTdWIoKS4KKyAgICoKKyAgICogQHBhcmFtIHV0
ZjMyIGRlc3RpbmF0aW9uIHN0cmluZyBidWZmZXIsIGNhbiBiZSBOVUxMIGlmIGNhcGFjaXR5PT0w
CisgICAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgbnVtYmVyIG9mIFVDaGFyMzJzIGF2YWlsYWJsZSBh
dCB1dGYzMgorICAgKiBAcGFyYW0gZXJyb3JDb2RlIFN0YW5kYXJkIElDVSBlcnJvciBjb2RlLiBJ
dHMgaW5wdXQgdmFsdWUgbXVzdAorICAgKiAgICAgICAgICAgICAgICAgIHBhc3MgdGhlIFVfU1VD
Q0VTUygpIHRlc3QsIG9yIGVsc2UgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAgICogICAgICAgICAg
ICAgICAgICBpbW1lZGlhdGVseS4gQ2hlY2sgZm9yIFVfRkFJTFVSRSgpIG9uIG91dHB1dCBvciB1
c2Ugd2l0aAorICAgKiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoYWluaW5nLiAoU2VlIFVz
ZXIgR3VpZGUgZm9yIGRldGFpbHMuKQorICAgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIFVU
Ri0zMiBzdHJpbmcuCisgICAqIEBzZWUgZnJvbVVURjMyCisgICAqIEBzdGFibGUgSUNVIDQuMgor
ICAgKi8KKyAgaW50MzJfdCB0b1VURjMyKFVDaGFyMzIgKnV0ZjMyLCBpbnQzMl90IGNhcGFjaXR5
LCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworCisgIC8qIExlbmd0aCBvcGVyYXRpb25z
ICovCisKKyAgLyoqCisgICAqIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlU3RyaW5n
IG9iamVjdC4KKyAgICogVGhlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIFVDaGFyIGNvZGUgdW5p
dHMgYXJlIGluIHRoZSBVbmljb2RlU3RyaW5nLgorICAgKiBJZiB5b3Ugd2FudCB0aGUgbnVtYmVy
IG9mIGNvZGUgcG9pbnRzLCBwbGVhc2UgdXNlIGNvdW50Q2hhcjMyKCkuCisgICAqIEByZXR1cm4g
dGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QKKyAgICogQHNlZSBjb3VudENo
YXIzMgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGxlbmd0
aCh2b2lkKSBjb25zdDsKKworICAvKioKKyAgICogQ291bnQgVW5pY29kZSBjb2RlIHBvaW50cyBp
biB0aGUgbGVuZ3RoIFVDaGFyIGNvZGUgdW5pdHMgb2YgdGhlIHN0cmluZy4KKyAgICogQSBjb2Rl
IHBvaW50IG1heSBvY2N1cHkgZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAg
ICogQ291bnRpbmcgY29kZSBwb2ludHMgaW52b2x2ZXMgcmVhZGluZyBhbGwgY29kZSB1bml0cy4K
KyAgICoKKyAgICogVGhpcyBmdW5jdGlvbnMgaXMgYmFzaWNhbGx5IHRoZSBpbnZlcnNlIG9mIG1v
dmVJbmRleDMyKCkuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIGZp
cnN0IGNvZGUgdW5pdCB0byBjaGVjaworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2Yg
VUNoYXIgY29kZSB1bml0cyB0byBjaGVjaworICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29k
ZSBwb2ludHMgaW4gdGhlIHNwZWNpZmllZCBjb2RlIHVuaXRzCisgICAqIEBzZWUgbGVuZ3RoCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdAorICBjb3VudENoYXIzMihpbnQz
Ml90IHN0YXJ0PTAsIGludDMyX3QgbGVuZ3RoPUlOVDMyX01BWCkgY29uc3Q7CisKKyAgLyoqCisg
ICAqIENoZWNrIGlmIHRoZSBsZW5ndGggVUNoYXIgY29kZSB1bml0cyBvZiB0aGUgc3RyaW5nCisg
ICAqIGNvbnRhaW4gbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRoYW4gYSBjZXJ0YWluIG51bWJl
ci4KKyAgICogVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGNvdW50aW5nIGFsbCBjb2RlIHBv
aW50cyBpbiB0aGlzIHBhcnQgb2YgdGhlIHN0cmluZworICAgKiBhbmQgY29tcGFyaW5nIHRoYXQg
bnVtYmVyIHdpdGggYSB0aHJlc2hvbGQuCisgICAqIFRoaXMgZnVuY3Rpb24gbWF5IG5vdCBuZWVk
IHRvIHNjYW4gdGhlIHN0cmluZyBhdCBhbGwgaWYgdGhlIGxlbmd0aAorICAgKiBmYWxscyB3aXRo
aW4gYSBjZXJ0YWluIHJhbmdlLCBhbmQKKyAgICogbmV2ZXIgbmVlZHMgdG8gY291bnQgbW9yZSB0
aGFuICdudW1iZXIrMScgY29kZSBwb2ludHMuCisgICAqIExvZ2ljYWxseSBlcXVpdmFsZW50IHRv
IChjb3VudENoYXIzMihzdGFydCwgbGVuZ3RoKT5udW1iZXIpLgorICAgKiBBIFVuaWNvZGUgY29k
ZSBwb2ludCBtYXkgb2NjdXB5IGVpdGhlciBvbmUgb3IgdHdvIFVDaGFyIGNvZGUgdW5pdHMuCisg
ICAqCisgICAqIEBwYXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvZGUgdW5pdCB0
byBjaGVjayAoMCBmb3IgdGhlIGVudGlyZSBzdHJpbmcpCisgICAqIEBwYXJhbSBsZW5ndGggdGhl
IG51bWJlciBvZiBVQ2hhciBjb2RlIHVuaXRzIHRvIGNoZWNrCisgICAqICAgICAgICAgICAgICAg
KHVzZSBJTlQzMl9NQVggZm9yIHRoZSBlbnRpcmUgc3RyaW5nOyByZW1lbWJlciB0aGF0IHN0YXJ0
L2xlbmd0aAorICAgKiAgICAgICAgICAgICAgICB2YWx1ZXMgYXJlIHBpbm5lZCkKKyAgICogQHBh
cmFtIG51bWJlciBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSAoc3ViKXN0cmluZyBp
cyBjb21wYXJlZCBhZ2FpbnN0CisgICAqICAgICAgICAgICAgICAgdGhlICdudW1iZXInIHBhcmFt
ZXRlci4KKyAgICogQHJldHVybiBCb29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIHRoZSBzdHJpbmcg
Y29udGFpbnMgbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzCisgICAqICAgICAgICAgdGhhbiAnbnVt
YmVyJy4gU2FtZSBhcyAodV9jb3VudENoYXIzMihzLCBsZW5ndGgpPm51bWJlcikuCisgICAqIEBz
ZWUgY291bnRDaGFyMzIKKyAgICogQHNlZSB1X3N0ckhhc01vcmVDaGFyMzJUaGFuCisgICAqIEBz
dGFibGUgSUNVIDIuNAorICAgKi8KKyAgVUJvb2wKKyAgaGFzTW9yZUNoYXIzMlRoYW4oaW50MzJf
dCBzdGFydCwgaW50MzJfdCBsZW5ndGgsIGludDMyX3QgbnVtYmVyKSBjb25zdDsKKworICAvKioK
KyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgc3RyaW5nIGlzIGVtcHR5LgorICAgKiBAcmV0dXJuIFRS
VUUgaWYgdGhpcyBzdHJpbmcgY29udGFpbnMgMCBjaGFyYWN0ZXJzLCBGQUxTRSBvdGhlcndpc2Uu
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIGlzRW1wdHkodm9p
ZCkgY29uc3Q7CisKKyAgLyoqCisgICAqIFJldHVybiB0aGUgY2FwYWNpdHkgb2YgdGhlIGludGVy
bmFsIGJ1ZmZlciBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QuCisgICAqIFRoaXMgaXMgdXNl
ZnVsIHRvZ2V0aGVyIHdpdGggdGhlIGdldEJ1ZmZlciBmdW5jdGlvbnMuCisgICAqIFNlZSB0aGVy
ZSBmb3IgZGV0YWlscy4KKyAgICoKKyAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIFVDaGFycyBh
dmFpbGFibGUgaW4gdGhlIGludGVybmFsIGJ1ZmZlcgorICAgKiBAc2VlIGdldEJ1ZmZlcgorICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGdldENhcGFjaXR5KHZv
aWQpIGNvbnN0OworCisgIC8qIE90aGVyIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogR2Vu
ZXJhdGUgYSBoYXNoIGNvZGUgZm9yIHRoaXMgb2JqZWN0LgorICAgKiBAcmV0dXJuIFRoZSBoYXNo
IGNvZGUgb2YgdGhpcyBVbmljb2RlU3RyaW5nLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIGlubGluZSBpbnQzMl90IGhhc2hDb2RlKHZvaWQpIGNvbnN0OworCisgIC8qKgorICAgKiBE
ZXRlcm1pbmUgaWYgdGhpcyBvYmplY3QgY29udGFpbnMgYSB2YWxpZCBzdHJpbmcuCisgICAqIEEg
Ym9ndXMgc3RyaW5nIGhhcyBubyB2YWx1ZS4gSXQgaXMgZGlmZmVyZW50IGZyb20gYW4gZW1wdHkg
c3RyaW5nLAorICAgKiBhbHRob3VnaCBpbiBib3RoIGNhc2VzIGlzRW1wdHkoKSByZXR1cm5zIFRS
VUUgYW5kIGxlbmd0aCgpIHJldHVybnMgMC4KKyAgICogc2V0VG9Cb2d1cygpIGFuZCBpc0JvZ3Vz
KCkgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBubyBzdHJpbmcgdmFsdWUgaXMgYXZhaWxh
YmxlLgorICAgKiBGb3IgYSBib2d1cyBzdHJpbmcsIGdldEJ1ZmZlcigpIGFuZCBnZXRUZXJtaW5h
dGVkQnVmZmVyKCkgcmV0dXJuIE5VTEwsIGFuZAorICAgKiBsZW5ndGgoKSByZXR1cm5zIDAuCisg
ICAqCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgc3RyaW5nIGlzIHZhbGlkLCBGQUxTRSBvdGhl
cndpc2UKKyAgICogQHNlZSBzZXRUb0JvZ3VzKCkKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgVUJvb2wgaXNCb2d1cyh2b2lkKSBjb25zdDsKKworCisgIC8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAvLyBXcml0ZSBvcGVyYXRpb25zCisg
IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIC8qIEFzc2ln
bm1lbnQgb3BlcmF0aW9ucyAqLworCisgIC8qKgorICAgKiBBc3NpZ25tZW50IG9wZXJhdG9yLiAg
UmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIFVuaWNvZGVTdHJpbmcKKyAgICogd2l0aCB0
aGUgY2hhcmFjdGVycyBmcm9tIDxUVD5zcmNUZXh0PC9UVD4uCisgICAqIEBwYXJhbSBzcmNUZXh0
IFRoZSB0ZXh0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgdG8gcmVwbGFjZQorICAgKiBAcmV0
dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBV
bmljb2RlU3RyaW5nICZvcGVyYXRvcj0oY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCk7CisK
KyAgLyoqCisgICAqIEFsbW9zdCB0aGUgc2FtZSBhcyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4K
KyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIFVuaWNvZGVTdHJpbmcKKyAgICog
d2l0aCB0aGUgY2hhcmFjdGVycyBmcm9tIDxjb2RlPnNyY1RleHQ8L2NvZGU+LgorICAgKgorICAg
KiBUaGlzIGZ1bmN0aW9uIHdvcmtzIHRoZSBzYW1lIGZvciBhbGwgc3RyaW5ncyBleGNlcHQgZm9y
IG9uZXMgdGhhdAorICAgKiBhcmUgcmVhZG9ubHkgYWxpYXNlcy4KKyAgICogU3RhcnRpbmcgd2l0
aCBJQ1UgMi40LCB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBhbmQgdGhlIGNvcHkgY29uc3RydWN0
b3IKKyAgICogYWxsb2NhdGUgYSBuZXcgYnVmZmVyIGFuZCBjb3B5IHRoZSBidWZmZXIgY29udGVu
dHMgZXZlbiBmb3IgcmVhZG9ubHkgYWxpYXNlcy4KKyAgICogVGhpcyBmdW5jdGlvbiBpbXBsZW1l
bnRzIHRoZSBvbGQsIG1vcmUgZWZmaWNpZW50IGJ1dCBsZXNzIHNhZmUgYmVoYXZpb3IKKyAgICog
b2YgbWFraW5nIHRoaXMgc3RyaW5nIGFsc28gYSByZWFkb25seSBhbGlhcyB0byB0aGUgc2FtZSBi
dWZmZXIuCisgICAqIFRoZSBmYXN0Q29weUZyb20gZnVuY3Rpb24gbXVzdCBiZSB1c2VkIG9ubHkg
aWYgaXQgaXMga25vd24gdGhhdCB0aGUgbGlmZXRpbWUgb2YKKyAgICogdGhpcyBVbmljb2RlU3Ry
aW5nIGlzIGF0IGxlYXN0IGFzIGxvbmcgYXMgdGhlIGxpZmV0aW1lIG9mIHRoZSBhbGlhc2VkIGJ1
ZmZlcgorICAgKiBpbmNsdWRpbmcgaXRzIGNvbnRlbnRzLCBmb3IgZXhhbXBsZSBmb3Igc3RyaW5n
cyBmcm9tIHJlc291cmNlIGJ1bmRsZXMKKyAgICogb3IgYWxpYXNlcyB0byBzdHJpbmcgY29udGVu
dHMuCisgICAqCisgICAqIEBwYXJhbSBzcmMgVGhlIHRleHQgY29udGFpbmluZyB0aGUgY2hhcmFj
dGVycyB0byByZXBsYWNlLgorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICog
QHN0YWJsZSBJQ1UgMi40CisgICAqLworICBVbmljb2RlU3RyaW5nICZmYXN0Q29weUZyb20oY29u
c3QgVW5pY29kZVN0cmluZyAmc3JjKTsKKworICAvKioKKyAgICogQXNzaWdubWVudCBvcGVyYXRv
ci4gIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyBVbmljb2RlU3RyaW5nCisgICAqIHdp
dGggdGhlIGNvZGUgdW5pdCA8VFQ+Y2g8L1RUPi4KKyAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHVu
aXQgdG8gcmVwbGFjZQorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgb3BlcmF0b3I9IChV
Q2hhciBjaCk7CisKKyAgLyoqCisgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3IuICBSZXBsYWNlIHRo
ZSBjaGFyYWN0ZXJzIGluIHRoaXMgVW5pY29kZVN0cmluZworICAgKiB3aXRoIHRoZSBjb2RlIHBv
aW50IDxUVD5jaDwvVFQ+LgorICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgdG8gcmVwbGFj
ZQorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgb3BlcmF0b3I9IChVQ2hhcjMyIGNoKTsK
KworICAvKioKKyAgICogU2V0IHRoZSB0ZXh0IGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0
byB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluIHRoZSByYW5nZQor
ICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNUZXh0Lmxlbmd0aCgpPC9UVD4pLgorICAg
KiA8VFQ+c3JjVGV4dDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY1RleHQg
dGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBzcmNTdGFydCB0
aGUgb2Zmc2V0IGludG8gPFRUPnNyY1RleHQ8L1RUPiB3aGVyZSBuZXcgY2hhcmFjdGVycworICAg
KiB3aWxsIGJlIG9idGFpbmVkCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAg
KiBAc3RhYmxlIElDVSAyLjIKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhj
b25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCk7CisKKyAgLyoqCisgICAqIFNldCB0aGUgdGV4dCBpbiB0aGUgVW5pY29kZVN0cmluZyBv
YmplY3QgdG8gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUg
cmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8
L1RUPikuCisgICAqIDxUVD5zcmNUZXh0PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFy
YW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFt
IHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IHdoZXJlIG5ldyBjaGFy
YWN0ZXJzCisgICAqIHdpbGwgYmUgb2J0YWluZWQKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUKKyAgICogcmVw
bGFjZSBzdHJpbmcuCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBV
bmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKKworICAvKioKKyAgICogU2V0IHRo
ZSB0ZXh0IGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY2hhcmFjdGVycyBpbgor
ICAgKiA8VFQ+c3JjVGV4dDwvVFQ+LgorICAgKiA8VFQ+c3JjVGV4dDwvVFQ+IGlzIG5vdCBtb2Rp
ZmllZC4KKyAgICogQHBhcmFtIHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0
ZXJzCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVbmljb2RlU3Ry
aW5nJiBzcmNUZXh0KTsKKworICAvKioKKyAgICogU2V0IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBV
bmljb2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8VFQ+c3JjQ2hh
cnM8L1RUPi4gPFRUPnNyY0NoYXJzPC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0g
c3JjQ2hhcnMgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBz
cmNMZW5ndGggdGhlIG51bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gc3JjQ2hhcnMuCisg
ICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMs
CisgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFNldCB0
aGUgY2hhcmFjdGVycyBpbiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QgdG8gdGhlIGNvZGUgdW5p
dAorICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3JjQ2hhciB0aGUgY29kZSB1
bml0IHdoaWNoIGJlY29tZXMgdGhlIFVuaWNvZGVTdHJpbmcncyBjaGFyYWN0ZXIKKyAgICogY29u
dGVudAorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiBzZXRUbyhVQ2hhciBzcmNDaGFyKTsKKworICAv
KioKKyAgICogU2V0IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0
byB0aGUgY29kZSBwb2ludAorICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3Jj
Q2hhciB0aGUgY29kZSBwb2ludCB3aGljaCBiZWNvbWVzIHRoZSBVbmljb2RlU3RyaW5nJ3MgY2hh
cmFjdGVyCisgICAqIGNvbnRlbnQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyYgc2V0VG8oVUNoYXIz
MiBzcmNDaGFyKTsKKworICAvKioKKyAgICogQWxpYXNpbmcgc2V0VG8oKSBmdW5jdGlvbiwgYW5h
bG9nb3VzIHRvIHRoZSByZWFkb25seS1hbGlhc2luZyBVQ2hhciogY29uc3RydWN0b3IuCisgICAq
IFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LCBidXQK
KyAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5pY29kZVN0cmluZyBpcyBk
ZXN0cm95ZWQuCisgICAqIFRoaXMgaGFzIGNvcHktb24td3JpdGUgc2VtYW50aWNzOgorICAgKiBX
aGVuIHRoZSBzdHJpbmcgaXMgbW9kaWZpZWQsIHRoZW4gdGhlIGJ1ZmZlciBpcyBmaXJzdCBjb3Bp
ZWQgaW50bworICAgKiBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5LgorICAgKiBUaGUgYWxpYXNlZCBi
dWZmZXIgaXMgbmV2ZXIgbW9kaWZpZWQuCisgICAqIEluIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhl
ciBVbmljb2RlU3RyaW5nLCB0aGUgdGV4dCB3aWxsIGJlIGFsaWFzZWQgYWdhaW4sCisgICAqIHNv
IHRoYXQgYm90aCBzdHJpbmdzIHRoZW4gYWxpYXMgdGhlIHNhbWUgcmVhZG9ubHktdGV4dC4KKyAg
ICoKKyAgICogQHBhcmFtIGlzVGVybWluYXRlZCBzcGVjaWZpZXMgaWYgPGNvZGU+dGV4dDwvY29k
ZT4gaXMgPGNvZGU+TlVMPC9jb2RlPi10ZXJtaW5hdGVkLgorICAgKiAgICAgICAgICAgICAgICAg
ICAgIFRoaXMgbXVzdCBiZSB0cnVlIGlmIDxjb2RlPnRleHRMZW5ndGg9PS0xPC9jb2RlPi4KKyAg
ICogQHBhcmFtIHRleHQgVGhlIGNoYXJhY3RlcnMgdG8gYWxpYXMgZm9yIHRoZSBVbmljb2RlU3Ry
aW5nLgorICAgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFj
dGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiB0byBhbGlhcy4KKyAgICogICAgICAgICAgICAgICAg
ICAgSWYgLTEsIHRoZW4gdGhpcyBjb25zdHJ1Y3RvciB3aWxsIGRldGVybWluZSB0aGUgbGVuZ3Ro
CisgICAqICAgICAgICAgICAgICAgICAgIGJ5IGNhbGxpbmcgPGNvZGU+dV9zdHJsZW4oKTwvY29k
ZT4uCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgJnNldFRvKFVCb29sIGlzVGVybWluYXRlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgdGV4dExlbmd0aCk7CisKKyAgLyoqCisgICAqIEFsaWFzaW5nIHNldFRv
KCkgZnVuY3Rpb24sIGFuYWxvZ291cyB0byB0aGUgd3JpdGFibGUtYWxpYXNpbmcgVUNoYXIqIGNv
bnN0cnVjdG9yLgorICAgKiBUaGUgdGV4dCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBVbmljb2RlU3Ry
aW5nIG9iamVjdCwgYnV0CisgICAqIGl0IHdpbGwgbm90IGJlIHJlbGVhc2VkIHdoZW4gdGhlIFVu
aWNvZGVTdHJpbmcgaXMgZGVzdHJveWVkLgorICAgKiBUaGlzIGhhcyB3cml0ZS10aHJvdWdoIHNl
bWFudGljczoKKyAgICogRm9yIGFzIGxvbmcgYXMgdGhlIGNhcGFjaXR5IG9mIHRoZSBidWZmZXIg
aXMgc3VmZmljaWVudCwgd3JpdGUgb3BlcmF0aW9ucworICAgKiB3aWxsIGRpcmVjdGx5IGFmZmVj
dCB0aGUgYnVmZmVyLiBXaGVuIG1vcmUgY2FwYWNpdHkgaXMgbmVjZXNzYXJ5LCB0aGVuCisgICAq
IGEgbmV3IGJ1ZmZlciB3aWxsIGJlIGFsbG9jYXRlZCBhbmQgdGhlIGNvbnRlbnRzIGNvcGllZCBh
cyB3aXRoIHJlZ3VsYXJseQorICAgKiBjb25zdHJ1Y3RlZCBzdHJpbmdzLgorICAgKiBJbiBhbiBh
c3NpZ25tZW50IHRvIGFub3RoZXIgVW5pY29kZVN0cmluZywgdGhlIGJ1ZmZlciB3aWxsIGJlIGNv
cGllZC4KKyAgICogVGhlIGV4dHJhY3QoVUNoYXIgKmRzdCkgZnVuY3Rpb24gZGV0ZWN0cyB3aGV0
aGVyIHRoZSBkc3QgcG9pbnRlciBpcyB0aGUgc2FtZQorICAgKiBhcyB0aGUgc3RyaW5nIGJ1ZmZl
ciBpdHNlbGYgYW5kIHdpbGwgaW4gdGhpcyBjYXNlIG5vdCBjb3B5IHRoZSBjb250ZW50cy4KKyAg
ICoKKyAgICogQHBhcmFtIGJ1ZmZlciBUaGUgY2hhcmFjdGVycyB0byBhbGlhcyBmb3IgdGhlIFVu
aWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSBidWZmTGVuZ3RoIFRoZSBudW1iZXIgb2YgVW5pY29k
ZSBjaGFyYWN0ZXJzIGluIDxjb2RlPmJ1ZmZlcjwvY29kZT4gdG8gYWxpYXMuCisgICAqIEBwYXJh
bSBidWZmQ2FwYWNpdHkgVGhlIHNpemUgb2YgPGNvZGU+YnVmZmVyPC9jb2RlPiBpbiBVQ2hhcnMu
CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIFVuaWNvZGVTdHJpbmcgJnNldFRvKFVDaGFyICpidWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgYnVmZkxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBidWZmQ2FwYWNpdHkpOworCisgIC8qKgorICAgKiBNYWtlIHRoaXMgVW5pY29kZVN0
cmluZyBvYmplY3QgaW52YWxpZC4KKyAgICogVGhlIHN0cmluZyB3aWxsIHRlc3QgVFJVRSB3aXRo
IGlzQm9ndXMoKS4KKyAgICoKKyAgICogQSBib2d1cyBzdHJpbmcgaGFzIG5vIHZhbHVlLiBJdCBp
cyBkaWZmZXJlbnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCisgICAqIEl0IGNhbiBiZSB1c2VkIHRv
IGluZGljYXRlIHRoYXQgbm8gc3RyaW5nIHZhbHVlIGlzIGF2YWlsYWJsZS4KKyAgICogZ2V0QnVm
ZmVyKCkgYW5kIGdldFRlcm1pbmF0ZWRCdWZmZXIoKSByZXR1cm4gTlVMTCwgYW5kCisgICAqIGxl
bmd0aCgpIHJldHVybnMgMC4KKyAgICoKKyAgICogVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGlzIHVz
ZWQgdGhyb3VnaG91dCB0aGUgVW5pY29kZVN0cmluZworICAgKiBpbXBsZW1lbnRhdGlvbiB0byBp
bmRpY2F0ZSB0aGF0IGEgVW5pY29kZVN0cmluZyBvcGVyYXRpb24gZmFpbGVkLAorICAgKiBhbmQg
bWF5IGJlIHVzZWQgaW4gb3RoZXIgZnVuY3Rpb25zLAorICAgKiBlc3BlY2lhbGx5IGJ1dCBub3Qg
ZXhjbHVzaXZlbHkgd2hlbiBzdWNoIGZ1bmN0aW9ucyBkbyBub3QKKyAgICogdGFrZSBhIFVFcnJv
ckNvZGUgZm9yIHNpbXBsaWNpdHkuCisgICAqCisgICAqIFRoZSBmb2xsb3dpbmcgbWV0aG9kcywg
YW5kIG5vIG90aGVycywgd2lsbCBjbGVhciBhIHN0cmluZyBvYmplY3QncyBib2d1cyBmbGFnOgor
ICAgKiAtIHJlbW92ZSgpCisgICAqIC0gcmVtb3ZlKDAsIElOVDMyX01BWCkKKyAgICogLSB0cnVu
Y2F0ZSgwKQorICAgKiAtIG9wZXJhdG9yPSgpIChhc3NpZ25tZW50IG9wZXJhdG9yKQorICAgKiAt
IHNldFRvKC4uLikKKyAgICoKKyAgICogVGhlIHNpbXBsZXN0IHdheXMgdG8gdHVybiBhIGJvZ3Vz
IHN0cmluZyBpbnRvIGFuIGVtcHR5IG9uZQorICAgKiBpcyB0byB1c2UgdGhlIHJlbW92ZSgpIGZ1
bmN0aW9uLgorICAgKiBFeGFtcGxlcyBmb3Igb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGVxdWl2
YWxlbnQgdG8gInNldCB0byBlbXB0eSBzdHJpbmciOgorICAgKiBcY29kZQorICAgKiBpZihzLmlz
Qm9ndXMoKSkgeworICAgKiAgIHMucmVtb3ZlKCk7ICAgICAgICAgICAvLyBzZXQgdG8gYW4gZW1w
dHkgc3RyaW5nIChyZW1vdmUgYWxsKSwgb3IKKyAgICogICBzLnJlbW92ZSgwLCBJTlQzMl9NQVgp
OyAvLyBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIChyZW1vdmUgYWxsKSwgb3IKKyAgICogICBzLnRy
dW5jYXRlKDApOyAgICAgICAgLy8gc2V0IHRvIGFuIGVtcHR5IHN0cmluZyAoY29tcGxldGUgdHJ1
bmNhdGlvbiksIG9yCisgICAqICAgcz1Vbmljb2RlU3RyaW5nKCk7ICAgIC8vIGFzc2lnbiBhbiBl
bXB0eSBzdHJpbmcsIG9yCisgICAqICAgcy5zZXRUbygoVUNoYXIzMiktMSk7IC8vIHNldCB0byBh
IHBzZXVkbyBjb2RlIHBvaW50IHRoYXQgaXMgb3V0IG9mIHJhbmdlLCBvcgorICAgKiAgIHN0YXRp
YyBjb25zdCBVQ2hhciBudWw9MDsKKyAgICogICBzLnNldFRvKCZudWwsIDApOyAgICAgLy8gc2V0
IHRvIGFuIGVtcHR5IEMgVW5pY29kZSBzdHJpbmcKKyAgICogfQorICAgKiBcZW5kY29kZQorICAg
KgorICAgKiBAc2VlIGlzQm9ndXMoKQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZv
aWQgc2V0VG9Cb2d1cygpOworCisgIC8qKgorICAgKiBTZXQgdGhlIGNoYXJhY3RlciBhdCB0aGUg
c3BlY2lmaWVkIG9mZnNldCB0byB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci4KKyAgICogQHBhcmFt
IG9mZnNldCBBIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0IG9mIHRoZSBjaGFyYWN0ZXIgdG8g
c2V0CisgICAqIEBwYXJhbSBjaCBUaGUgbmV3IGNoYXJhY3RlcgorICAgKiBAcmV0dXJuIEEgcmVm
ZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3Ry
aW5nJiBzZXRDaGFyQXQoaW50MzJfdCBvZmZzZXQsCisgICAgICAgICAgICAgICBVQ2hhciBjaCk7
CisKKworICAvKiBBcHBlbmQgb3BlcmF0aW9ucyAqLworCisgIC8qKgorICAgKiBBcHBlbmQgb3Bl
cmF0b3IuIEFwcGVuZCB0aGUgY29kZSB1bml0IDxUVD5jaDwvVFQ+IHRvIHRoZSBVbmljb2RlU3Ry
aW5nCisgICAqIG9iamVjdC4KKyAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHVuaXQgdG8gYmUgYXBw
ZW5kZWQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyBpbmxpbmUgIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9yKz0gKFVDaGFyIGNo
KTsKKworICAvKioKKyAgICogQXBwZW5kIG9wZXJhdG9yLiBBcHBlbmQgdGhlIGNvZGUgcG9pbnQg
PFRUPmNoPC9UVD4gdG8gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogb2JqZWN0LgorICAgKiBAcGFy
YW0gY2ggdGhlIGNvZGUgcG9pbnQgdG8gYmUgYXBwZW5kZWQKKyAgICogQHJldHVybiBhIHJlZmVy
ZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyBpbmxpbmUgIFVuaWNv
ZGVTdHJpbmcmIG9wZXJhdG9yKz0gKFVDaGFyMzIgY2gpOworCisgIC8qKgorICAgKiBBcHBlbmQg
b3BlcmF0b3IuIEFwcGVuZCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IHRvIHRo
ZQorICAgKiBVbmljb2RlU3RyaW5nIG9iamVjdCBhdCBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxU
VD5zcmNUZXh0PC9UVD4gaXMKKyAgICogbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjVGV4
dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVy
ZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNv
ZGVTdHJpbmcmIG9wZXJhdG9yKz0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpOworCisg
IC8qKgorICAgKiBBcHBlbmQgdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RU
PiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBz
cmNMZW5ndGg8L1RUPikgdG8gdGhlCisgICAqIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0IG9mZnNl
dCA8VFQ+c3RhcnQ8L1RUPi4gPFRUPnNyY1RleHQ8L1RUPgorICAgKiBpcyBub3QgbW9kaWZpZWQu
CisgICAqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycwor
ICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gd2hl
cmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBvYnRhaW5lZAorICAgKiBAcGFyYW0gc3Jj
TGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluCisg
ICAqIHRoZSBhcHBlbmQgc3RyaW5nCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcwor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBl
bmQoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsCisgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIEFw
cGVuZCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IHRvIHRoZSBVbmljb2RlU3Ry
aW5nIG9iamVjdCBhdAorICAgKiBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxUVD5zcmNUZXh0PC9U
VD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0
aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChj
b25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KTsKKworICAvKioKKyAgICogQXBwZW5kIHRoZSBj
aGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNy
Y1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KSB0byB0aGUgVW5pY29k
ZVN0cmluZworICAgKiBvYmplY3QgYXQgb2Zmc2V0CisgICAqIDxUVD5zdGFydDwvVFQ+LiA8VFQ+
c3JjQ2hhcnM8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUg
c291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBv
ZmZzZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiB3aGVyZSBuZXcgY2hhcmFjdGVycworICAgKiB3
aWxsIGJlIG9idGFpbmVkCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluCisgICAqIHRoZSBhcHBlbmQgc3RyaW5nCisg
ICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgIGludDMyX3Qgc3Jj
TGVuZ3RoKTsKKworICAvKioKKyAgICogQXBwZW5kIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmND
aGFyczwvVFQ+IHRvIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdAorICAgKiBhdCBvZmZzZXQgPFRU
PnN0YXJ0PC9UVD4uIDxUVD5zcmNDaGFyczwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBh
cmFtIHNyY0NoYXJzIHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFy
YW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmND
aGFyczwvVFQ+CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVUNo
YXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgor
ICAgKiBBcHBlbmQgdGhlIGNvZGUgdW5pdCA8VFQ+c3JjQ2hhcjwvVFQ+IHRvIHRoZSBVbmljb2Rl
U3RyaW5nIG9iamVjdC4KKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIGNvZGUgdW5pdCB0byBhcHBl
bmQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChVQ2hhciBzcmNDaGFyKTsK
KworICAvKioKKyAgICogQXBwZW5kIHRoZSBjb2RlIHBvaW50IDxUVD5zcmNDaGFyPC9UVD4gdG8g
dGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcGFyYW0gc3JjQ2hhciB0aGUgY29kZSBw
b2ludCB0byBhcHBlbmQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChVQ2hh
cjMyIHNyY0NoYXIpOworCisKKyAgLyogSW5zZXJ0IG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAg
ICogSW5zZXJ0IHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gaW4gdGhlIHJhbmdl
CisgICAqIFs8VFQ+c3JjU3RhcnQ8L1RUPiwgPFRUPnNyY1N0YXJ0ICsgc3JjTGVuZ3RoPC9UVD4p
IGludG8gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogb2JqZWN0IGF0IG9mZnNldCA8VFQ+c3RhcnQ8
L1RUPi4gPFRUPnNyY1RleHQ8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzdGFy
dCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBzcmNU
ZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3Rh
cnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMK
KyAgICogd2lsbCBiZSBvYnRhaW5lZAorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluCisgICAqIHRoZSBpbnNlcnQgc3Ry
aW5nCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBpbnNlcnQoaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICBp
bnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8q
KgorICAgKiBJbnNlcnQgdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbnRvIHRo
ZSBVbmljb2RlU3RyaW5nIG9iamVjdAorICAgKiBhdCBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxU
VD5zcmNUZXh0PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9m
ZnNldCB3aGVyZSB0aGUgaW5zZXJ0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUg
c291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0
byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJp
bmcmIGluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmlu
ZyYgc3JjVGV4dCk7CisKKyAgLyoqCisgICAqIEluc2VydCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+
c3JjQ2hhcnM8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+
c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikgaW50byB0aGUgVW5pY29kZVN0cmluZworICAgKiAg
b2JqZWN0IGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4gPFRUPnNyY0NoYXJzPC9UVD4gaXMgbm90
IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgaW5z
ZXJ0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gc3JjQ2hhcnMgdGhlIHNvdXJjZSBmb3IgdGhlIG5l
dyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPFRUPnNy
Y0NoYXJzPC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBvYnRhaW5lZAor
ICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3Jj
Q2hhcnM8L1RUPgorICAgKiBpbiB0aGUgaW5zZXJ0IHN0cmluZworICAgKiBAcmV0dXJuIGEgcmVm
ZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5p
Y29kZVN0cmluZyYgaW5zZXJ0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICBjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgorICAgKiBJbnNlcnQgdGhlIGNoYXJhY3RlcnMg
aW4gPFRUPnNyY0NoYXJzPC9UVD4gaW50byB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QKKyAgICog
YXQgb2Zmc2V0IDxUVD5zdGFydDwvVFQ+LiA8VFQ+c3JjQ2hhcnM8L1RUPiBpcyBub3QgbW9kaWZp
ZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gYmVn
aW5zCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3Rl
cnMKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVy
cyBpbiBzcmNDaGFycy4KKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgorICAgKiBJbnNlcnQgdGhlIGNvZGUgdW5p
dCA8VFQ+c3JjQ2hhcjwvVFQ+IGludG8gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0CisgICAq
IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQg
d2hpY2ggdGhlIGluc2VydGlvbiBvY2N1cnMKKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIGNvZGUg
dW5pdCB0byBpbnNlcnQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgVUNoYXIgc3JjQ2hhcik7CisKKyAgLyoqCisgICAqIElu
c2VydCB0aGUgY29kZSBwb2ludCA8VFQ+c3JjQ2hhcjwvVFQ+IGludG8gdGhlIFVuaWNvZGVTdHJp
bmcgb2JqZWN0IGF0CisgICAqIG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4KKyAgICogQHBhcmFtIHN0
YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIGluc2VydGlvbiBvY2N1cnMKKyAgICogQHBhcmFt
IHNyY0NoYXIgdGhlIGNvZGUgcG9pbnQgdG8gaW5zZXJ0CisgICAqIEByZXR1cm4gYSByZWZlcmVu
Y2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2Rl
U3RyaW5nJiBpbnNlcnQoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgIFVDaGFyMzIgc3JjQ2hh
cik7CisKKworICAvKiBSZXBsYWNlIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogUmVwbGFj
ZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+
c3RhcnQgKyBsZW5ndGg8L1RUPikgd2l0aCB0aGUgY2hhcmFjdGVycyBpbgorICAgKiA8VFQ+c3Jj
VGV4dDwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNT
dGFydCArIHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogPFRUPnNyY1RleHQ8L1RUPiBpcyBub3QgbW9k
aWZpZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNl
IG9wZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJh
Y3RlcnMgdG8gcmVwbGFjZS4gVGhlIGNoYXJhY3RlciBhdAorICAgKiA8VFQ+c3RhcnQgKyBsZW5n
dGg8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2Ug
Zm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBp
bnRvIDxUVD5zcmNUZXh0PC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBv
YnRhaW5lZAorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biA8VFQ+c3JjVGV4dDwvVFQ+IGluCisgICAqIHRoZSByZXBsYWNlIHN0cmluZworICAgKiBAcmV0
dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBV
bmljb2RlU3RyaW5nJiByZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoKTsKKworICAvKioKKyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UK
KyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikKKyAgICogd2l0
aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+LiAgPFRUPnNyY1RleHQ8L1RUPiBp
cworICAgKiAgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3
aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhl
IG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuIFRoZSBjaGFyYWN0ZXIgYXQKKyAgICog
PFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3Jj
VGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJl
ZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0
cmluZyYgcmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgIGludDMyX3QgbGVuZ3Ro
LAorICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpOworCisgIC8qKgor
ICAgKiBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0
PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluCisg
ICAqIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9U
VD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KS4gPFRUPnNyY0NoYXJzPC9UVD4KKyAg
ICogaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGlj
aCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuICBUaGUgY2hhcmFjdGVyIGF0CisgICAqIDxU
VD5zdGFydCArIGxlbmd0aDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0No
YXJzIHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3Rh
cnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNDaGFyczwvVFQ+IHdoZXJlIG5ldyBjaGFyYWN0ZXJz
CisgICAqIHdpbGwgYmUgb2J0YWluZWQKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVy
IG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4gdGhlIHJlcGxhY2Ug
c3RyaW5nCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4g
dGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4p
IHdpdGggdGhlIGNoYXJhY3RlcnMgaW4KKyAgICogPFRUPnNyY0NoYXJzPC9UVD4uICA8VFQ+c3Jj
Q2hhcnM8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0
IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFtIGxlbmd0
aCBudW1iZXIgb2YgY2hhcmFjdGVycyB0byByZXBsYWNlLiAgVGhlIGNoYXJhY3RlciBhdAorICAg
KiA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBz
cmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNy
Y0xlbmd0aCB0aGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycyBpbiBzcmNDaGFycworICAg
KiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgcmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFy
cywKKyAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFJlcGxh
Y2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRU
PnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhlIGNvZGUgdW5pdAorICAgKiA8VFQ+c3JjQ2hh
cjwvVFQ+LgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFj
ZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIHRvIHJlcGxhY2UuICBUaGUgY2hhcmFjdGVyIGF0CisgICAqIDxUVD5zdGFydCArIGxl
bmd0aDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIG5ldyBj
b2RlIHVuaXQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUg
SUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBz
dGFydCwKKyAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICBVQ2hhciBz
cmNDaGFyKTsKKworICAvKioKKyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFu
Z2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgd2l0aCB0
aGUgY29kZSBwb2ludAorICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3RhcnQg
dGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBw
YXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuICBUaGUgY2hh
cmFjdGVyIGF0CisgICAqIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4K
KyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIG5ldyBjb2RlIHBvaW50CisgICAqIEByZXR1cm4gYSBy
ZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBV
bmljb2RlU3RyaW5nJiByZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICAgICAgVUNoYXIzMiBzcmNDaGFyKTsKKworICAvKioKKyAgICog
UmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+
bGltaXQ8L1RUPikKKyAgICogd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+
LiA8VFQ+c3JjVGV4dDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHN0YXJ0IHRo
ZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworICAgKiBAcGFy
YW0gbGltaXQgdGhlIG9mZnNldCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIHJlcGxhY2UgcmFu
Z2UKKyAgICogQHBhcmFtIHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJz
CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0
YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgICAgY29u
c3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCk7CisKKyAgLyoqCisgICAqIFJlcGxhY2UgdGhlIGNo
YXJhY3RlcnMgaW4gdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPmxpbWl0PC9UVD4pCisg
ICAqIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UK
KyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjTGltaXQ8L1RUPikuIDxUVD5zcmNUZXh0
PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3
aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsaW1pdCB0aGUg
b2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgcmVwbGFjZSByYW5nZQorICAgKiBAcGFy
YW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFt
IHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiB3aGVyZSBuZXcgY2hh
cmFjdGVycworICAgKiB3aWxsIGJlIG9idGFpbmVkCisgICAqIEBwYXJhbSBzcmNMaW1pdCB0aGUg
b2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgcmFuZ2UgdG8gY29weQorICAgKiBpbiA8
VFQ+c3JjVGV4dDwvVFQ+CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBsYWNlQmV0
d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAg
ICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGltaXQpOwor
CisgIC8qKgorICAgKiBSZXBsYWNlIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhl
IGdpdmVuIHRleHQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNs
dXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgKiBAcGFy
YW0gbGltaXQgdGhlIGVuZGluZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1p
dAorICAgKiA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRv
IHJlcGxhY2UgY2hhcmFjdGVycyA8Y29kZT5zdGFydDwvY29kZT4KKyAgICogdG8gPGNvZGU+bGlt
aXQgLSAxPC9jb2RlPgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVSZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpOworCisgIC8qKgorICAgKiBS
ZXBsYWNlYWJsZSBBUEkKKyAgICogQHJldHVybiBUUlVFIGlmIGl0IGhhcyBNZXRhRGF0YQorICAg
KiBAc3RhYmxlIElDVSAyLjQKKyAgICovCisgIHZpcnR1YWwgVUJvb2wgaGFzTWV0YURhdGEoKSBj
b25zdDsKKworICAvKioKKyAgICogQ29weSBhIHN1YnN0cmluZyBvZiB0aGlzIG9iamVjdCwgcmV0
YWluaW5nIGF0dHJpYnV0ZSAob3V0LW9mLWJhbmQpCisgICAqIGluZm9ybWF0aW9uLiAgVGhpcyBt
ZXRob2QgaXMgdXNlZCB0byBkdXBsaWNhdGUgb3IgcmVvcmRlciBzdWJzdHJpbmdzLgorICAgKiBU
aGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgor
ICAgKgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8
Y29kZT4wIDw9IHN0YXJ0IDw9CisgICAqIGxpbWl0PC9jb2RlPi4KKyAgICogQHBhcmFtIGxpbWl0
IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQgPD0KKyAg
ICogbGVuZ3RoKCk8L2NvZGU+LgorICAgKiBAcGFyYW0gZGVzdCB0aGUgZGVzdGluYXRpb24gaW5k
ZXguICBUaGUgY2hhcmFjdGVycyBmcm9tCisgICAqIDxjb2RlPnN0YXJ0Li5saW1pdC0xPC9jb2Rl
PiB3aWxsIGJlIGNvcGllZCB0byA8Y29kZT5kZXN0PC9jb2RlPi4KKyAgICogSW1wbGVtZW50YXRp
b25zIG9mIHRoaXMgbWV0aG9kIG1heSBhc3N1bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8
CisgICAqIGRlc3QgPj0gbGltaXQ8L2NvZGU+LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIHZpcnR1YWwgdm9pZCBjb3B5KGludDMyX3Qgc3RhcnQsIGludDMyX3QgbGltaXQsIGludDMy
X3QgZGVzdCk7CisKKyAgLyogU2VhcmNoIGFuZCByZXBsYWNlIG9wZXJhdGlvbnMgKi8KKworICAv
KioKKyAgICogUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgY2hhcmFjdGVycyBpbiBvbGRUZXh0
IHdpdGggdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gbmV3VGV4dAorICAgKiBAcGFyYW0gb2xkVGV4
dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSBzZWFyY2ggdGV4dAorICAgKiBAcGFyYW0gbmV3VGV4
dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSByZXBsYWNlbWVudCB0ZXh0CisgICAqIEByZXR1cm4g
YSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBVbmljb2RlU3RyaW5nJiBmaW5kQW5kUmVwbGFjZShjb25zdCBVbmljb2RlU3RyaW5nJiBvbGRU
ZXh0LAorICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5ld1RleHQpOworCisg
IC8qKgorICAgKiBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiBjaGFyYWN0ZXJzIGluIG9sZFRl
eHQgd2l0aCBjaGFyYWN0ZXJzCisgICAqIGluIG5ld1RleHQKKyAgICogaW4gdGhlIHJhbmdlIFs8
VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLgorICAgKiBAcGFyYW0gc3Rh
cnQgdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSBpbiB3aGljaCByZXBsYWNlIHdpbGwgcGVyZm9ybWVk
CisgICAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2UgaW4gd2hpY2ggcmVw
bGFjZSB3aWxsIGJlIHBlcmZvcm1lZAorICAgKiBAcGFyYW0gb2xkVGV4dCB0aGUgdGV4dCBjb250
YWluaW5nIHRoZSBzZWFyY2ggdGV4dAorICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCBjb250
YWluaW5nIHRoZSByZXBsYWNlbWVudCB0ZXh0CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8g
dGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5n
JiBmaW5kQW5kUmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoLAorICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisg
ICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgbmV3VGV4dCk7CisKKyAgLyoqCisg
ICAqIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIGNoYXJhY3RlcnMgaW4gb2xkVGV4dCBpbiB0
aGUgcmFuZ2UKKyAgICogWzxUVD5vbGRTdGFydDwvVFQ+LCA8VFQ+b2xkU3RhcnQgKyBvbGRMZW5n
dGg8L1RUPikgd2l0aCB0aGUgY2hhcmFjdGVycworICAgKiBpbiBuZXdUZXh0IGluIHRoZSByYW5n
ZQorICAgKiBbPFRUPm5ld1N0YXJ0PC9UVD4sIDxUVD5uZXdTdGFydCArIG5ld0xlbmd0aDwvVFQ+
KQorICAgKiBpbiB0aGUgcmFuZ2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8
L1RUPikuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGluIHdoaWNo
IHJlcGxhY2Ugd2lsbCBwZXJmb3JtZWQKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9m
IHRoZSByYW5nZSBpbiB3aGljaCByZXBsYWNlIHdpbGwgYmUgcGVyZm9ybWVkCisgICAqIEBwYXJh
bSBvbGRUZXh0IHRoZSB0ZXh0IGNvbnRhaW5pbmcgdGhlIHNlYXJjaCB0ZXh0CisgICAqIEBwYXJh
bSBvbGRTdGFydCB0aGUgc3RhcnQgb2YgdGhlIHNlYXJjaCByYW5nZSBpbiA8VFQ+b2xkVGV4dDwv
VFQ+CisgICAqIEBwYXJhbSBvbGRMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgc2VhcmNoIHJhbmdl
IGluIDxUVD5vbGRUZXh0PC9UVD4KKyAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgY29udGFp
bmluZyB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICAgKiBAcGFyYW0gbmV3U3RhcnQgdGhlIHN0YXJ0
IG9mIHRoZSByZXBsYWNlbWVudCByYW5nZSBpbiA8VFQ+bmV3VGV4dDwvVFQ+CisgICAqIEBwYXJh
bSBuZXdMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgcmFuZ2UgaW4gPFRUPm5l
d1RleHQ8L1RUPgorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiBmaW5kQW5kUmVwbGFjZShpbnQzMl90
IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBv
bGRTdGFydCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IG9sZExlbmd0aCwKKyAgICAgICAgICAg
ICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBuZXdUZXh0LAorICAgICAgICAgICAgICAgIGludDMy
X3QgbmV3U3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBuZXdMZW5ndGgpOworCisKKyAg
LyogUmVtb3ZlIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogUmVtb3ZlIGFsbCBjaGFyYWN0
ZXJzIGZyb20gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcmV0dXJuIGEgcmVmZXJl
bmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5pY29k
ZVN0cmluZyYgcmVtb3ZlKHZvaWQpOworCisgIC8qKgorICAgKiBSZW1vdmUgdGhlIGNoYXJhY3Rl
cnMgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3Ro
PC9UVD4pIGZyb20gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcGFyYW0gc3RhcnQg
dGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIHJlbW92ZQorICAgKiBAcGFyYW0g
bGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byByZW1vdmUKKyAgICogQHJldHVybiBh
IHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5l
IFVuaWNvZGVTdHJpbmcmIHJlbW92ZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gKGludDMyX3QpSU5UMzJfTUFYKTsKKworICAv
KioKKyAgICogUmVtb3ZlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0
YXJ0PC9UVD4sIDxUVD5saW1pdDwvVFQ+KSBmcm9tIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4K
KyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBy
ZW1vdmUKKyAgICogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5n
IHRoZSByYW5nZSB0byByZW1vdmUKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlbW92
ZUJldHdlZW4oaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBsaW1pdCA9IChpbnQzMl90KUlOVDMyX01BWCk7CisKKyAgLyoqCisgICAq
IFJldGFpbiBvbmx5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPGNvZGU+c3Rh
cnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIGZyb20gdGhlIFVuaWNvZGVTdHJpbmcgb2Jq
ZWN0LgorICAgKiBSZW1vdmVzIGNoYXJhY3RlcnMgYmVmb3JlIDxjb2RlPnN0YXJ0PC9jb2RlPiBh
bmQgYXQgYW5kIGFmdGVyIDxjb2RlPmxpbWl0PC9jb2RlPi4KKyAgICogQHBhcmFtIHN0YXJ0IHRo
ZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byByZXRhaW4KKyAgICogQHBhcmFtIGxp
bWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSByYW5nZSB0byByZXRhaW4K
KyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDQuNAor
ICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcgJnJldGFpbkJldHdlZW4oaW50MzJfdCBzdGFy
dCwgaW50MzJfdCBsaW1pdCA9IElOVDMyX01BWCk7CisKKyAgLyogTGVuZ3RoIG9wZXJhdGlvbnMg
Ki8KKworICAvKioKKyAgICogUGFkIHRoZSBzdGFydCBvZiB0aGlzIFVuaWNvZGVTdHJpbmcgd2l0
aCB0aGUgY2hhcmFjdGVyIDxUVD5wYWRDaGFyPC9UVD4uCisgICAqIElmIHRoZSBsZW5ndGggb2Yg
dGhpcyBVbmljb2RlU3RyaW5nIGlzIGxlc3MgdGhhbiB0YXJnZXRMZW5ndGgsCisgICAqIGxlbmd0
aCgpIC0gdGFyZ2V0TGVuZ3RoIGNvcGllcyBvZiBwYWRDaGFyIHdpbGwgYmUgYWRkZWQgdG8gdGhl
CisgICAqIGJlZ2lubmluZyBvZiB0aGlzIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSB0YXJn
ZXRMZW5ndGggdGhlIGRlc2lyZWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcKKyAgICogQHBhcmFtIHBh
ZENoYXIgdGhlIGNoYXJhY3RlciB0byB1c2UgZm9yIHBhZGRpbmcuIERlZmF1bHRzIHRvCisgICAq
IHNwYWNlIChVKzAwMjApCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCB3YXMgcGFkZGVk
LCBGQUxTRSBvdGhlcndpc2UuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVUJvb2wg
cGFkTGVhZGluZyhpbnQzMl90IHRhcmdldExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgVUNo
YXIgcGFkQ2hhciA9IDB4MDAyMCk7CisKKyAgLyoqCisgICAqIFBhZCB0aGUgZW5kIG9mIHRoaXMg
VW5pY29kZVN0cmluZyB3aXRoIHRoZSBjaGFyYWN0ZXIgPFRUPnBhZENoYXI8L1RUPi4KKyAgICog
SWYgdGhlIGxlbmd0aCBvZiB0aGlzIFVuaWNvZGVTdHJpbmcgaXMgbGVzcyB0aGFuIHRhcmdldExl
bmd0aCwKKyAgICogbGVuZ3RoKCkgLSB0YXJnZXRMZW5ndGggY29waWVzIG9mIHBhZENoYXIgd2ls
bCBiZSBhZGRlZCB0byB0aGUKKyAgICogZW5kIG9mIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICog
QHBhcmFtIHRhcmdldExlbmd0aCB0aGUgZGVzaXJlZCBsZW5ndGggb2YgdGhlIHN0cmluZworICAg
KiBAcGFyYW0gcGFkQ2hhciB0aGUgY2hhcmFjdGVyIHRvIHVzZSBmb3IgcGFkZGluZy4gRGVmYXVs
dHMgdG8KKyAgICogc3BhY2UgKFUrMDAyMCkKKyAgICogQHJldHVybiBUUlVFIGlmIHRoZSB0ZXh0
IHdhcyBwYWRkZWQsIEZBTFNFIG90aGVyd2lzZS4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBVQm9vbCBwYWRUcmFpbGluZyhpbnQzMl90IHRhcmdldExlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgIFVDaGFyIHBhZENoYXIgPSAweDAwMjApOworCisgIC8qKgorICAgKiBUcnVuY2F0
ZSB0aGlzIFVuaWNvZGVTdHJpbmcgdG8gdGhlIDxUVD50YXJnZXRMZW5ndGg8L1RUPi4KKyAgICog
QHBhcmFtIHRhcmdldExlbmd0aCB0aGUgZGVzaXJlZCBsZW5ndGggb2YgdGhpcyBVbmljb2RlU3Ry
aW5nLgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIHRleHQgd2FzIHRydW5jYXRlZCwgRkFMU0Ug
b3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIHRy
dW5jYXRlKGludDMyX3QgdGFyZ2V0TGVuZ3RoKTsKKworICAvKioKKyAgICogVHJpbXMgbGVhZGlu
ZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBmcm9tIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICog
QHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8K
KyAgVW5pY29kZVN0cmluZyYgdHJpbSh2b2lkKTsKKworCisgIC8qIE1pc2NlbGxhbmVvdXMgb3Bl
cmF0aW9ucyAqLworCisgIC8qKgorICAgKiBSZXZlcnNlIHRoaXMgVW5pY29kZVN0cmluZyBpbiBw
bGFjZS4KKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJldmVyc2Uodm9pZCk7CisKKyAg
LyoqCisgICAqIFJldmVyc2UgdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsg
bGVuZ3RoPC9UVD4pIGluCisgICAqIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICogQHBhcmFtIHN0
YXJ0IHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgdG8gcmV2ZXJzZQorICAgKiBAcGFyYW0gbGVuZ3Ro
IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byB0byByZXZlcnNlCisgICAqIEByZXR1cm4gYSBy
ZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBV
bmljb2RlU3RyaW5nJiByZXZlcnNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgpOworCisgIC8qKgorICAgKiBDb252ZXJ0IHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMg
dG8gVVBQRVIgQ0FTRSBmb2xsb3dpbmcgdGhlIGNvbnZlbnRpb25zIG9mCisgICAqIHRoZSBkZWZh
dWx0IGxvY2FsZS4KKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcmIHRvVXBwZXIodm9pZCk7CisKKyAg
LyoqCisgICAqIENvbnZlcnQgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBVUFBFUiBDQVNFIGZv
bGxvd2luZyB0aGUgY29udmVudGlvbnMgb2YKKyAgICogYSBzcGVjaWZpYyBsb2NhbGUuCisgICAq
IEBwYXJhbSBsb2NhbGUgVGhlIGxvY2FsZSBjb250YWluaW5nIHRoZSBjb252ZW50aW9ucyB0byB1
c2UuCisgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhpcy4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiB0b1VwcGVyKGNvbnN0IExvY2FsZSYgbG9jYWxl
KTsKKworICAvKioKKyAgICogQ29udmVydCB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIHRvIGxvd2Vy
IGNhc2UgZm9sbG93aW5nIHRoZSBjb252ZW50aW9ucyBvZgorICAgKiB0aGUgZGVmYXVsdCBsb2Nh
bGUuCisgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhpcy4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiB0b0xvd2VyKHZvaWQpOworCisgIC8qKgorICAg
KiBDb252ZXJ0IHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gbG93ZXIgY2FzZSBmb2xsb3dpbmcg
dGhlIGNvbnZlbnRpb25zIG9mCisgICAqIGEgc3BlY2lmaWMgbG9jYWxlLgorICAgKiBAcGFyYW0g
bG9jYWxlIFRoZSBsb2NhbGUgY29udGFpbmluZyB0aGUgY29udmVudGlvbnMgdG8gdXNlLgorICAg
KiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIHRoaXMuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgVW5pY29kZVN0cmluZyYgdG9Mb3dlcihjb25zdCBMb2NhbGUmIGxvY2FsZSk7CisKKyNp
ZiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KKworICAvKioKKyAgICogVGl0bGVjYXNlIHRo
aXMgc3RyaW5nLCBjb252ZW5pZW5jZSBmdW5jdGlvbiB1c2luZyB0aGUgZGVmYXVsdCBsb2NhbGUu
CisgICAqCisgICAqIENhc2luZyBpcyBsb2NhbGUtZGVwZW5kZW50IGFuZCBjb250ZXh0LXNlbnNp
dGl2ZS4KKyAgICogVGl0bGVjYXNpbmcgdXNlcyBhIGJyZWFrIGl0ZXJhdG9yIHRvIGZpbmQgdGhl
IGZpcnN0IGNoYXJhY3RlcnMgb2Ygd29yZHMKKyAgICogdGhhdCBhcmUgdG8gYmUgdGl0bGVjYXNl
ZC4gSXQgdGl0bGVjYXNlcyB0aG9zZSBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2VzCisgICAqIGFs
bCBvdGhlcnMuCisgICAqCisgICAqIFRoZSB0aXRsZWNhc2UgYnJlYWsgaXRlcmF0b3IgY2FuIGJl
IHByb3ZpZGVkIHRvIGN1c3RvbWl6ZSBmb3IgYXJiaXRyYXJ5CisgICAqIHN0eWxlcywgdXNpbmcg
cnVsZXMgYW5kIGRpY3Rpb25hcmllcyBiZXlvbmQgdGhlIHN0YW5kYXJkIGl0ZXJhdG9ycy4KKyAg
ICogSXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGFsd2F5cyBwcm92aWRlIGFuIGl0ZXJhdG9y
IHRvIGF2b2lkCisgICAqIG9wZW5pbmcgYW5kIGNsb3Npbmcgb25lIGZvciBlYWNoIHN0cmluZy4K
KyAgICogVGhlIHN0YW5kYXJkIHRpdGxlY2FzZSBpdGVyYXRvciBmb3IgdGhlIHJvb3QgbG9jYWxl
IGltcGxlbWVudHMgdGhlCisgICAqIGFsZ29yaXRobSBvZiBVbmljb2RlIFRSIDIxLgorICAgKgor
ICAgKiBUaGlzIGZ1bmN0aW9uIHVzZXMgb25seSB0aGUgc2V0VGV4dCgpLCBmaXJzdCgpIGFuZCBu
ZXh0KCkgbWV0aG9kcyBvZiB0aGUKKyAgICogcHJvdmlkZWQgYnJlYWsgaXRlcmF0b3IuCisgICAq
CisgICAqIEBwYXJhbSB0aXRsZUl0ZXIgQSBicmVhayBpdGVyYXRvciB0byBmaW5kIHRoZSBmaXJz
dCBjaGFyYWN0ZXJzIG9mIHdvcmRzCisgICAqICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgdG8g
YmUgdGl0bGVjYXNlZC4KKyAgICogICAgICAgICAgICAgICAgICBJZiBub25lIGlzIHByb3ZpZGVk
ICgwKSwgdGhlbiBhIHN0YW5kYXJkIHRpdGxlY2FzZQorICAgKiAgICAgICAgICAgICAgICAgIGJy
ZWFrIGl0ZXJhdG9yIGlzIG9wZW5lZC4KKyAgICogICAgICAgICAgICAgICAgICBPdGhlcndpc2Ug
dGhlIHByb3ZpZGVkIGl0ZXJhdG9yIGlzIHNldCB0byB0aGUgc3RyaW5nJ3MgdGV4dC4KKyAgICog
QHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICov
CisgIFVuaWNvZGVTdHJpbmcgJnRvVGl0bGUoQnJlYWtJdGVyYXRvciAqdGl0bGVJdGVyKTsKKwor
ICAvKioKKyAgICogVGl0bGVjYXNlIHRoaXMgc3RyaW5nLgorICAgKgorICAgKiBDYXNpbmcgaXMg
bG9jYWxlLWRlcGVuZGVudCBhbmQgY29udGV4dC1zZW5zaXRpdmUuCisgICAqIFRpdGxlY2FzaW5n
IHVzZXMgYSBicmVhayBpdGVyYXRvciB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIHdv
cmRzCisgICAqIHRoYXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhvc2Ug
Y2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlcworICAgKiBhbGwgb3RoZXJzLgorICAgKgorICAgKiBU
aGUgdGl0bGVjYXNlIGJyZWFrIGl0ZXJhdG9yIGNhbiBiZSBwcm92aWRlZCB0byBjdXN0b21pemUg
Zm9yIGFyYml0cmFyeQorICAgKiBzdHlsZXMsIHVzaW5nIHJ1bGVzIGFuZCBkaWN0aW9uYXJpZXMg
YmV5b25kIHRoZSBzdGFuZGFyZCBpdGVyYXRvcnMuCisgICAqIEl0IG1heSBiZSBtb3JlIGVmZmlj
aWVudCB0byBhbHdheXMgcHJvdmlkZSBhbiBpdGVyYXRvciB0byBhdm9pZAorICAgKiBvcGVuaW5n
IGFuZCBjbG9zaW5nIG9uZSBmb3IgZWFjaCBzdHJpbmcuCisgICAqIFRoZSBzdGFuZGFyZCB0aXRs
ZWNhc2UgaXRlcmF0b3IgZm9yIHRoZSByb290IGxvY2FsZSBpbXBsZW1lbnRzIHRoZQorICAgKiBh
bGdvcml0aG0gb2YgVW5pY29kZSBUUiAyMS4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiB1c2Vz
IG9ubHkgdGhlIHNldFRleHQoKSwgZmlyc3QoKSBhbmQgbmV4dCgpIG1ldGhvZHMgb2YgdGhlCisg
ICAqIHByb3ZpZGVkIGJyZWFrIGl0ZXJhdG9yLgorICAgKgorICAgKiBAcGFyYW0gdGl0bGVJdGVy
IEEgYnJlYWsgaXRlcmF0b3IgdG8gZmluZCB0aGUgZmlyc3QgY2hhcmFjdGVycyBvZiB3b3Jkcwor
ICAgKiAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuCisgICAqICAg
ICAgICAgICAgICAgICAgSWYgbm9uZSBpcyBwcm92aWRlZCAoMCksIHRoZW4gYSBzdGFuZGFyZCB0
aXRsZWNhc2UKKyAgICogICAgICAgICAgICAgICAgICBicmVhayBpdGVyYXRvciBpcyBvcGVuZWQu
CisgICAqICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlIHRoZSBwcm92aWRlZCBpdGVyYXRvciBp
cyBzZXQgdG8gdGhlIHN0cmluZydzIHRleHQuCisgICAqIEBwYXJhbSBsb2NhbGUgICAgVGhlIGxv
Y2FsZSB0byBjb25zaWRlci4KKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAg
KiBAc3RhYmxlIElDVSAyLjEKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgJnRvVGl0bGUoQnJlYWtJ
dGVyYXRvciAqdGl0bGVJdGVyLCBjb25zdCBMb2NhbGUgJmxvY2FsZSk7CisKKyAgLyoqCisgICAq
IFRpdGxlY2FzZSB0aGlzIHN0cmluZywgd2l0aCBvcHRpb25zLgorICAgKgorICAgKiBDYXNpbmcg
aXMgbG9jYWxlLWRlcGVuZGVudCBhbmQgY29udGV4dC1zZW5zaXRpdmUuCisgICAqIFRpdGxlY2Fz
aW5nIHVzZXMgYSBicmVhayBpdGVyYXRvciB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9m
IHdvcmRzCisgICAqIHRoYXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhv
c2UgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlcworICAgKiBhbGwgb3RoZXJzLiAoVGhpcyBjYW4g
YmUgbW9kaWZpZWQgd2l0aCBvcHRpb25zLikKKyAgICoKKyAgICogVGhlIHRpdGxlY2FzZSBicmVh
ayBpdGVyYXRvciBjYW4gYmUgcHJvdmlkZWQgdG8gY3VzdG9taXplIGZvciBhcmJpdHJhcnkKKyAg
ICogc3R5bGVzLCB1c2luZyBydWxlcyBhbmQgZGljdGlvbmFyaWVzIGJleW9uZCB0aGUgc3RhbmRh
cmQgaXRlcmF0b3JzLgorICAgKiBJdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQgdG8gYWx3YXlzIHBy
b3ZpZGUgYW4gaXRlcmF0b3IgdG8gYXZvaWQKKyAgICogb3BlbmluZyBhbmQgY2xvc2luZyBvbmUg
Zm9yIGVhY2ggc3RyaW5nLgorICAgKiBUaGUgc3RhbmRhcmQgdGl0bGVjYXNlIGl0ZXJhdG9yIGZv
ciB0aGUgcm9vdCBsb2NhbGUgaW1wbGVtZW50cyB0aGUKKyAgICogYWxnb3JpdGhtIG9mIFVuaWNv
ZGUgVFIgMjEuCisgICAqCisgICAqIFRoaXMgZnVuY3Rpb24gdXNlcyBvbmx5IHRoZSBzZXRUZXh0
KCksIGZpcnN0KCkgYW5kIG5leHQoKSBtZXRob2RzIG9mIHRoZQorICAgKiBwcm92aWRlZCBicmVh
ayBpdGVyYXRvci4KKyAgICoKKyAgICogQHBhcmFtIHRpdGxlSXRlciBBIGJyZWFrIGl0ZXJhdG9y
IHRvIGZpbmQgdGhlIGZpcnN0IGNoYXJhY3RlcnMgb2Ygd29yZHMKKyAgICogICAgICAgICAgICAg
ICAgICB0aGF0IGFyZSB0byBiZSB0aXRsZWNhc2VkLgorICAgKiAgICAgICAgICAgICAgICAgIElm
IG5vbmUgaXMgcHJvdmlkZWQgKDApLCB0aGVuIGEgc3RhbmRhcmQgdGl0bGVjYXNlCisgICAqICAg
ICAgICAgICAgICAgICAgYnJlYWsgaXRlcmF0b3IgaXMgb3BlbmVkLgorICAgKiAgICAgICAgICAg
ICAgICAgIE90aGVyd2lzZSB0aGUgcHJvdmlkZWQgaXRlcmF0b3IgaXMgc2V0IHRvIHRoZSBzdHJp
bmcncyB0ZXh0LgorICAgKiBAcGFyYW0gbG9jYWxlICAgIFRoZSBsb2NhbGUgdG8gY29uc2lkZXIu
CisgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgYml0IHNldCwgc2VlIHVjYXNlbWFwX29wZW4o
KS4KKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc2VlIFVfVElUTEVD
QVNFX05PX0xPV0VSQ0FTRQorICAgKiBAc2VlIFVfVElUTEVDQVNFX05PX0JSRUFLX0FESlVTVE1F
TlQKKyAgICogQHNlZSB1Y2FzZW1hcF9vcGVuCisgICAqIEBzdGFibGUgSUNVIDMuOAorICAgKi8K
KyAgVW5pY29kZVN0cmluZyAmdG9UaXRsZShCcmVha0l0ZXJhdG9yICp0aXRsZUl0ZXIsIGNvbnN0
IExvY2FsZSAmbG9jYWxlLCB1aW50MzJfdCBvcHRpb25zKTsKKworI2VuZGlmCisKKyAgLyoqCisg
ICAqIENhc2UtZm9sZCB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIHN0cmluZy4KKyAgICogQ2FzZS1m
b2xkaW5nIGlzIGxvY2FsZS1pbmRlcGVuZGVudCBhbmQgbm90IGNvbnRleHQtc2Vuc2l0aXZlLAor
ICAgKiBidXQgdGhlcmUgaXMgYW4gb3B0aW9uIGZvciB3aGV0aGVyIHRvIGluY2x1ZGUgb3IgZXhj
bHVkZSBtYXBwaW5ncyBmb3IgZG90dGVkIEkKKyAgICogYW5kIGRvdGxlc3MgaSB0aGF0IGFyZSBt
YXJrZWQgd2l0aCAnSScgaW4gQ2FzZUZvbGRpbmcudHh0LgorICAgKiBUaGUgcmVzdWx0IG1heSBi
ZSBsb25nZXIgb3Igc2hvcnRlciB0aGFuIHRoZSBvcmlnaW5hbC4KKyAgICoKKyAgICogQHBhcmFt
IG9wdGlvbnMgRWl0aGVyIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgVV9GT0xEX0NBU0VfRVhDTFVE
RV9TUEVDSUFMX0kKKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgJmZvbGRDYXNlKHVpbnQzMl90IG9w
dGlvbnM9MCAvKlVfRk9MRF9DQVNFX0RFRkFVTFQqLyk7CisKKyAgLy89PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisgIC8vIEFjY2VzcyB0byB0aGUgaW50ZXJuYWwgYnVm
ZmVyCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIC8q
KgorICAgKiBHZXQgYSByZWFkL3dyaXRlIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4K
KyAgICogVGhlIGJ1ZmZlciBpcyBndWFyYW50ZWVkIHRvIGJlIGxhcmdlIGVub3VnaCBmb3IgYXQg
bGVhc3QgbWluQ2FwYWNpdHkgVUNoYXJzLAorICAgKiB3cml0YWJsZSwgYW5kIGlzIHN0aWxsIG93
bmVkIGJ5IHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAgICogQ2FsbHMgdG8gZ2V0QnVmZmVy
KG1pbkNhcGFjaXR5KSBtdXN0IG5vdCBiZSBuZXN0ZWQsIGFuZAorICAgKiBtdXN0IGJlIG1hdGNo
ZWQgd2l0aCBjYWxscyB0byByZWxlYXNlQnVmZmVyKG5ld0xlbmd0aCkuCisgICAqIElmIHRoZSBz
dHJpbmcgYnVmZmVyIHdhcyByZWFkLW9ubHkgb3Igc2hhcmVkLAorICAgKiB0aGVuIGl0IHdpbGwg
YmUgcmVhbGxvY2F0ZWQgYW5kIGNvcGllZC4KKyAgICoKKyAgICogQW4gYXR0ZW1wdGVkIG5lc3Rl
ZCBjYWxsIHdpbGwgcmV0dXJuIDAsIGFuZCB3aWxsIG5vdCBmdXJ0aGVyIG1vZGlmeSB0aGUKKyAg
ICogc3RhdGUgb2YgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBJdCBhbHNvIHJldHVy
bnMgMCBpZiB0aGUgc3RyaW5nIGlzIGJvZ3VzLgorICAgKgorICAgKiBUaGUgYWN0dWFsIGNhcGFj
aXR5IG9mIHRoZSBzdHJpbmcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBtaW5DYXBhY2l0eS4K
KyAgICogZ2V0Q2FwYWNpdHkoKSByZXR1cm5zIHRoZSBhY3R1YWwgY2FwYWNpdHkuCisgICAqIEZv
ciBtYW55IG9wZXJhdGlvbnMsIHRoZSBmdWxsIGNhcGFjaXR5IHNob3VsZCBiZSB1c2VkIHRvIGF2
b2lkIHJlYWxsb2NhdGlvbnMuCisgICAqCisgICAqIFdoaWxlIHRoZSBidWZmZXIgaXMgIm9wZW4i
IGJldHdlZW4gZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KQorICAgKiBhbmQgcmVsZWFzZUJ1ZmZlcihu
ZXdMZW5ndGgpLCB0aGUgZm9sbG93aW5nIGFwcGxpZXM6CisgICAqIC0gVGhlIHN0cmluZyBsZW5n
dGggaXMgc2V0IHRvIDAuCisgICAqIC0gQW55IHJlYWQgQVBJIGNhbGwgb24gdGhlIFVuaWNvZGVT
dHJpbmcgb2JqZWN0IHdpbGwgYmVoYXZlIGxpa2Ugb24gYSAwLWxlbmd0aCBzdHJpbmcuCisgICAq
IC0gQW55IHdyaXRlIEFQSSBjYWxsIG9uIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCBpcyBkaXNh
bGxvd2VkIGFuZCB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICAgKiAtIFlvdSBjYW4gcmVhZCBmcm9t
IGFuZCB3cml0ZSB0byB0aGUgcmV0dXJuZWQgYnVmZmVyLgorICAgKiAtIFRoZSBwcmV2aW91cyBz
dHJpbmcgY29udGVudHMgd2lsbCBzdGlsbCBiZSBpbiB0aGUgYnVmZmVyOworICAgKiAgIGlmIHlv
dSB3YW50IHRvIHVzZSBpdCwgdGhlbiB5b3UgbmVlZCB0byBjYWxsIGxlbmd0aCgpIGJlZm9yZSBn
ZXRCdWZmZXIobWluQ2FwYWNpdHkpLgorICAgKiAgIElmIHRoZSBsZW5ndGgoKSB3YXMgZ3JlYXRl
ciB0aGFuIG1pbkNhcGFjaXR5LCB0aGVuIGFueSBjb250ZW50cyBhZnRlciBtaW5DYXBhY2l0eQor
ICAgKiAgIG1heSBiZSBsb3N0LgorICAgKiAgIFRoZSBidWZmZXIgY29udGVudHMgaXMgbm90IE5V
TC10ZXJtaW5hdGVkIGJ5IGdldEJ1ZmZlcigpLgorICAgKiAgIElmIGxlbmd0aCgpPGdldENhcGFj
aXR5KCkgdGhlbiB5b3UgY2FuIHRlcm1pbmF0ZSBpdCBieSB3cml0aW5nIGEgTlVMCisgICAqICAg
YXQgaW5kZXggbGVuZ3RoKCkuCisgICAqIC0gWW91IG11c3QgY2FsbCByZWxlYXNlQnVmZmVyKG5l
d0xlbmd0aCkgYmVmb3JlIGFuZCBpbiBvcmRlciB0bworICAgKiAgIHJldHVybiB0byBub3JtYWwg
VW5pY29kZVN0cmluZyBvcGVyYXRpb24uCisgICAqCisgICAqIEBwYXJhbSBtaW5DYXBhY2l0eSB0
aGUgbWluaW11bSBudW1iZXIgb2YgVUNoYXJzIHRoYXQgYXJlIHRvIGJlIGF2YWlsYWJsZQorICAg
KiAgICAgICAgaW4gdGhlIGJ1ZmZlciwgc3RhcnRpbmcgYXQgdGhlIHJldHVybmVkIHBvaW50ZXI7
CisgICAqICAgICAgICBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IHN0cmluZyBjYXBhY2l0eSBpZiBt
aW5DYXBhY2l0eT09LTEKKyAgICogQHJldHVybiBhIHdyaXRhYmxlIHBvaW50ZXIgdG8gdGhlIGlu
dGVybmFsIHN0cmluZyBidWZmZXIsCisgICAqICAgICAgICAgb3IgMCBpZiBhbiBlcnJvciBvY2N1
cnMgKG5lc3RlZCBjYWxscywgb3V0IG9mIG1lbW9yeSkKKyAgICoKKyAgICogQHNlZSByZWxlYXNl
QnVmZmVyCisgICAqIEBzZWUgZ2V0VGVybWluYXRlZEJ1ZmZlcigpCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyAgVUNoYXIgKmdldEJ1ZmZlcihpbnQzMl90IG1pbkNhcGFjaXR5KTsKKwor
ICAvKioKKyAgICogUmVsZWFzZSBhIHJlYWQvd3JpdGUgYnVmZmVyIG9uIGEgVW5pY29kZVN0cmlu
ZyBvYmplY3Qgd2l0aCBhbgorICAgKiAib3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KS4KKyAg
ICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiBhIG1hdGNoZWQgcGFpciB3aXRoIGdl
dEJ1ZmZlcihtaW5DYXBhY2l0eSkuCisgICAqIHJlbGVhc2VCdWZmZXIobmV3TGVuZ3RoKSBtdXN0
IGJlIGNhbGxlZCBpZiBhbmQgb25seSBpZiBhIGdldEJ1ZmZlcihtaW5DYXBhY2l0eSkgaXMgIm9w
ZW4iLgorICAgKgorICAgKiBJdCB3aWxsIHNldCB0aGUgc3RyaW5nIGxlbmd0aCB0byBuZXdMZW5n
dGgsIGF0IG1vc3QgdG8gdGhlIGN1cnJlbnQgY2FwYWNpdHkuCisgICAqIElmIG5ld0xlbmd0aD09
LTEgdGhlbiBpdCB3aWxsIHNldCB0aGUgbGVuZ3RoIGFjY29yZGluZyB0byB0aGUKKyAgICogZmly
c3QgTlVMIGluIHRoZSBidWZmZXIsIG9yIHRvIHRoZSBjYXBhY2l0eSBpZiB0aGVyZSBpcyBubyBO
VUwuCisgICAqCisgICAqIEFmdGVyIGNhbGxpbmcgcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpIHRo
ZSBVbmljb2RlU3RyaW5nIGlzIGJhY2sgdG8gbm9ybWFsIG9wZXJhdGlvbi4KKyAgICoKKyAgICog
QHBhcmFtIG5ld0xlbmd0aCB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmpl
Y3Q7CisgICAqICAgICAgICBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBjYXBhY2l0eSBpZiBuZXdM
ZW5ndGggaXMgZ3JlYXRlciB0aGFuIHRoYXQ7CisgICAqICAgICAgICBpZiBuZXdMZW5ndGg9PS0x
LCBpdCBkZWZhdWx0cyB0byB1X3N0cmxlbihidWZmZXIpIGJ1dCBub3QgbW9yZSB0aGFuCisgICAq
ICAgICAgICB0aGUgY3VycmVudCBjYXBhY2l0eSBvZiB0aGUgc3RyaW5nCisgICAqCisgICAqIEBz
ZWUgZ2V0QnVmZmVyKGludDMyX3QgbWluQ2FwYWNpdHkpCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgdm9pZCByZWxlYXNlQnVmZmVyKGludDMyX3QgbmV3TGVuZ3RoPS0xKTsKKworICAv
KioKKyAgICogR2V0IGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4K
KyAgICogVGhpcyBjYW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lIG9uIGEgdmFsaWQgVW5pY29kZVN0
cmluZy4KKyAgICoKKyAgICogSXQgcmV0dXJucyAwIGlmIHRoZSBzdHJpbmcgaXMgYm9ndXMsIG9y
CisgICAqIGR1cmluZyBhbiAib3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KS4KKyAgICoKKyAg
ICogSXQgY2FuIGJlIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGRlc2lyZWQuCisgICAqIFRoZSBw
b2ludGVyIHRoYXQgaXQgcmV0dXJucyB3aWxsIHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgVW5pY29k
ZVN0cmluZyBvYmplY3QgaXMgbW9kaWZpZWQsCisgICAqIGF0IHdoaWNoIHRpbWUgdGhlIHBvaW50
ZXIgaXMgc2VtYW50aWNhbGx5IGludmFsaWRhdGVkIGFuZCBtdXN0IG5vdCBiZSB1c2VkIGFueSBt
b3JlLgorICAgKgorICAgKiBUaGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlciBjYW4gYmUgZGV0ZXJt
aW5lZCB3aXRoIGdldENhcGFjaXR5KCkuCisgICAqIFRoZSBwYXJ0IGFmdGVyIGxlbmd0aCgpIG1h
eSBvciBtYXkgbm90IGJlIGluaXRpYWxpemVkIGFuZCB2YWxpZCwKKyAgICogZGVwZW5kaW5nIG9u
IHRoZSBoaXN0b3J5IG9mIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAgICoKKyAgICogVGhl
IGJ1ZmZlciBjb250ZW50cyBpcyAocHJvYmFibHkpIG5vdCBOVUwtdGVybWluYXRlZC4KKyAgICog
WW91IGNhbiBjaGVjayBpZiBpdCBpcyB3aXRoCisgICAqIDxjb2RlPihzLmxlbmd0aCgpPHMuZ2V0
Q2FwYWNpdHkoKSAmJiBidWZmZXJbcy5sZW5ndGgoKV09PTApPC9jb2RlPi4KKyAgICogKFNlZSBn
ZXRUZXJtaW5hdGVkQnVmZmVyKCkuKQorICAgKgorICAgKiBUaGUgYnVmZmVyIG1heSByZXNpZGUg
aW4gcmVhZC1vbmx5IG1lbW9yeS4gSXRzIGNvbnRlbnRzIG11c3Qgbm90CisgICAqIGJlIG1vZGlm
aWVkLgorICAgKgorICAgKiBAcmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVy
bmFsIHN0cmluZyBidWZmZXIsCisgICAqICAgICAgICAgb3IgMCBpZiB0aGUgc3RyaW5nIGlzIGVt
cHR5IG9yIGJvZ3VzCisgICAqCisgICAqIEBzZWUgZ2V0QnVmZmVyKGludDMyX3QgbWluQ2FwYWNp
dHkpCisgICAqIEBzZWUgZ2V0VGVybWluYXRlZEJ1ZmZlcigpCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIGNvbnN0IFVDaGFyICpnZXRCdWZmZXIoKSBjb25zdDsKKworICAv
KioKKyAgICogR2V0IGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlciwK
KyAgICogbWFraW5nIHN1cmUgdGhhdCBpdCBpcyBOVUwtdGVybWluYXRlZC4KKyAgICogVGhpcyBj
YW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lIG9uIGEgdmFsaWQgVW5pY29kZVN0cmluZy4KKyAgICoK
KyAgICogSXQgcmV0dXJucyAwIGlmIHRoZSBzdHJpbmcgaXMgYm9ndXMsIG9yCisgICAqIGR1cmlu
ZyBhbiAib3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KSwgb3IgaWYgdGhlIGJ1ZmZlciBjYW5u
b3QKKyAgICogYmUgTlVMLXRlcm1pbmF0ZWQgKGJlY2F1c2UgbWVtb3J5IGFsbG9jYXRpb24gZmFp
bGVkKS4KKyAgICoKKyAgICogSXQgY2FuIGJlIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGRlc2ly
ZWQuCisgICAqIFRoZSBwb2ludGVyIHRoYXQgaXQgcmV0dXJucyB3aWxsIHJlbWFpbiB2YWxpZCB1
bnRpbCB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QgaXMgbW9kaWZpZWQsCisgICAqIGF0IHdoaWNo
IHRpbWUgdGhlIHBvaW50ZXIgaXMgc2VtYW50aWNhbGx5IGludmFsaWRhdGVkIGFuZCBtdXN0IG5v
dCBiZSB1c2VkIGFueSBtb3JlLgorICAgKgorICAgKiBUaGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZl
ciBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRoIGdldENhcGFjaXR5KCkuCisgICAqIFRoZSBwYXJ0IGFm
dGVyIGxlbmd0aCgpKzEgbWF5IG9yIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkLAor
ICAgKiBkZXBlbmRpbmcgb24gdGhlIGhpc3Rvcnkgb2YgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0
LgorICAgKgorICAgKiBUaGUgYnVmZmVyIGNvbnRlbnRzIGlzIGd1YXJhbnRlZWQgdG8gYmUgTlVM
LXRlcm1pbmF0ZWQuCisgICAqIGdldFRlcm1pbmF0ZWRCdWZmZXIoKSBtYXkgcmVhbGxvY2F0ZSB0
aGUgYnVmZmVyIGlmIGEgdGVybWluYXRpbmcgTlVMCisgICAqIGlzIHdyaXR0ZW4uCisgICAqIEZv
ciB0aGlzIHJlYXNvbiwgdGhpcyBmdW5jdGlvbiBpcyBub3QgY29uc3QsIHVubGlrZSBnZXRCdWZm
ZXIoKS4KKyAgICogTm90ZSB0aGF0IGEgVW5pY29kZVN0cmluZyBtYXkgYWxzbyBjb250YWluIE5V
TCBjaGFyYWN0ZXJzIGFzIHBhcnQgb2YgaXRzIGNvbnRlbnRzLgorICAgKgorICAgKiBUaGUgYnVm
ZmVyIG1heSByZXNpZGUgaW4gcmVhZC1vbmx5IG1lbW9yeS4gSXRzIGNvbnRlbnRzIG11c3Qgbm90
CisgICAqIGJlIG1vZGlmaWVkLgorICAgKgorICAgKiBAcmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50
ZXIgdG8gdGhlIGludGVybmFsIHN0cmluZyBidWZmZXIsCisgICAqICAgICAgICAgb3IgMCBpZiB0
aGUgc3RyaW5nIGlzIGVtcHR5IG9yIGJvZ3VzCisgICAqCisgICAqIEBzZWUgZ2V0QnVmZmVyKGlu
dDMyX3QgbWluQ2FwYWNpdHkpCisgICAqIEBzZWUgZ2V0QnVmZmVyKCkKKyAgICogQHN0YWJsZSBJ
Q1UgMi4yCisgICAqLworICBpbmxpbmUgY29uc3QgVUNoYXIgKmdldFRlcm1pbmF0ZWRCdWZmZXIo
KTsKKworICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgLy8g
Q29uc3RydWN0b3JzCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorCisgIC8qKiBDb25zdHJ1Y3QgYW4gZW1wdHkgVW5pY29kZVN0cmluZy4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKCk7CisKKyAgLyoqCisgICAqIENvbnN0
cnVjdCBhIFVuaWNvZGVTdHJpbmcgd2l0aCBjYXBhY2l0eSB0byBob2xkIDxUVD5jYXBhY2l0eTwv
VFQ+IFVDaGFycworICAgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIG51bWJlciBvZiBVQ2hhcnMgdGhp
cyBVbmljb2RlU3RyaW5nIHNob3VsZCBob2xkCisgICAqIGJlZm9yZSBhIHJlc2l6ZSBpcyBuZWNl
c3Nhcnk7IGlmIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwIGFuZCBjb3VudAorICAgKiBjb2RlIHBv
aW50cyBjIHRha2UgdXAgbW9yZSBzcGFjZSB0aGFuIGNhcGFjaXR5LCB0aGVuIGNhcGFjaXR5IGlz
IGFkanVzdGVkCisgICAqIGFjY29yZGluZ2x5LgorICAgKiBAcGFyYW0gYyBpcyB1c2VkIHRvIGlu
aXRpYWxseSBmaWxsIHRoZSBzdHJpbmcKKyAgICogQHBhcmFtIGNvdW50IHNwZWNpZmllcyBob3cg
bWFueSBjb2RlIHBvaW50cyBjIGFyZSB0byBiZSB3cml0dGVuIGluIHRoZQorICAgKiAgICAgICAg
ICAgICAgc3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmlu
ZyhpbnQzMl90IGNhcGFjaXR5LCBVQ2hhcjMyIGMsIGludDMyX3QgY291bnQpOworCisgIC8qKgor
ICAgKiBTaW5nbGUgVUNoYXIgKGNvZGUgdW5pdCkgY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSBj
aCB0aGUgY2hhcmFjdGVyIHRvIHBsYWNlIGluIHRoZSBVbmljb2RlU3RyaW5nCisgICAqIEBzdGFi
bGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyhVQ2hhciBjaCk7CisKKyAgLyoqCisg
ICAqIFNpbmdsZSBVQ2hhcjMyIChjb2RlIHBvaW50KSBjb25zdHJ1Y3Rvci4KKyAgICogQHBhcmFt
IGNoIHRoZSBjaGFyYWN0ZXIgdG8gcGxhY2UgaW4gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKFVDaGFyMzIgY2gpOworCisgIC8q
KgorICAgKiBVQ2hhciogY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBjaGFyYWN0
ZXJzIHRvIHBsYWNlIGluIHRoZSBVbmljb2RlU3RyaW5nLiAgPFRUPnRleHQ8L1RUPgorICAgKiBt
dXN0IGJlIE5VTEwgKFUrMDAwMCkgdGVybWluYXRlZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisg
ICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IFVDaGFyICp0ZXh0KTsKKworICAvKioKKyAgICog
VUNoYXIqIGNvbnN0cnVjdG9yLgorICAgKiBAcGFyYW0gdGV4dCBUaGUgY2hhcmFjdGVycyB0byBw
bGFjZSBpbiB0aGUgVW5pY29kZVN0cmluZy4KKyAgICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51
bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gPFRUPnRleHQ8L1RUPgorICAgKiB0byBjb3B5
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3QgVUNo
YXIgKnRleHQsCisgICAgICAgIGludDMyX3QgdGV4dExlbmd0aCk7CisKKyAgLyoqCisgICAqIFJl
YWRvbmx5LWFsaWFzaW5nIFVDaGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogVGhlIHRleHQgd2lsbCBi
ZSB1c2VkIGZvciB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QsIGJ1dAorICAgKiBpdCB3aWxsIG5v
dCBiZSByZWxlYXNlZCB3aGVuIHRoZSBVbmljb2RlU3RyaW5nIGlzIGRlc3Ryb3llZC4KKyAgICog
VGhpcyBoYXMgY29weS1vbi13cml0ZSBzZW1hbnRpY3M6CisgICAqIFdoZW4gdGhlIHN0cmluZyBp
cyBtb2RpZmllZCwgdGhlbiB0aGUgYnVmZmVyIGlzIGZpcnN0IGNvcGllZCBpbnRvCisgICAqIG5l
d2x5IGFsbG9jYXRlZCBtZW1vcnkuCisgICAqIFRoZSBhbGlhc2VkIGJ1ZmZlciBpcyBuZXZlciBt
b2RpZmllZC4KKyAgICogSW4gYW4gYXNzaWdubWVudCB0byBhbm90aGVyIFVuaWNvZGVTdHJpbmcs
IHRoZSB0ZXh0IHdpbGwgYmUgYWxpYXNlZCBhZ2FpbiwKKyAgICogc28gdGhhdCBib3RoIHN0cmlu
Z3MgdGhlbiBhbGlhcyB0aGUgc2FtZSByZWFkb25seS10ZXh0LgorICAgKgorICAgKiBAcGFyYW0g
aXNUZXJtaW5hdGVkIHNwZWNpZmllcyBpZiA8Y29kZT50ZXh0PC9jb2RlPiBpcyA8Y29kZT5OVUw8
L2NvZGU+LXRlcm1pbmF0ZWQuCisgICAqICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJl
IHRydWUgaWYgPGNvZGU+dGV4dExlbmd0aD09LTE8L2NvZGU+LgorICAgKiBAcGFyYW0gdGV4dCBU
aGUgY2hhcmFjdGVycyB0byBhbGlhcyBmb3IgdGhlIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJh
bSB0ZXh0TGVuZ3RoIFRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnRl
eHQ8L2NvZGU+IHRvIGFsaWFzLgorICAgKiAgICAgICAgICAgICAgICAgICBJZiAtMSwgdGhlbiB0
aGlzIGNvbnN0cnVjdG9yIHdpbGwgZGV0ZXJtaW5lIHRoZSBsZW5ndGgKKyAgICogICAgICAgICAg
ICAgICAgICAgYnkgY2FsbGluZyA8Y29kZT51X3N0cmxlbigpPC9jb2RlPi4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKFVCb29sIGlzVGVybWluYXRlZCwKKyAg
ICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqdGV4dCwKKyAgICAgICAgICAgICAgICBpbnQzMl90
IHRleHRMZW5ndGgpOworCisgIC8qKgorICAgKiBXcml0YWJsZS1hbGlhc2luZyBVQ2hhciogY29u
c3RydWN0b3IuCisgICAqIFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJp
bmcgb2JqZWN0LCBidXQKKyAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5p
Y29kZVN0cmluZyBpcyBkZXN0cm95ZWQuCisgICAqIFRoaXMgaGFzIHdyaXRlLXRocm91Z2ggc2Vt
YW50aWNzOgorICAgKiBGb3IgYXMgbG9uZyBhcyB0aGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlciBp
cyBzdWZmaWNpZW50LCB3cml0ZSBvcGVyYXRpb25zCisgICAqIHdpbGwgZGlyZWN0bHkgYWZmZWN0
IHRoZSBidWZmZXIuIFdoZW4gbW9yZSBjYXBhY2l0eSBpcyBuZWNlc3NhcnksIHRoZW4KKyAgICog
YSBuZXcgYnVmZmVyIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCB0aGUgY29udGVudHMgY29waWVkIGFz
IHdpdGggcmVndWxhcmx5CisgICAqIGNvbnN0cnVjdGVkIHN0cmluZ3MuCisgICAqIEluIGFuIGFz
c2lnbm1lbnQgdG8gYW5vdGhlciBVbmljb2RlU3RyaW5nLCB0aGUgYnVmZmVyIHdpbGwgYmUgY29w
aWVkLgorICAgKiBUaGUgZXh0cmFjdChVQ2hhciAqZHN0KSBmdW5jdGlvbiBkZXRlY3RzIHdoZXRo
ZXIgdGhlIGRzdCBwb2ludGVyIGlzIHRoZSBzYW1lCisgICAqIGFzIHRoZSBzdHJpbmcgYnVmZmVy
IGl0c2VsZiBhbmQgd2lsbCBpbiB0aGlzIGNhc2Ugbm90IGNvcHkgdGhlIGNvbnRlbnRzLgorICAg
KgorICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBjaGFyYWN0ZXJzIHRvIGFsaWFzIGZvciB0aGUgVW5p
Y29kZVN0cmluZy4KKyAgICogQHBhcmFtIGJ1ZmZMZW5ndGggVGhlIG51bWJlciBvZiBVbmljb2Rl
IGNoYXJhY3RlcnMgaW4gPGNvZGU+YnVmZmVyPC9jb2RlPiB0byBhbGlhcy4KKyAgICogQHBhcmFt
IGJ1ZmZDYXBhY2l0eSBUaGUgc2l6ZSBvZiA8Y29kZT5idWZmZXI8L2NvZGU+IGluIFVDaGFycy4K
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKFVDaGFyICpidWZm
ZXIsIGludDMyX3QgYnVmZkxlbmd0aCwgaW50MzJfdCBidWZmQ2FwYWNpdHkpOworCisjaWYgVV9D
SEFSU0VUX0lTX1VURjggfHwgIVVDT05GSUdfTk9fQ09OVkVSU0lPTgorCisgIC8qKgorICAgKiBj
aGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogQHBhcmFtIGNvZGVwYWdlRGF0YSBhbiBhcnJheSBvZiBi
eXRlcywgbnVsbC10ZXJtaW5hdGVkLAorICAgKiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBw
bGF0Zm9ybSdzIGRlZmF1bHQgY29kZXBhZ2UuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8K
KyAgVW5pY29kZVN0cmluZyhjb25zdCBjaGFyICpjb2RlcGFnZURhdGEpOworCisgIC8qKgorICAg
KiBjaGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogQHBhcmFtIGNvZGVwYWdlRGF0YSBhbiBhcnJheSBv
ZiBieXRlcyBpbiB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNvZGVwYWdlLgorICAgKiBAcGFyYW0g
ZGF0YUxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIDxUVD5jb2RlcGFnZURhdGE8L1RUPi4K
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIg
KmNvZGVwYWdlRGF0YSwgaW50MzJfdCBkYXRhTGVuZ3RoKTsKKworI2VuZGlmCisKKyNpZiAhVUNP
TkZJR19OT19DT05WRVJTSU9OCisKKyAgLyoqCisgICAqIGNoYXIqIGNvbnN0cnVjdG9yLgorICAg
KiBAcGFyYW0gY29kZXBhZ2VEYXRhIGFuIGFycmF5IG9mIGJ5dGVzLCBudWxsLXRlcm1pbmF0ZWQK
KyAgICogQHBhcmFtIGNvZGVwYWdlIHRoZSBlbmNvZGluZyBvZiA8VFQ+Y29kZXBhZ2VEYXRhPC9U
VD4uICBUaGUgc3BlY2lhbAorICAgKiB2YWx1ZSAwIGZvciA8VFQ+Y29kZXBhZ2U8L1RUPiBpbmRp
Y2F0ZXMgdGhhdCB0aGUgdGV4dCBpcyBpbiB0aGUKKyAgICogcGxhdGZvcm0ncyBkZWZhdWx0IGNv
ZGVwYWdlLgorICAgKgorICAgKiBJZiA8Y29kZT5jb2RlcGFnZTwvY29kZT4gaXMgYW4gZW1wdHkg
c3RyaW5nICg8Y29kZT4iIjwvY29kZT4pLAorICAgKiB0aGVuIGEgc2ltcGxlIGNvbnZlcnNpb24g
aXMgcGVyZm9ybWVkIG9uIHRoZSBjb2RlcGFnZS1pbnZhcmlhbnQKKyAgICogc3Vic2V0ICgiaW52
YXJpYW50IGNoYXJhY3RlcnMiKSBvZiB0aGUgcGxhdGZvcm0gZW5jb2RpbmcuIFNlZSB1dHlwZXMu
aC4KKyAgICogUmVjb21tZW5kYXRpb246IEZvciBpbnZhcmlhbnQtY2hhcmFjdGVyIHN0cmluZ3Mg
dXNlIHRoZSBjb25zdHJ1Y3RvcgorICAgKiBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKnNyYywg
aW50MzJfdCBsZW5ndGgsIGVudW0gRUludmFyaWFudCBpbnYpCisgICAqIGJlY2F1c2UgaXQgYXZv
aWRzIG9iamVjdCBjb2RlIGRlcGVuZGVuY2llcyBvZiBVbmljb2RlU3RyaW5nIG9uCisgICAqIHRo
ZSBjb252ZXJzaW9uIGNvZGUuCisgICAqCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAg
VW5pY29kZVN0cmluZyhjb25zdCBjaGFyICpjb2RlcGFnZURhdGEsIGNvbnN0IGNoYXIgKmNvZGVw
YWdlKTsKKworICAvKioKKyAgICogY2hhciogY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSBjb2Rl
cGFnZURhdGEgYW4gYXJyYXkgb2YgYnl0ZXMuCisgICAqIEBwYXJhbSBkYXRhTGVuZ3RoIFRoZSBu
dW1iZXIgb2YgYnl0ZXMgaW4gPFRUPmNvZGVwYWdlRGF0YTwvVFQ+LgorICAgKiBAcGFyYW0gY29k
ZXBhZ2UgdGhlIGVuY29kaW5nIG9mIDxUVD5jb2RlcGFnZURhdGE8L1RUPi4gIFRoZSBzcGVjaWFs
CisgICAqIHZhbHVlIDAgZm9yIDxUVD5jb2RlcGFnZTwvVFQ+IGluZGljYXRlcyB0aGF0IHRoZSB0
ZXh0IGlzIGluIHRoZQorICAgKiBwbGF0Zm9ybSdzIGRlZmF1bHQgY29kZXBhZ2UuCisgICAqIElm
IDxjb2RlPmNvZGVwYWdlPC9jb2RlPiBpcyBhbiBlbXB0eSBzdHJpbmcgKDxjb2RlPiIiPC9jb2Rl
PiksCisgICAqIHRoZW4gYSBzaW1wbGUgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQgb24gdGhlIGNv
ZGVwYWdlLWludmFyaWFudAorICAgKiBzdWJzZXQgKCJpbnZhcmlhbnQgY2hhcmFjdGVycyIpIG9m
IHRoZSBwbGF0Zm9ybSBlbmNvZGluZy4gU2VlIHV0eXBlcy5oLgorICAgKiBSZWNvbW1lbmRhdGlv
bjogRm9yIGludmFyaWFudC1jaGFyYWN0ZXIgc3RyaW5ncyB1c2UgdGhlIGNvbnN0cnVjdG9yCisg
ICAqIFVuaWNvZGVTdHJpbmcoY29uc3QgY2hhciAqc3JjLCBpbnQzMl90IGxlbmd0aCwgZW51bSBF
SW52YXJpYW50IGludikKKyAgICogYmVjYXVzZSBpdCBhdm9pZHMgb2JqZWN0IGNvZGUgZGVwZW5k
ZW5jaWVzIG9mIFVuaWNvZGVTdHJpbmcgb24KKyAgICogdGhlIGNvbnZlcnNpb24gY29kZS4KKyAg
ICoKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNo
YXIgKmNvZGVwYWdlRGF0YSwgaW50MzJfdCBkYXRhTGVuZ3RoLCBjb25zdCBjaGFyICpjb2RlcGFn
ZSk7CisKKyAgLyoqCisgICAqIGNoYXIgKiAvIFVDb252ZXJ0ZXIgY29uc3RydWN0b3IuCisgICAq
IFRoaXMgY29uc3RydWN0b3IgdXNlcyBhbiBleGlzdGluZyBVQ29udmVydGVyIG9iamVjdCB0bwor
ICAgKiBjb252ZXJ0IHRoZSBjb2RlcGFnZSBzdHJpbmcgdG8gVW5pY29kZSBhbmQgY29uc3RydWN0
IGEgVW5pY29kZVN0cmluZworICAgKiBmcm9tIHRoYXQuCisgICAqCisgICAqIFRoZSBjb252ZXJ0
ZXIgaXMgcmVzZXQgYXQgZmlyc3QuCisgICAqIElmIHRoZSBlcnJvciBjb2RlIGluZGljYXRlcyBh
IGZhaWx1cmUgYmVmb3JlIHRoaXMgY29uc3RydWN0b3IgaXMgY2FsbGVkLAorICAgKiBvciBpZiBh
biBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbnZlcnNpb24gb3IgY29uc3RydWN0aW9uLAorICAgKiB0
aGVuIHRoZSBzdHJpbmcgd2lsbCBiZSBib2d1cy4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiBh
dm9pZHMgdGhlIG92ZXJoZWFkIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBjb252ZXJ0ZXIgaWYK
KyAgICogbXVsdGlwbGUgc3RyaW5ncyBhcmUgY29uc3RydWN0ZWQuCisgICAqCisgICAqIEBwYXJh
bSBzcmMgaW5wdXQgY29kZXBhZ2Ugc3RyaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggbGVuZ3Ro
IG9mIHRoZSBpbnB1dCBzdHJpbmcsIGNhbiBiZSAtMSBmb3IgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
cworICAgKiBAcGFyYW0gY252IGNvbnZlcnRlciBvYmplY3QgKHVjbnZfcmVzZXRUb1VuaWNvZGUo
KSB3aWxsIGJlIGNhbGxlZCksCisgICAqICAgICAgICBjYW4gYmUgTlVMTCBmb3IgdGhlIGRlZmF1
bHQgY29udmVydGVyCisgICAqIEBwYXJhbSBlcnJvckNvZGUgbm9ybWFsIElDVSBlcnJvciBjb2Rl
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZygKKyAgICAgICAg
Y29uc3QgY2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgVUNvbnZlcnRlciAq
Y252LAorICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNvZGUpOworCisjZW5kaWYKKworICAvKioK
KyAgICogQ29uc3RydWN0cyBhIFVuaWNvZGUgc3RyaW5nIGZyb20gYW4gaW52YXJpYW50LWNoYXJh
Y3RlciBjaGFyICogc3RyaW5nLgorICAgKiBBYm91dCBpbnZhcmlhbnQgY2hhcmFjdGVycyBzZWUg
dXR5cGVzLmguCisgICAqIFRoaXMgY29uc3RydWN0b3IgaGFzIG5vIHJ1bnRpbWUgZGVwZW5kZW5j
eSBvbiBjb252ZXJzaW9uIGNvZGUgYW5kIGlzCisgICAqIHRoZXJlZm9yZSByZWNvbW1lbmRlZCBv
dmVyIG9uZXMgdGFraW5nIGEgY2hhcnNldCBuYW1lIHN0cmluZworICAgKiAod2hlcmUgdGhlIGVt
cHR5IHN0cmluZyAiIiBpbmRpY2F0ZXMgaW52YXJpYW50LWNoYXJhY3RlciBjb252ZXJzaW9uKS4K
KyAgICoKKyAgICogVXNlIHRoZSBtYWNybyBVU19JTlYgYXMgdGhlIHRoaXJkLCBzaWduYXR1cmUt
ZGlzdGluZ3Vpc2hpbmcgcGFyYW1ldGVyLgorICAgKgorICAgKiBGb3IgZXhhbXBsZToKKyAgICog
XGNvZGUKKyAgICogdm9pZCBmbihjb25zdCBjaGFyICpzKSB7CisgICAqICAgVW5pY29kZVN0cmlu
ZyB1c3RyKHMsIC0xLCBVU19JTlYpOworICAgKiAgIC8vIHVzZSB1c3RyIC4uLgorICAgKiB9Cisg
ICAqIFxlbmRjb2RlCisgICAqCisgICAqIEBwYXJhbSBzcmMgU3RyaW5nIHVzaW5nIG9ubHkgaW52
YXJpYW50IGNoYXJhY3RlcnMuCisgICAqIEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIHNyYywgb3Ig
LTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgICAqIEBwYXJhbSBpbnYgU2lnbmF0dXJlLWRpc3Rpbmd1
aXNoaW5nIHBhcmFtYXRlciwgdXNlIFVTX0lOVi4KKyAgICoKKyAgICogQHNlZSBVU19JTlYKKyAg
ICogQHN0YWJsZSBJQ1UgMy4yCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKnNy
YywgaW50MzJfdCBsZW5ndGgsIGVudW0gRUludmFyaWFudCBpbnYpOworCisKKyAgLyoqCisgICAq
IENvcHkgY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSB0aGF0IFRoZSBVbmljb2RlU3RyaW5nIG9i
amVjdCB0byBjb3B5LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJp
bmcoY29uc3QgVW5pY29kZVN0cmluZyYgdGhhdCk7CisKKyAgLyoqCisgICAqICdTdWJzdHJpbmcn
IGNvbnN0cnVjdG9yIGZyb20gdGFpbCBvZiBzb3VyY2Ugc3RyaW5nLgorICAgKiBAcGFyYW0gc3Jj
IFRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byBjb3B5LgorICAgKiBAcGFyYW0gc3JjU3RhcnQg
VGhlIG9mZnNldCBpbnRvIDx0dD5zcmM8L3R0PiBhdCB3aGljaCB0byBzdGFydCBjb3B5aW5nLgor
ICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3QgVW5pY29k
ZVN0cmluZyYgc3JjLCBpbnQzMl90IHNyY1N0YXJ0KTsKKworICAvKioKKyAgICogJ1N1YnN0cmlu
ZycgY29uc3RydWN0b3IgZnJvbSBzdWJyYW5nZSBvZiBzb3VyY2Ugc3RyaW5nLgorICAgKiBAcGFy
YW0gc3JjIFRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byBjb3B5LgorICAgKiBAcGFyYW0gc3Jj
U3RhcnQgVGhlIG9mZnNldCBpbnRvIDx0dD5zcmM8L3R0PiBhdCB3aGljaCB0byBzdGFydCBjb3B5
aW5nLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBmcm9t
IDx0dD5zcmM8L3R0PiB0byBjb3B5LgorICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICovCisgIFVu
aWNvZGVTdHJpbmcoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjLCBpbnQzMl90IHNyY1N0YXJ0LCBp
bnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIENsb25lIHRoaXMgb2JqZWN0LCBhbiBp
bnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIFJlcGxhY2VhYmxlLgorICAgKiBDbG9uZXMgY2FuIGJl
IHVzZWQgY29uY3VycmVudGx5IGluIG11bHRpcGxlIHRocmVhZHMuCisgICAqIElmIGEgc3ViY2xh
c3MgZG9lcyBub3QgaW1wbGVtZW50IGNsb25lKCksIG9yIGlmIGFuIGVycm9yIG9jY3VycywKKyAg
ICogdGhlbiBOVUxMIGlzIHJldHVybmVkLgorICAgKiBUaGUgY2xvbmUgZnVuY3Rpb25zIGluIGFs
bCBzdWJjbGFzc2VzIHJldHVybiBhIHBvaW50ZXIgdG8gYSBSZXBsYWNlYWJsZQorICAgKiBiZWNh
dXNlIHNvbWUgY29tcGlsZXJzIGRvIG5vdCBzdXBwb3J0IGNvdmFyaWFudCAoc2FtZS1hcy10aGlz
KQorICAgKiByZXR1cm4gdHlwZXM7IGNhc3QgdG8gdGhlIGFwcHJvcHJpYXRlIHN1YmNsYXNzIGlm
IG5lY2Vzc2FyeS4KKyAgICogVGhlIGNhbGxlciBtdXN0IGRlbGV0ZSB0aGUgY2xvbmUuCisgICAq
CisgICAqIEByZXR1cm4gYSBjbG9uZSBvZiB0aGlzIG9iamVjdAorICAgKgorICAgKiBAc2VlIFJl
cGxhY2VhYmxlOjpjbG9uZQorICAgKiBAc2VlIGdldER5bmFtaWNDbGFzc0lECisgICAqIEBzdGFi
bGUgSUNVIDIuNgorICAgKi8KKyAgdmlydHVhbCBSZXBsYWNlYWJsZSAqY2xvbmUoKSBjb25zdDsK
KworICAvKiogRGVzdHJ1Y3Rvci4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICB2aXJ0
dWFsIH5Vbmljb2RlU3RyaW5nKCk7CisKKyAgLyoqCisgICAqIENyZWF0ZSBhIFVuaWNvZGVTdHJp
bmcgZnJvbSBhIFVURi04IHN0cmluZy4KKyAgICogSWxsZWdhbCBpbnB1dCBpcyByZXBsYWNlZCB3
aXRoIFUrRkZGRC4gT3RoZXJ3aXNlLCBlcnJvcnMgcmVzdWx0IGluIGEgYm9ndXMgc3RyaW5nLgor
ICAgKiBDYWxscyB1X3N0ckZyb21VVEY4V2l0aFN1YigpLgorICAgKgorICAgKiBAcGFyYW0gdXRm
OCBVVEYtOCBpbnB1dCBzdHJpbmcuCisgICAqICAgICAgICAgICAgIE5vdGUgdGhhdCBhIFN0cmlu
Z1BpZWNlIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnN0cnVjdGVkCisgICAqICAgICAgICAgICAgIGZy
b20gYSBzdGQ6OnN0cmluZyBvciBhIE5VTC10ZXJtaW5hdGVkIGNvbnN0IGNoYXIgKiBzdHJpbmcu
CisgICAqIEByZXR1cm4gQSBVbmljb2RlU3RyaW5nIHdpdGggZXF1aXZhbGVudCBVVEYtMTYgY29u
dGVudHMuCisgICAqIEBzZWUgdG9VVEY4CisgICAqIEBzZWUgdG9VVEY4U3RyaW5nCisgICAqIEBz
dGFibGUgSUNVIDQuMgorICAgKi8KKyAgc3RhdGljIFVuaWNvZGVTdHJpbmcgZnJvbVVURjgoY29u
c3QgU3RyaW5nUGllY2UgJnV0ZjgpOworCisgIC8qKgorICAgKiBDcmVhdGUgYSBVbmljb2RlU3Ry
aW5nIGZyb20gYSBVVEYtMzIgc3RyaW5nLgorICAgKiBJbGxlZ2FsIGlucHV0IGlzIHJlcGxhY2Vk
IHdpdGggVStGRkZELiBPdGhlcndpc2UsIGVycm9ycyByZXN1bHQgaW4gYSBib2d1cyBzdHJpbmcu
CisgICAqIENhbGxzIHVfc3RyRnJvbVVURjMyV2l0aFN1YigpLgorICAgKgorICAgKiBAcGFyYW0g
dXRmMzIgVVRGLTMyIGlucHV0IHN0cmluZy4gTXVzdCBub3QgYmUgTlVMTC4KKyAgICogQHBhcmFt
IGxlbmd0aCBMZW5ndGggb2YgdGhlIGlucHV0IHN0cmluZywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0
ZWQuCisgICAqIEByZXR1cm4gQSBVbmljb2RlU3RyaW5nIHdpdGggZXF1aXZhbGVudCBVVEYtMTYg
Y29udGVudHMuCisgICAqIEBzZWUgdG9VVEYzMgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICov
CisgIHN0YXRpYyBVbmljb2RlU3RyaW5nIGZyb21VVEYzMihjb25zdCBVQ2hhcjMyICp1dGYzMiwg
aW50MzJfdCBsZW5ndGgpOworCisgIC8qIE1pc2NlbGxhbmVvdXMgb3BlcmF0aW9ucyAqLworCisg
IC8qKgorICAgKiBVbmVzY2FwZSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCByZXR1cm4gYSBz
dHJpbmcgY29udGFpbmluZworICAgKiB0aGUgcmVzdWx0LiAgVGhlIGZvbGxvd2luZyBlc2NhcGUg
c2VxdWVuY2VzIGFyZSByZWNvZ25pemVkOgorICAgKgorICAgKiBcXHVoaGhoICAgICAgIDQgaGV4
IGRpZ2l0czsgaCBpbiBbMC05QS1GYS1mXQorICAgKiBcXFVoaGhoaGhoaCAgIDggaGV4IGRpZ2l0
cworICAgKiBcXHhoaCAgICAgICAgIDEtMiBoZXggZGlnaXRzCisgICAqIFxcb29vICAgICAgICAg
MS0zIG9jdGFsIGRpZ2l0czsgbyBpbiBbMC03XQorICAgKiBcXGNYICAgICAgICAgIGNvbnRyb2wt
WDsgWCBpcyBtYXNrZWQgd2l0aCAweDFGCisgICAqCisgICAqIGFzIHdlbGwgYXMgdGhlIHN0YW5k
YXJkIEFOU0kgQyBlc2NhcGVzOgorICAgKgorICAgKiBcXGEgPT4gVSswMDA3LCBcXGIgPT4gVSsw
MDA4LCBcXHQgPT4gVSswMDA5LCBcXG4gPT4gVSswMDBBLAorICAgKiBcXHYgPT4gVSswMDBCLCBc
XGYgPT4gVSswMDBDLCBcXHIgPT4gVSswMDBELCBcXGUgPT4gVSswMDFCLAorICAgKiBcXCZxdW90
OyA9PiBVKzAwMjIsIFxcJyA9PiBVKzAwMjcsIFxcPyA9PiBVKzAwM0YsIFxcXFwgPT4gVSswMDVD
CisgICAqCisgICAqIEFueXRoaW5nIGVsc2UgZm9sbG93aW5nIGEgYmFja3NsYXNoIGlzIGdlbmVy
aWNhbGx5IGVzY2FwZWQuICBGb3IKKyAgICogZXhhbXBsZSwgIlthXFwtel0iIHJldHVybnMgIlth
LXpdIi4KKyAgICoKKyAgICogSWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIGlsbC1mb3JtZWQsIHRo
aXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkKKyAgICogc3RyaW5nLiAgQW4gZXhhbXBsZSBvZiBh
biBpbGwtZm9ybWVkIHNlcXVlbmNlIGlzICJcXHUiIGZvbGxvd2VkIGJ5CisgICAqIGZld2VyIHRo
YW4gNCBoZXggZGlnaXRzLgorICAgKgorICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8g
dV91bmVzY2FwZSgpIGJ1dCBub3QgaWRlbnRpY2FsIHRvIGl0LgorICAgKiBUaGUgbGF0dGVyIHRh
a2VzIGEgc291cmNlIGNoYXIqLCBzbyBpdCBkb2VzIGVzY2FwZSByZWNvZ25pdGlvbgorICAgKiBh
bmQgYWxzbyBpbnZhcmlhbnQgY29udmVyc2lvbi4KKyAgICoKKyAgICogQHJldHVybiBhIHN0cmlu
ZyB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIGludGVycHJldGVkLCBvciBhbgorICAgKiBlbXB0eSBz
dHJpbmcgb24gZXJyb3IuCisgICAqIEBzZWUgVW5pY29kZVN0cmluZyN1bmVzY2FwZUF0KCkKKyAg
ICogQHNlZSB1X3VuZXNjYXBlKCkKKyAgICogQHNlZSB1X3VuZXNjYXBlQXQoKQorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgdW5lc2NhcGUoKSBjb25zdDsKKwor
ICAvKioKKyAgICogVW5lc2NhcGUgYSBzaW5nbGUgZXNjYXBlIHNlcXVlbmNlIGFuZCByZXR1cm4g
dGhlIHJlcHJlc2VudGVkCisgICAqIGNoYXJhY3Rlci4gIFNlZSB1bmVzY2FwZSgpIGZvciBhIGxp
c3Rpbmcgb2YgdGhlIHJlY29nbml6ZWQgZXNjYXBlCisgICAqIHNlcXVlbmNlcy4gIFRoZSBjaGFy
YWN0ZXIgYXQgb2Zmc2V0LTEgaXMgYXNzdW1lZCAod2l0aG91dAorICAgKiBjaGVja2luZykgdG8g
YmUgYSBiYWNrc2xhc2guICBJZiB0aGUgZXNjYXBlIHNlcXVlbmNlIGlzCisgICAqIGlsbC1mb3Jt
ZWQsIG9yIHRoZSBvZmZzZXQgaXMgb3V0IG9mIHJhbmdlLCAoVUNoYXIzMikweEZGRkZGRkZGIGlz
CisgICAqIHJldHVybmVkLgorICAgKgorICAgKiBAcGFyYW0gb2Zmc2V0IGFuIGlucHV0IG91dHB1
dCBwYXJhbWV0ZXIuICBPbiBpbnB1dCwgaXQgaXMgdGhlCisgICAqIG9mZnNldCBpbnRvIHRoaXMg
c3RyaW5nIHdoZXJlIHRoZSBlc2NhcGUgc2VxdWVuY2UgaXMgbG9jYXRlZCwKKyAgICogYWZ0ZXIg
dGhlIGluaXRpYWwgYmFja3NsYXNoLiAgT24gb3V0cHV0LCBpdCBpcyBhZHZhbmNlZCBhZnRlciB0
aGUKKyAgICogbGFzdCBjaGFyYWN0ZXIgcGFyc2VkLiAgT24gZXJyb3IsIGl0IGlzIG5vdCBhZHZh
bmNlZCBhdCBhbGwuCisgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciByZXByZXNlbnRlZCBieSB0
aGUgZXNjYXBlIHNlcXVlbmNlIGF0CisgICAqIG9mZnNldCwgb3IgKFVDaGFyMzIpMHhGRkZGRkZG
RiBvbiBlcnJvci4KKyAgICogQHNlZSBVbmljb2RlU3RyaW5nI3VuZXNjYXBlKCkKKyAgICogQHNl
ZSB1X3VuZXNjYXBlKCkKKyAgICogQHNlZSB1X3VuZXNjYXBlQXQoKQorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIFVDaGFyMzIgdW5lc2NhcGVBdChpbnQzMl90ICZvZmZzZXQpIGNvbnN0
OworCisgIC8qKgorICAgKiBJQ1UgInBvb3IgbWFuJ3MgUlRUSSIsIHJldHVybnMgYSBVQ2xhc3NJ
RCBmb3IgdGhpcyBjbGFzcy4KKyAgICoKKyAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAqLworICBz
dGF0aWMgVUNsYXNzSUQgVV9FWFBPUlQyIGdldFN0YXRpY0NsYXNzSUQoKTsKKworICAvKioKKyAg
ICogSUNVICJwb29yIG1hbidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoZSBhY3R1
YWwgY2xhc3MuCisgICAqCisgICAqIEBzdGFibGUgSUNVIDIuMgorICAgKi8KKyAgdmlydHVhbCBV
Q2xhc3NJRCBnZXREeW5hbWljQ2xhc3NJRCgpIGNvbnN0OworCisgIC8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorICAvLyBJbXBsZW1lbnRhdGlvbiBtZXRob2RzCisg
IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwcm90ZWN0ZWQ6
CisgIC8qKgorICAgKiBJbXBsZW1lbnQgUmVwbGFjZWFibGU6OmdldExlbmd0aCgpIChzZWUgaml0
dGVyYnVnIDEwMjcpLgorICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICovCisgIHZpcnR1YWwgaW50
MzJfdCBnZXRMZW5ndGgoKSBjb25zdDsKKworICAvKioKKyAgICogVGhlIGNoYW5nZSBpbiBSZXBs
YWNlYWJsZSB0byB1c2UgdmlydHVhbCBnZXRDaGFyQXQoKSBhbGxvd3MKKyAgICogVW5pY29kZVN0
cmluZzo6Y2hhckF0KCkgdG8gYmUgaW5saW5lIGFnYWluIChzZWUgaml0dGVyYnVnIDcwOSkuCisg
ICAqIEBzdGFibGUgSUNVIDIuNAorICAgKi8KKyAgdmlydHVhbCBVQ2hhciBnZXRDaGFyQXQoaW50
MzJfdCBvZmZzZXQpIGNvbnN0OworCisgIC8qKgorICAgKiBUaGUgY2hhbmdlIGluIFJlcGxhY2Vh
YmxlIHRvIHVzZSB2aXJ0dWFsIGdldENoYXIzMkF0KCkgYWxsb3dzCisgICAqIFVuaWNvZGVTdHJp
bmc6OmNoYXIzMkF0KCkgdG8gYmUgaW5saW5lIGFnYWluIChzZWUgaml0dGVyYnVnIDcwOSkuCisg
ICAqIEBzdGFibGUgSUNVIDIuNAorICAgKi8KKyAgdmlydHVhbCBVQ2hhcjMyIGdldENoYXIzMkF0
KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgLy8gRm9yIGNoYXIqIGNvbnN0
cnVjdG9ycy4gQ291bGQgYmUgbWFkZSBwdWJsaWMuCisgIFVuaWNvZGVTdHJpbmcgJnNldFRvVVRG
OChjb25zdCBTdHJpbmdQaWVjZSAmdXRmOCk7CisgIC8vIEZvciBleHRyYWN0KGNoYXIqKS4KKyAg
Ly8gV2UgY291bGQgbWFrZSBhIHRvVVRGOCh0YXJnZXQsIGNhcGFjaXR5LCBlcnJvckNvZGUpIHB1
YmxpYyBidXQgbm90CisgIC8vIHRoaXMgdmVyc2lvbjogTmV3IEFQSSB3aWxsIGJlIGNsZWFuZXIg
aWYgd2UgbWFrZSBjYWxsZXJzIGNyZWF0ZSBzdWJzdHJpbmdzCisgIC8vIHJhdGhlciB0aGFuIGhh
dmluZyBzdGFydCtsZW5ndGggb24gZXZlcnkgbWV0aG9kLAorICAvLyBhbmQgaXQgc2hvdWxkIHRh
a2UgYSBVRXJyb3JDb2RlJi4KKyAgaW50MzJfdAorICB0b1VURjgoaW50MzJfdCBzdGFydCwgaW50
MzJfdCBsZW4sCisgICAgICAgICBjaGFyICp0YXJnZXQsIGludDMyX3QgY2FwYWNpdHkpIGNvbnN0
OworCisKKyAgaW5saW5lIGludDhfdAorICBkb0NvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNy
Y1RleHQsCisgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKSBjb25zdDsKKworICBpbnQ4X3QgZG9Db21wYXJlKGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgIGludDMyX3Qgc3Jj
TGVuZ3RoKSBjb25zdDsKKworICBpbmxpbmUgaW50OF90CisgIGRvQ29tcGFyZUNvZGVQb2ludE9y
ZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CisKKyAgaW50OF90
IGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CisKKyAgaW5saW5lIGludDhfdAorICBkb0Nh
c2VDb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCwKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoLAorICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIGludDhf
dAorICBkb0Nhc2VDb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAg
ICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgsCisgICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgaW50
MzJfdCBkb0luZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgaW50MzJfdCBkb0luZGV4T2YoVUNo
YXIzMiBjLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICBpbnQzMl90IGRvTGFz
dEluZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICBpbnQzMl90IGRvTGFzdEluZGV4
T2YoVUNoYXIzMiBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisg
IHZvaWQgZG9FeHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQzMl90IGxlbmd0aCwK
KyAgICAgICAgIFVDaGFyICpkc3QsCisgICAgICAgICBpbnQzMl90IGRzdFN0YXJ0KSBjb25zdDsK
KworICBpbmxpbmUgdm9pZCBkb0V4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAorICAgICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdDsKKworICBp
bmxpbmUgVUNoYXIgZG9DaGFyQXQoaW50MzJfdCBvZmZzZXQpICBjb25zdDsKKworICBVbmljb2Rl
U3RyaW5nJiBkb1JlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoLAorICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAg
ICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNy
Y0xlbmd0aCk7CisKKyAgVW5pY29kZVN0cmluZyYgZG9SZXBsYWNlKGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgVW5pY29kZVN0cmluZyYgZG9SZXZlcnNlKGlu
dDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCk7CisKKyAgLy8gY2Fs
Y3VsYXRlIGhhc2ggY29kZQorICBpbnQzMl90IGRvSGFzaENvZGUodm9pZCkgY29uc3Q7CisKKyAg
Ly8gZ2V0IHBvaW50ZXIgdG8gc3RhcnQgb2YgYXJyYXkKKyAgLy8gdGhlc2UgZG8gbm90IGNoZWNr
IGZvciBrT3BlbkdldEJ1ZmZlciwgdW5saWtlIHRoZSBwdWJsaWMgZ2V0QnVmZmVyKCkgZnVuY3Rp
b24KKyAgaW5saW5lIFVDaGFyKiBnZXRBcnJheVN0YXJ0KHZvaWQpOworICBpbmxpbmUgY29uc3Qg
VUNoYXIqIGdldEFycmF5U3RhcnQodm9pZCkgY29uc3Q7CisKKyAgLy8gQSBVbmljb2RlU3RyaW5n
IG9iamVjdCAobm90IG5lY2Vzc2FyaWx5IGl0cyBjdXJyZW50IGJ1ZmZlcikKKyAgLy8gaXMgd3Jp
dGFibGUgdW5sZXNzIGl0IGlzQm9ndXMoKSBvciBpdCBoYXMgYW4gIm9wZW4iIGdldEJ1ZmZlciht
aW5DYXBhY2l0eSkuCisgIGlubGluZSBVQm9vbCBpc1dyaXRhYmxlKCkgY29uc3Q7CisKKyAgLy8g
SXMgdGhlIGN1cnJlbnQgYnVmZmVyIHdyaXRhYmxlPworICBpbmxpbmUgVUJvb2wgaXNCdWZmZXJX
cml0YWJsZSgpIGNvbnN0OworCisgIC8vIE5vbmUgb2YgdGhlIGZvbGxvd2luZyBkb2VzIHJlbGVh
c2VBcnJheSgpLgorICBpbmxpbmUgdm9pZCBzZXRMZW5ndGgoaW50MzJfdCBsZW4pOyAgICAgICAg
Ly8gc2V0cyBvbmx5IGZTaG9ydExlbmd0aCBhbmQgZkxlbmd0aAorICBpbmxpbmUgdm9pZCBzZXRU
b0VtcHR5KCk7ICAgICAgICAgICAgICAgICAgLy8gc2V0cyBmRmxhZ3M9a1Nob3J0U3RyaW5nCisg
IGlubGluZSB2b2lkIHNldEFycmF5KFVDaGFyICphcnJheSwgaW50MzJfdCBsZW4sIGludDMyX3Qg
Y2FwYWNpdHkpOyAvLyBkb2VzIG5vdCBzZXQgZkZsYWdzCisKKyAgLy8gYWxsb2NhdGUgdGhlIGFy
cmF5OyByZXN1bHQgbWF5IGJlIGZTdGFja0J1ZmZlcgorICAvLyBzZXRzIHJlZkNvdW50IHRvIDEg
aWYgYXBwcm9wcmlhdGUKKyAgLy8gc2V0cyBmQXJyYXksIGZDYXBhY2l0eSwgYW5kIGZGbGFncwor
ICAvLyByZXR1cm5zIGJvb2xlYW4gZm9yIHN1Y2Nlc3Mgb3IgZmFpbHVyZQorICBVQm9vbCBhbGxv
Y2F0ZShpbnQzMl90IGNhcGFjaXR5KTsKKworICAvLyByZWxlYXNlIHRoZSBhcnJheSBpZiBvd25l
ZAorICB2b2lkIHJlbGVhc2VBcnJheSh2b2lkKTsKKworICAvLyB0dXJuIGEgYm9ndXMgc3RyaW5n
IGludG8gYW4gZW1wdHkgb25lCisgIHZvaWQgdW5Cb2d1cygpOworCisgIC8vIGltcGxlbWVudHMg
YXNzaWdtZW50IG9wZXJhdG9yLCBjb3B5IGNvbnN0cnVjdG9yLCBhbmQgZmFzdENvcHlGcm9tKCkK
KyAgVW5pY29kZVN0cmluZyAmY29weUZyb20oY29uc3QgVW5pY29kZVN0cmluZyAmc3JjLCBVQm9v
bCBmYXN0Q29weT1GQUxTRSk7CisKKyAgLy8gUGluIHN0YXJ0IGFuZCBsaW1pdCB0byBhY2NlcHRh
YmxlIHZhbHVlcy4KKyAgaW5saW5lIHZvaWQgcGluSW5kZXgoaW50MzJfdCYgc3RhcnQpIGNvbnN0
OworICBpbmxpbmUgdm9pZCBwaW5JbmRpY2VzKGludDMyX3QmIHN0YXJ0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QmIGxlbmd0aCkgY29uc3Q7CisKKyNpZiAhVUNPTkZJR19OT19D
T05WRVJTSU9OCisKKyAgLyogSW50ZXJuYWwgZXh0cmFjdCgpIHVzaW5nIFVDb252ZXJ0ZXIuICov
CisgIGludDMyX3QgZG9FeHRyYWN0KGludDMyX3Qgc3RhcnQsIGludDMyX3QgbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICBjaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAg
ICAgICAgICAgICAgICAgVUNvbnZlcnRlciAqY252LAorICAgICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworCisgIC8qCisgICAqIFJlYWwgY29uc3RydWN0b3Ig
Zm9yIGNvbnZlcnRpbmcgZnJvbSBjb2RlcGFnZSBkYXRhLgorICAgKiBJdCBhc3N1bWVzIHRoYXQg
aXQgaXMgY2FsbGVkIHdpdGggIWZSZWZDb3VudGVkLgorICAgKgorICAgKiBJZiA8Y29kZT5jb2Rl
cGFnZT09MDwvY29kZT4sIHRoZW4gdGhlIGRlZmF1bHQgY29udmVydGVyCisgICAqIGlzIHVzZWQg
Zm9yIHRoZSBwbGF0Zm9ybSBlbmNvZGluZy4KKyAgICogSWYgPGNvZGU+Y29kZXBhZ2U8L2NvZGU+
IGlzIGFuIGVtcHR5IHN0cmluZyAoPGNvZGU+IiI8L2NvZGU+KSwKKyAgICogdGhlbiBhIHNpbXBs
ZSBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCBvbiB0aGUgY29kZXBhZ2UtaW52YXJpYW50CisgICAq
IHN1YnNldCAoImludmFyaWFudCBjaGFyYWN0ZXJzIikgb2YgdGhlIHBsYXRmb3JtIGVuY29kaW5n
LiBTZWUgdXR5cGVzLmguCisgICAqLworICB2b2lkIGRvQ29kZXBhZ2VDcmVhdGUoY29uc3QgY2hh
ciAqY29kZXBhZ2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkYXRhTGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZXBhZ2UpOworCisg
IC8qCisgICAqIFdvcmtlciBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBVbmljb2RlU3RyaW5nIGZy
b20KKyAgICogYSBjb2RlcGFnZSBzdHJpbmcgdXNpbmcgYSBVQ29udmVydGVyLgorICAgKi8KKyAg
dm9pZAorICBkb0NvZGVwYWdlQ3JlYXRlKGNvbnN0IGNoYXIgKmNvZGVwYWdlRGF0YSwKKyAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IGRhdGFMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgVUNv
bnZlcnRlciAqY29udmVydGVyLAorICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1
cyk7CisKKyNlbmRpZgorCisgIC8qCisgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4g
d3JpdGUgYWNjZXNzIHRvIHRoZSBhcnJheQorICAgKiBpcyBuZWNlc3NhcnkuCisgICAqCisgICAq
IFdlIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGFycmF5IGlmCisgICAqIHRoZSBidWZmZXIg
aXMgcmVhZC1vbmx5LCBvcgorICAgKiB0aGUgYnVmZmVyIGlzIHJlZkNvdW50ZWQgKHNoYXJlZCks
IGFuZCByZWZDb3VudD4xLCBvcgorICAgKiB0aGUgYnVmZmVyIGlzIHRvbyBzbWFsbC4KKyAgICoK
KyAgICogUmV0dXJuIEZBTFNFIGlmIG1lbW9yeSBjb3VsZCBub3QgYmUgYWxsb2NhdGVkLgorICAg
Ki8KKyAgVUJvb2wgY2xvbmVBcnJheUlmTmVlZGVkKGludDMyX3QgbmV3Q2FwYWNpdHkgPSAtMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGdyb3dDYXBhY2l0eSA9IC0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGRvQ29weUFycmF5ID0gVFJVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICoqcEJ1ZmZlclRvRGVsZXRlID0gMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBmb3JjZUNsb25lID0gRkFMU0UpOwor
CisgIC8vIGNvbW1vbiBmdW5jdGlvbiBmb3IgY2FzZSBtYXBwaW5ncworICBVbmljb2RlU3RyaW5n
ICYKKyAgY2FzZU1hcChCcmVha0l0ZXJhdG9yICp0aXRsZUl0ZXIsCisgICAgICAgICAgY29uc3Qg
Y2hhciAqbG9jYWxlLAorICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMsCisgICAgICAgICAgaW50
MzJfdCB0b1doaWNoQ2FzZSk7CisKKyAgLy8gcmVmIGNvdW50aW5nCisgIHZvaWQgYWRkUmVmKHZv
aWQpOworICBpbnQzMl90IHJlbW92ZVJlZih2b2lkKTsKKyAgaW50MzJfdCByZWZDb3VudCh2b2lk
KSBjb25zdDsKKworICAvLyBjb25zdGFudHMKKyAgZW51bSB7CisgICAgLy8gU2V0IHRoZSBzdGFj
ayBidWZmZXIgc2l6ZSBzbyB0aGF0IHNpemVvZihVbmljb2RlU3RyaW5nKSBpcyBhIG11bHRpcGxl
IG9mIHNpemVvZihwb2ludGVyKToKKyAgICAvLyAzMi1iaXQgcG9pbnRlcnM6IDQrMSsxKzEzKjIg
PSAzMiBieXRlcworICAgIC8vIDY0LWJpdCBwb2ludGVyczogOCsxKzErMTUqMiA9IDQwIGJ5dGVz
CisgICAgVVNfU1RBQ0tCVUZfU0laRT0gc2l6ZW9mKHZvaWQgKik9PTQgPyAxMyA6IDE1LCAvLyBT
aXplIG9mIHN0YWNrIGJ1ZmZlciBmb3Igc21hbGwgc3RyaW5ncworICAgIGtJbnZhbGlkVUNoYXI9
MHhmZmZmLCAvLyBpbnZhbGlkIFVDaGFyIGluZGV4CisgICAga0dyb3dTaXplPTEyOCwgLy8gZ3Jv
dyBzaXplIGZvciB0aGlzIGJ1ZmZlcgorICAgIGtJbnZhbGlkSGFzaENvZGU9MCwgLy8gaW52YWxp
ZCBoYXNoIGNvZGUKKyAgICBrRW1wdHlIYXNoQ29kZT0xLCAvLyBoYXNoIGNvZGUgZm9yIGVtcHR5
IHN0cmluZworCisgICAgLy8gYml0IGZsYWcgdmFsdWVzIGZvciBmRmxhZ3MKKyAgICBrSXNCb2d1
cz0xLCAgICAgICAgIC8vIHRoaXMgc3RyaW5nIGlzIGJvZ3VzLCBpLmUuLCBub3QgdmFsaWQgb3Ig
TlVMTAorICAgIGtVc2luZ1N0YWNrQnVmZmVyPTIsLy8gZkFycmF5PT1mU3RhY2tCdWZmZXIKKyAg
ICBrUmVmQ291bnRlZD00LCAgICAgIC8vIHRoZXJlIGlzIGEgcmVmQ291bnQgZmllbGQgYmVmb3Jl
IHRoZSBjaGFyYWN0ZXJzIGluIGZBcnJheQorICAgIGtCdWZmZXJJc1JlYWRvbmx5PTgsLy8gZG8g
bm90IHdyaXRlIHRvIHRoaXMgYnVmZmVyCisgICAga09wZW5HZXRCdWZmZXI9MTYsICAvLyBnZXRC
dWZmZXIobWluQ2FwYWNpdHkpIHdhcyBjYWxsZWQgKGlzICJvcGVuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhbmQgcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpIG11c3QgYmUgY2FsbGVk
CisKKyAgICAvLyBjb21iaW5lZCB2YWx1ZXMgZm9yIGNvbnZlbmllbmNlCisgICAga1Nob3J0U3Ry
aW5nPWtVc2luZ1N0YWNrQnVmZmVyLAorICAgIGtMb25nU3RyaW5nPWtSZWZDb3VudGVkLAorICAg
IGtSZWFkb25seUFsaWFzPWtCdWZmZXJJc1JlYWRvbmx5LAorICAgIGtXcml0YWJsZUFsaWFzPTAK
KyAgfTsKKworICBmcmllbmQgY2xhc3MgU3RyaW5nVGhyZWFkVGVzdDsKKworICB1bmlvbiBTdGFj
a0J1ZmZlck9yRmllbGRzOyAgICAgICAgLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBuZWNlc3Nhcnkg
YmVmb3JlIGZyaWVuZCBkZWNsYXJhdGlvbgorICBmcmllbmQgdW5pb24gU3RhY2tCdWZmZXJPckZp
ZWxkczsgLy8gbWFrZSBVU19TVEFDS0JVRl9TSVpFIHZpc2libGUgaW5zaWRlIGZVbmlvbgorCisg
IC8qCisgICAqIFRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0aGUgY2xhc3MgZmllbGRzIHRoYXQgYXJl
IHN0b3JlZAorICAgKiBpbiBlYWNoIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBOb3RlIHRo
YXQgVW5pY29kZVN0cmluZyBoYXMgdmlydHVhbCBmdW5jdGlvbnMsCisgICAqIHRoZXJlZm9yZSB0
aGVyZSBpcyBhbiBpbXBsaWNpdCB2dGFibGUgcG9pbnRlcgorICAgKiBhcyB0aGUgZmlyc3QgcmVh
bCBmaWVsZC4KKyAgICogVGhlIGZpZWxkcyBzaG91bGQgYmUgYWxpZ25lZCBzdWNoIHRoYXQgbm8g
cGFkZGluZyBpcworICAgKiBuZWNlc3NhcnksIG1vc3RseSBieSBoYXZpbmcgbGFyZ2VyIHR5cGVz
IGZpcnN0LgorICAgKiBPbiAzMi1iaXQgbWFjaGluZXMsIHRoZSBzaXplIHNob3VsZCBiZSAzMiBi
eXRlcywKKyAgICogb24gNjQtYml0IG1hY2hpbmVzICg4LWJ5dGUgcG9pbnRlcnMpLCBpdCBzaG91
bGQgYmUgNDAgYnl0ZXMuCisgICAqLworICAvLyAoaW1wbGljaXQpICp2dGFibGU7CisgIGludDhf
dCAgICBmU2hvcnRMZW5ndGg7ICAgLy8gMC4uMTI3OiBsZW5ndGggIDwwOiByZWFsIGxlbmd0aCBp
cyBpbiBmVW5pb24uZkZpZWxkcy5mTGVuZ3RoCisgIHVpbnQ4X3QgICBmRmxhZ3M7ICAgICAgICAg
Ly8gYml0IGZsYWdzOiBzZWUgY29uc3RhbnRzIGFib3ZlCisgIHVuaW9uIFN0YWNrQnVmZmVyT3JG
aWVsZHMgeworICAgIC8vIGZTdGFja0J1ZmZlciBpcyB1c2VkIGlmZiAoZkZsYWdzJmtVc2luZ1N0
YWNrQnVmZmVyKQorICAgIC8vIGVsc2UgZkZpZWxkcyBpcyB1c2VkCisgICAgVUNoYXIgICAgIGZT
dGFja0J1ZmZlciBbVVNfU1RBQ0tCVUZfU0laRV07IC8vIGJ1ZmZlciBmb3Igc21hbGwgc3RyaW5n
cworICAgIHN0cnVjdCB7CisgICAgICB1aW50MTZfdCAgZlBhZGRpbmc7ICAgLy8gYWxpZ24gdGhl
IGZvbGxvd2luZyBmaWVsZCBhdCA4QiAoMzJiIHBvaW50ZXJzKSBvciAxMkIgKDY0YikKKyAgICAg
IGludDMyX3QgICBmTGVuZ3RoOyAgICAvLyBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBmQXJyYXkg
aWYgPjEyNzsgZWxzZSB1bmRlZmluZWQKKyAgICAgIFVDaGFyICAgICAqZkFycmF5OyAgICAvLyB0
aGUgVW5pY29kZSBkYXRhIChhbGlnbmVkIGF0IDEyQiAoMzJiIHBvaW50ZXJzKSBvciAxNkIgKDY0
YikpCisgICAgICBpbnQzMl90ICAgZkNhcGFjaXR5OyAgLy8gc2l6ZW9mIGZBcnJheQorICAgIH0g
ZkZpZWxkczsKKyAgfSBmVW5pb247Cit9OworCisvKioKKyAqIENyZWF0ZSBhIG5ldyBVbmljb2Rl
U3RyaW5nIHdpdGggdGhlIGNvbmNhdGVuYXRpb24gb2YgdHdvIG90aGVycy4KKyAqCisgKiBAcGFy
YW0gczEgVGhlIGZpcnN0IHN0cmluZyB0byBiZSBjb3BpZWQgdG8gdGhlIG5ldyBvbmUuCisgKiBA
cGFyYW0gczIgVGhlIHNlY29uZCBzdHJpbmcgdG8gYmUgY29waWVkIHRvIHRoZSBuZXcgb25lLCBh
ZnRlciBzMS4KKyAqIEByZXR1cm4gVW5pY29kZVN0cmluZyhzMSkuYXBwZW5kKHMyKQorICogQHN0
YWJsZSBJQ1UgMi44CisgKi8KK1VfQ09NTU9OX0FQSSBVbmljb2RlU3RyaW5nIFVfRVhQT1JUMgor
b3BlcmF0b3IrIChjb25zdCBVbmljb2RlU3RyaW5nICZzMSwgY29uc3QgVW5pY29kZVN0cmluZyAm
czIpOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIElu
bGluZSBtZW1iZXJzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBQcml2YXRl
cworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2lubGluZSB2
b2lkCitVbmljb2RlU3RyaW5nOjpwaW5JbmRleChpbnQzMl90JiBzdGFydCkgY29uc3QKK3sKKyAg
Ly8gcGluIGluZGV4CisgIGlmKHN0YXJ0IDwgMCkgeworICAgIHN0YXJ0ID0gMDsKKyAgfSBlbHNl
IGlmKHN0YXJ0ID4gbGVuZ3RoKCkpIHsKKyAgICBzdGFydCA9IGxlbmd0aCgpOworICB9Cit9CisK
K2lubGluZSB2b2lkCitVbmljb2RlU3RyaW5nOjpwaW5JbmRpY2VzKGludDMyX3QmIHN0YXJ0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90JiBfbGVuZ3RoKSBjb25zdAoreworICAv
LyBwaW4gaW5kaWNlcworICBpbnQzMl90IGxlbiA9IGxlbmd0aCgpOworICBpZihzdGFydCA8IDAp
IHsKKyAgICBzdGFydCA9IDA7CisgIH0gZWxzZSBpZihzdGFydCA+IGxlbikgeworICAgIHN0YXJ0
ID0gbGVuOworICB9CisgIGlmKF9sZW5ndGggPCAwKSB7CisgICAgX2xlbmd0aCA9IDA7CisgIH0g
ZWxzZSBpZihfbGVuZ3RoID4gKGxlbiAtIHN0YXJ0KSkgeworICAgIF9sZW5ndGggPSAobGVuIC0g
c3RhcnQpOworICB9Cit9CisKK2lubGluZSBVQ2hhcioKK1VuaWNvZGVTdHJpbmc6OmdldEFycmF5
U3RhcnQoKQoreyByZXR1cm4gKGZGbGFncyZrVXNpbmdTdGFja0J1ZmZlcikgPyBmVW5pb24uZlN0
YWNrQnVmZmVyIDogZlVuaW9uLmZGaWVsZHMuZkFycmF5OyB9CisKK2lubGluZSBjb25zdCBVQ2hh
cioKK1VuaWNvZGVTdHJpbmc6OmdldEFycmF5U3RhcnQoKSBjb25zdAoreyByZXR1cm4gKGZGbGFn
cyZrVXNpbmdTdGFja0J1ZmZlcikgPyBmVW5pb24uZlN0YWNrQnVmZmVyIDogZlVuaW9uLmZGaWVs
ZHMuZkFycmF5OyB9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorLy8gUmVhZC1vbmx5IGltcGxlbWVudGF0aW9uIG1ldGhvZHMKKy8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6
Omxlbmd0aCgpIGNvbnN0Cit7IHJldHVybiBmU2hvcnRMZW5ndGg+PTAgPyBmU2hvcnRMZW5ndGgg
OiBmVW5pb24uZkZpZWxkcy5mTGVuZ3RoOyB9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3Ry
aW5nOjpnZXRDYXBhY2l0eSgpIGNvbnN0Cit7IHJldHVybiAoZkZsYWdzJmtVc2luZ1N0YWNrQnVm
ZmVyKSA/IFVTX1NUQUNLQlVGX1NJWkUgOiBmVW5pb24uZkZpZWxkcy5mQ2FwYWNpdHk7IH0KKwor
aW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omhhc2hDb2RlKCkgY29uc3QKK3sgcmV0dXJu
IGRvSGFzaENvZGUoKTsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OmlzQm9ndXMo
KSBjb25zdAoreyByZXR1cm4gKFVCb29sKShmRmxhZ3MgJiBrSXNCb2d1cyk7IH0KKworaW5saW5l
IFVCb29sCitVbmljb2RlU3RyaW5nOjppc1dyaXRhYmxlKCkgY29uc3QKK3sgcmV0dXJuIChVQm9v
bCkhKGZGbGFncyYoa09wZW5HZXRCdWZmZXJ8a0lzQm9ndXMpKTsgfQorCitpbmxpbmUgVUJvb2wK
K1VuaWNvZGVTdHJpbmc6OmlzQnVmZmVyV3JpdGFibGUoKSBjb25zdAoreworICByZXR1cm4gKFVC
b29sKSgKKyAgICAgICEoZkZsYWdzJihrT3BlbkdldEJ1ZmZlcnxrSXNCb2d1c3xrQnVmZmVySXNS
ZWFkb25seSkpICYmCisgICAgICAoIShmRmxhZ3Mma1JlZkNvdW50ZWQpIHx8IHJlZkNvdW50KCk9
PTEpKTsKK30KKworaW5saW5lIGNvbnN0IFVDaGFyICoKK1VuaWNvZGVTdHJpbmc6OmdldEJ1ZmZl
cigpIGNvbnN0IHsKKyAgaWYoZkZsYWdzJihrSXNCb2d1c3xrT3BlbkdldEJ1ZmZlcikpIHsKKyAg
ICByZXR1cm4gMDsKKyAgfSBlbHNlIGlmKGZGbGFncyZrVXNpbmdTdGFja0J1ZmZlcikgeworICAg
IHJldHVybiBmVW5pb24uZlN0YWNrQnVmZmVyOworICB9IGVsc2UgeworICAgIHJldHVybiBmVW5p
b24uZkZpZWxkcy5mQXJyYXk7CisgIH0KK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisvLyBSZWFkLW9ubHkgYWxpYXMgbWV0aG9kcworLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmxpbmUgaW50OF90CitVbmljb2RlU3Ry
aW5nOjpkb0NvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCB0aGlz
TGVuZ3RoLAorICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCkgY29uc3QKK3sKKyAgaWYoc3JjVGV4dC5pc0JvZ3VzKCkpIHsKKyAgICByZXR1cm4gKGlu
dDhfdCkhaXNCb2d1cygpOyAvLyAwIGlmIGJvdGggYXJlIGJvZ3VzLCAxIG90aGVyd2lzZQorICB9
IGVsc2UgeworICAgIHNyY1RleHQucGluSW5kaWNlcyhzcmNTdGFydCwgc3JjTGVuZ3RoKTsKKyAg
ICByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCB0aGlzTGVuZ3RoLCBzcmNUZXh0LmdldEFycmF5U3Rh
cnQoKSwgc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgIH0KK30KKworaW5saW5lIFVCb29sCitVbmlj
b2RlU3RyaW5nOjpvcGVyYXRvcj09IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAor
eworICBpZihpc0JvZ3VzKCkpIHsKKyAgICByZXR1cm4gdGV4dC5pc0JvZ3VzKCk7CisgIH0gZWxz
ZSB7CisgICAgaW50MzJfdCBsZW4gPSBsZW5ndGgoKSwgdGV4dExlbmd0aCA9IHRleHQubGVuZ3Ro
KCk7CisgICAgcmV0dXJuCisgICAgICAhdGV4dC5pc0JvZ3VzKCkgJiYKKyAgICAgIGxlbiA9PSB0
ZXh0TGVuZ3RoICYmCisgICAgICBkb0NvbXBhcmUoMCwgbGVuLCB0ZXh0LCAwLCB0ZXh0TGVuZ3Ro
KSA9PSAwOworICB9Cit9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3BlcmF0b3Ih
PSAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3QKK3sgcmV0dXJuICghIG9wZXJhdG9y
PT0odGV4dCkpOyB9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3BlcmF0b3I+IChj
b25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlKDAsIGxl
bmd0aCgpLCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpKSA9PSAxOyB9CisKK2lubGluZSBVQm9vbAor
VW5pY29kZVN0cmluZzo6b3BlcmF0b3I8IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25z
dAoreyByZXR1cm4gZG9Db21wYXJlKDAsIGxlbmd0aCgpLCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgp
KSA9PSAtMTsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6Om9wZXJhdG9yPj0gKGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVu
Z3RoKCksIHRleHQsIDAsIHRleHQubGVuZ3RoKCkpICE9IC0xOyB9CisKK2lubGluZSBVQm9vbAor
VW5pY29kZVN0cmluZzo6b3BlcmF0b3I8PSAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29u
c3QKK3sgcmV0dXJuIGRvQ29tcGFyZSgwLCBsZW5ndGgoKSwgdGV4dCwgMCwgdGV4dC5sZW5ndGgo
KSkgIT0gMTsgfQorCitpbmxpbmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpjb21wYXJlKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVuZ3Ro
KCksIHRleHQsIDAsIHRleHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVT
dHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xl
bmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpIGNvbnN0
Cit7IHJldHVybiBkb0NvbXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIDAsIHNyY1RleHQu
bGVuZ3RoKCkpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoY29u
c3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNv
bnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVuZ3RoKCksIHNyY0NoYXJzLCAwLCBzcmNMZW5n
dGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBz
dGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7IHJldHVybiBk
b0NvbXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9
CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyICpzcmNDaGFycykgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFyZShzdGFydCwgX2xlbmd0aCwg
c3JjQ2hhcnMsIDAsIF9sZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6
OmNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwK
KyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGlu
dDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QK
K3sgcmV0dXJuIGRvQ29tcGFyZShzdGFydCwgX2xlbmd0aCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBz
cmNMZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmVCZXR3
ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAg
ICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xp
bWl0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBsaW1pdCAtIHN0YXJ0LAorICAg
ICAgICAgICBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGltaXQgLSBzcmNTdGFydCk7IH0KKworaW5s
aW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6ZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJf
dCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
dGhpc0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7CisgIGlmKHNyY1RleHQuaXNCb2d1
cygpKSB7CisgICAgcmV0dXJuIChpbnQ4X3QpIWlzQm9ndXMoKTsgLy8gMCBpZiBib3RoIGFyZSBi
b2d1cywgMSBvdGhlcndpc2UKKyAgfSBlbHNlIHsKKyAgICBzcmNUZXh0LnBpbkluZGljZXMoc3Jj
U3RhcnQsIHNyY0xlbmd0aCk7CisgICAgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKHN0
YXJ0LCB0aGlzTGVuZ3RoLCBzcmNUZXh0LmdldEFycmF5U3RhcnQoKSwgc3JjU3RhcnQsIHNyY0xl
bmd0aCk7CisgIH0KK30KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNv
ZGVQb2ludE9yZGVyKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Cit7IHJldHVybiBk
b0NvbXBhcmVDb2RlUG9pbnRPcmRlcigwLCBsZW5ndGgoKSwgdGV4dCwgMCwgdGV4dC5sZW5ndGgo
KSk7IH0KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9y
ZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmVDb2Rl
UG9pbnRPcmRlcihzdGFydCwgX2xlbmd0aCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7
IH0KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVy
KGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2lu
dE9yZGVyKDAsIGxlbmd0aCgpLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUg
aW50OF90CitVbmljb2RlU3RyaW5nOjpjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmlu
ZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQs
IF9sZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4
X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMp
IGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcihzdGFydCwgX2xlbmd0aCwg
c3JjQ2hhcnMsIDAsIF9sZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6
OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRv
Q29tcGFyZUNvZGVQb2ludE9yZGVyKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQs
IHNyY0xlbmd0aCk7IH0KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNv
ZGVQb2ludE9yZGVyQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xpbWl0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQs
IGxpbWl0IC0gc3RhcnQsCisgICAgICAgICAgIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMaW1pdCAt
IHNyY1N0YXJ0KTsgfQorCitpbmxpbmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpkb0Nhc2VDb21w
YXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
dGhpc0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0
cmluZyAmc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0Cit7Cisg
IGlmKHNyY1RleHQuaXNCb2d1cygpKSB7CisgICAgcmV0dXJuIChpbnQ4X3QpIWlzQm9ndXMoKTsg
Ly8gMCBpZiBib3RoIGFyZSBib2d1cywgMSBvdGhlcndpc2UKKyAgfSBlbHNlIHsKKyAgICBzcmNU
ZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgcmV0dXJuIGRvQ2FzZUNv
bXBhcmUoc3RhcnQsIHRoaXNMZW5ndGgsIHNyY1RleHQuZ2V0QXJyYXlTdGFydCgpLCBzcmNTdGFy
dCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKKyAgfQorfQorCitpbmxpbmUgaW50OF90CitVbmljb2Rl
U3RyaW5nOjpjYXNlQ29tcGFyZShjb25zdCBVbmljb2RlU3RyaW5nICZ0ZXh0LCB1aW50MzJfdCBv
cHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKDAsIGxlbmd0aCgpLCB0ZXh0
LCAwLCB0ZXh0Lmxlbmd0aCgpLCBvcHRpb25zKTsKK30KKworaW5saW5lIGludDhfdAorVW5pY29k
ZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVuaWNvZGVTdHJpbmcgJnNyY1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKHN0YXJ0LCBfbGVu
Z3RoLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpLCBvcHRpb25zKTsKK30KKworaW5saW5l
IGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBk
b0Nhc2VDb21wYXJlKDAsIGxlbmd0aCgpLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoLCBvcHRpb25z
KTsKK30KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJf
dCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNyY1RleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKHN0
YXJ0LCBfbGVuZ3RoLCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKK30K
KworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0IHsKKyAgcmV0dXJuIGRvQ2FzZUNv
bXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJzLCAwLCBfbGVuZ3RoLCBvcHRpb25zKTsKK30K
KworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IG9wdGlvbnMpIGNvbnN0IHsKKyAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUoc3RhcnQsIF9sZW5ndGgs
IHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKK30KKworaW5saW5lIGlu
dDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmVCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nICZzcmNUZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMaW1pdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJl
dHVybiBkb0Nhc2VDb21wYXJlKHN0YXJ0LCBsaW1pdCAtIHN0YXJ0LCBzcmNUZXh0LCBzcmNTdGFy
dCwgc3JjTGltaXQgLSBzcmNTdGFydCwgb3B0aW9ucyk7Cit9CisKK2lubGluZSBpbnQzMl90CitV
bmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50
MzJfdCBfbGVuZ3RoKSBjb25zdAoreworICBpZighc3JjVGV4dC5pc0JvZ3VzKCkpIHsKKyAgICBz
cmNUZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgaWYoc3JjTGVuZ3Ro
ID4gMCkgeworICAgICAgcmV0dXJuIGluZGV4T2Yoc3JjVGV4dC5nZXRBcnJheVN0YXJ0KCksIHNy
Y1N0YXJ0LCBzcmNMZW5ndGgsIHN0YXJ0LCBfbGVuZ3RoKTsKKyAgICB9CisgIH0KKyAgcmV0dXJu
IC0xOworfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreyByZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0
Lmxlbmd0aCgpLCAwLCBsZW5ndGgoKSk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJp
bmc6OmluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwKKyAgICAgICAgICAgICAgIGlu
dDMyX3Qgc3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICByZXR1cm4gaW5kZXhP
Zih0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpLCBzdGFydCwgbGVuZ3RoKCkgLSBzdGFydCk7Cit9CisK
K2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAg
aW50MzJfdCBfbGVuZ3RoKSBjb25zdAoreyByZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxl
bmd0aCgpLCBzdGFydCwgX2xlbmd0aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJp
bmc6OmluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdCB7CisgIHBp
bkluZGV4KHN0YXJ0KTsKKyAgcmV0dXJuIGluZGV4T2Yoc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCwg
c3RhcnQsIGxlbmd0aCgpIC0gc3RhcnQpOworfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0
cmluZzo6aW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAg
ICAgICBpbnQzMl90IF9sZW5ndGgpIGNvbnN0Cit7IHJldHVybiBpbmRleE9mKHNyY0NoYXJzLCAw
LCBzcmNMZW5ndGgsIHN0YXJ0LCBfbGVuZ3RoKTsgfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29k
ZVN0cmluZzo6aW5kZXhPZihVQ2hhciBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhP
ZihjLCBzdGFydCwgX2xlbmd0aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6
OmluZGV4T2YoVUNoYXIzMiBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhPZihjLCBz
dGFydCwgX2xlbmd0aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4
T2YoVUNoYXIgYykgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7IH0K
KworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIzMiBjKSBjb25z
dAoreyByZXR1cm4gaW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7IH0KKworaW5saW5lIGludDMyX3QK
K1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICByZXR1cm4gZG9JbmRleE9mKGMs
IHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVT
dHJpbmc6OmluZGV4T2YoVUNoYXIzMiBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkg
Y29uc3QgeworICBwaW5JbmRleChzdGFydCk7CisgIHJldHVybiBpbmRleE9mKGMsIHN0YXJ0LCBs
ZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxh
c3RJbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
IGludDMyX3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGxhc3RJbmRleE9mKHNyY0NoYXJzLCAw
LCBzcmNMZW5ndGgsIHN0YXJ0LCBfbGVuZ3RoKTsgfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29k
ZVN0cmluZzo6bGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25z
dCB7CisgIHBpbkluZGV4KHN0YXJ0KTsKKyAgcmV0dXJuIGxhc3RJbmRleE9mKHNyY0NoYXJzLCAw
LCBzcmNMZW5ndGgsIHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMy
X3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1Rl
eHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAoreworICBpZighc3JjVGV4dC5pc0JvZ3VzKCkp
IHsKKyAgICBzcmNUZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgaWYo
c3JjTGVuZ3RoID4gMCkgeworICAgICAgcmV0dXJuIGxhc3RJbmRleE9mKHNyY1RleHQuZ2V0QXJy
YXlTdGFydCgpLCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBzdGFydCwgX2xlbmd0aCk7CisgICAgfQor
ICB9CisgIHJldHVybiAtMTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxh
c3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAgICBpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAoreyByZXR1
cm4gbGFzdEluZGV4T2YodGV4dCwgMCwgdGV4dC5sZW5ndGgoKSwgc3RhcnQsIF9sZW5ndGgpOyB9
CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVbmlj
b2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3Qgewor
ICBwaW5JbmRleChzdGFydCk7CisgIHJldHVybiBsYXN0SW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxl
bmd0aCgpLCBzdGFydCwgbGVuZ3RoKCkgLSBzdGFydCk7Cit9CisKK2lubGluZSBpbnQzMl90CitV
bmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25z
dAoreyByZXR1cm4gbGFzdEluZGV4T2YodGV4dCwgMCwgdGV4dC5sZW5ndGgoKSwgMCwgbGVuZ3Ro
KCkpOyB9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hh
ciBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMy
X3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvTGFzdEluZGV4T2YoYywgc3RhcnQsIF9sZW5n
dGgpOyB9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hh
cjMyIGMsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50
MzJfdCBfbGVuZ3RoKSBjb25zdCB7CisgIHJldHVybiBkb0xhc3RJbmRleE9mKGMsIHN0YXJ0LCBf
bGVuZ3RoKTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9m
KFVDaGFyIGMpIGNvbnN0Cit7IHJldHVybiBkb0xhc3RJbmRleE9mKGMsIDAsIGxlbmd0aCgpKTsg
fQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoVUNoYXIzMiBj
KSBjb25zdCB7CisgIHJldHVybiBsYXN0SW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7Cit9CisKK2lu
bGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hhciBjLAorICAgICAg
ICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QgeworICBwaW5JbmRleChzdGFydCk7CisgIHJl
dHVybiBkb0xhc3RJbmRleE9mKGMsIHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5s
aW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyMzIgYywKKyAgICAg
ICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICBy
ZXR1cm4gbGFzdEluZGV4T2YoYywgc3RhcnQsIGxlbmd0aCgpIC0gc3RhcnQpOworfQorCitpbmxp
bmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVW5pY29kZVN0cmluZyYg
dGV4dCkgY29uc3QKK3sgcmV0dXJuIGNvbXBhcmUoMCwgdGV4dC5sZW5ndGgoKSwgdGV4dCwgMCwg
dGV4dC5sZW5ndGgoKSkgPT0gMDsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0
YXJ0c1dpdGgoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7
IHJldHVybiBkb0NvbXBhcmUoMCwgc3JjTGVuZ3RoLCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVu
Z3RoKSA9PSAwOyB9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6c3RhcnRzV2l0aChj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBj
b25zdAoreyByZXR1cm4gZG9Db21wYXJlKDAsIHNyY0xlbmd0aCwgc3JjQ2hhcnMsIDAsIHNyY0xl
bmd0aCkgPT0gMDsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgo
Y29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAor
ICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFy
ZSgwLCBzcmNMZW5ndGgsIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwO30KKwor
aW5saW5lIFVCb29sCitVbmljb2RlU3RyaW5nOjplbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5n
JiB0ZXh0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlKGxlbmd0aCgpIC0gdGV4dC5sZW5ndGgo
KSwgdGV4dC5sZW5ndGgoKSwKKyAgICAgICAgICAgdGV4dCwgMCwgdGV4dC5sZW5ndGgoKSkgPT0g
MDsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0IHsKKyAgc3JjVGV4dC5waW5JbmRpY2VzKHNy
Y1N0YXJ0LCBzcmNMZW5ndGgpOworICByZXR1cm4gZG9Db21wYXJlKGxlbmd0aCgpIC0gc3JjTGVu
Z3RoLCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgc3JjVGV4dCwgc3JjU3RhcnQsIHNy
Y0xlbmd0aCkgPT0gMDsKK30KKworaW5saW5lIFVCb29sCitVbmljb2RlU3RyaW5nOjplbmRzV2l0
aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkg
Y29uc3QgeworICBpZihzcmNMZW5ndGggPCAwKSB7CisgICAgc3JjTGVuZ3RoID0gdV9zdHJsZW4o
c3JjQ2hhcnMpOworICB9CisgIHJldHVybiBkb0NvbXBhcmUobGVuZ3RoKCkgLSBzcmNMZW5ndGgs
IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKSA9
PSAwOworfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVD
aGFyICpzcmNDaGFycywKKyAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QgeworICBpZihzcmNMZW5ndGggPCAwKSB7CisgICAg
c3JjTGVuZ3RoID0gdV9zdHJsZW4oc3JjQ2hhcnMgKyBzcmNTdGFydCk7CisgIH0KKyAgcmV0dXJu
IGRvQ29tcGFyZShsZW5ndGgoKSAtIHNyY0xlbmd0aCwgc3JjTGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwOworfQorCisvLz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIHJlcGxhY2UKKy8vPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5saW5lIFVuaWNvZGVTdHJpbmcm
CitVbmljb2RlU3RyaW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBp
bnQzMl90IF9sZW5ndGgsCisgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0KQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNUZXh0LCAwLCBzcmNU
ZXh0Lmxlbmd0aCgpKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6
OnJlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwK
KyAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgp
Cit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBz
cmNMZW5ndGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6cmVw
bGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAg
ICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJz
LCAwLCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmlu
Zzo6cmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3Ro
LAorICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreyBy
ZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xl
bmd0aCk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpyZXBsYWNl
KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCisgICAgICAg
ICAgICAgICBVQ2hhciBzcmNDaGFyKQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3Ro
LCAmc3JjQ2hhciwgMCwgMSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3Ry
aW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5n
dGgsCisgICAgICAgICAgICAgICBVQ2hhcjMyIHNyY0NoYXIpIHsKKyAgVUNoYXIgYnVmZmVyW1Ux
Nl9NQVhfTEVOR1RIXTsKKyAgaW50MzJfdCBjb3VudCA9IDA7CisgIFVCb29sIGlzRXJyb3IgPSBG
QUxTRTsKKyAgVTE2X0FQUEVORChidWZmZXIsIGNvdW50LCBVMTZfTUFYX0xFTkdUSCwgc3JjQ2hh
ciwgaXNFcnJvcik7CisgIHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIGJ1ZmZlciwg
MCwgY291bnQpOworfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJl
cGxhY2VCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxp
bWl0LAorICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKK3sg
cmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGltaXQgLSBzdGFydCwgc3JjVGV4dCwgMCwgc3JjVGV4
dC5sZW5ndGgoKSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpy
ZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgaW50MzJfdCBs
aW1pdCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisg
ICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNMaW1pdCkKK3sgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGltaXQgLSBzdGFydCwg
c3JjVGV4dCwgc3JjU3RhcnQsIHNyY0xpbWl0IC0gc3JjU3RhcnQpOyB9CisKK2lubGluZSBVbmlj
b2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6ZmluZEFuZFJlcGxhY2UoY29uc3QgVW5pY29kZVN0
cmluZyYgb2xkVGV4dCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5l
d1RleHQpCit7IHJldHVybiBmaW5kQW5kUmVwbGFjZSgwLCBsZW5ndGgoKSwgb2xkVGV4dCwgMCwg
b2xkVGV4dC5sZW5ndGgoKSwKKyAgICAgICAgICAgIG5ld1RleHQsIDAsIG5ld1RleHQubGVuZ3Ro
KCkpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6ZmluZEFuZFJl
cGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwK
KyAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisgICAgICAg
ICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBuZXdUZXh0KQoreyByZXR1cm4gZmluZEFu
ZFJlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIG9sZFRleHQsIDAsIG9sZFRleHQubGVuZ3RoKCksCisg
ICAgICAgICAgICBuZXdUZXh0LCAwLCBuZXdUZXh0Lmxlbmd0aCgpKTsgfQorCisvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisvLyBleHRyYWN0CisvLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09CitpbmxpbmUgdm9pZAorVW5pY29kZVN0cmluZzo6ZG9FeHRyYWN0KGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgIFVuaWNv
ZGVTdHJpbmcmIHRhcmdldCkgY29uc3QKK3sgdGFyZ2V0LnJlcGxhY2UoMCwgdGFyZ2V0Lmxlbmd0
aCgpLCAqdGhpcywgc3RhcnQsIF9sZW5ndGgpOyB9CisKK2lubGluZSB2b2lkCitVbmljb2RlU3Ry
aW5nOjpleHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5n
dGgsCisgICAgICAgICAgICAgICBVQ2hhciAqdGFyZ2V0LAorICAgICAgICAgICAgICAgaW50MzJf
dCB0YXJnZXRTdGFydCkgY29uc3QKK3sgZG9FeHRyYWN0KHN0YXJ0LCBfbGVuZ3RoLCB0YXJnZXQs
IHRhcmdldFN0YXJ0KTsgfQorCitpbmxpbmUgdm9pZAorVW5pY29kZVN0cmluZzo6ZXh0cmFjdChp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAg
ICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdAoreyBkb0V4dHJhY3Qoc3RhcnQsIF9s
ZW5ndGgsIHRhcmdldCk7IH0KKworI2lmICFVQ09ORklHX05PX0NPTlZFUlNJT04KKworaW5saW5l
IGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAg
ICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNoYXIgKmRzdCwKKyAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGVwYWdlKSBjb25zdAorCit7CisgIC8vIFRoaXMgZHN0
U2l6ZSB2YWx1ZSB3aWxsIGJlIGNoZWNrZWQgZXhwbGljaXRseQorI2lmIGRlZmluZWQoX19HTlVD
X18pCisgIC8vIFRpY2tldCAjNzAzOTogQ2xpcCBsZW5ndGggdG8gdGhlIG1heGltdW0gdmFsaWQg
bGVuZ3RoIHRvIHRoZSBlbmQgb2YgYWRkcmVzc2FibGUgbWVtb3J5IGdpdmVuIHRoZSBzdGFydGlu
ZyBhZGRyZXNzCisgIC8vIFRoaXMgaXMgb25seSBhbiBpc3N1ZSB3aGVuIHVzaW5nIEdDQyBhbmQg
Y2VydGFpbiBvcHRpbWl6YXRpb25zIGFyZSB0dXJuZWQgb24uCisgIHJldHVybiBleHRyYWN0KHN0
YXJ0LCBfbGVuZ3RoLCBkc3QsIGRzdCE9MCA/ICgoZHN0ID49IChjaGFyKikoKHNpemVfdCktMSkg
LSBVSU5UMzJfTUFYKSA/ICgoKGNoYXIqKVVJTlQzMl9NQVgpIC0gZHN0KSA6IFVJTlQzMl9NQVgp
IDogMCwgY29kZXBhZ2UpOworI2Vsc2UKKyAgcmV0dXJuIGV4dHJhY3Qoc3RhcnQsIF9sZW5ndGgs
IGRzdCwgZHN0IT0wID8gMHhmZmZmZmZmZiA6IDAsIGNvZGVwYWdlKTsKKyNlbmRpZgorfQorCisj
ZW5kaWYKKworaW5saW5lIHZvaWQKK1VuaWNvZGVTdHJpbmc6OmV4dHJhY3RCZXR3ZWVuKGludDMy
X3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAg
ICAgICAgVUNoYXIgKmRzdCwKKyAgICAgICAgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQpIGNv
bnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICBwaW5JbmRleChsaW1pdCk7CisgIGRvRXh0cmFj
dChzdGFydCwgbGltaXQgLSBzdGFydCwgZHN0LCBkc3RTdGFydCk7Cit9CisKK2lubGluZSBVbmlj
b2RlU3RyaW5nCitVbmljb2RlU3RyaW5nOjp0ZW1wU3ViU3RyaW5nQmV0d2VlbihpbnQzMl90IHN0
YXJ0LCBpbnQzMl90IGxpbWl0KSBjb25zdCB7CisgICAgcmV0dXJuIHRlbXBTdWJTdHJpbmcoc3Rh
cnQsIGxpbWl0IC0gc3RhcnQpOworfQorCitpbmxpbmUgVUNoYXIKK1VuaWNvZGVTdHJpbmc6OmRv
Q2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreworICBpZigodWludDMyX3Qpb2Zmc2V0IDwg
KHVpbnQzMl90KWxlbmd0aCgpKSB7CisgICAgcmV0dXJuIGdldEFycmF5U3RhcnQoKVtvZmZzZXRd
OworICB9IGVsc2UgeworICAgIHJldHVybiBrSW52YWxpZFVDaGFyOworICB9Cit9CisKK2lubGlu
ZSBVQ2hhcgorVW5pY29kZVN0cmluZzo6Y2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreyBy
ZXR1cm4gZG9DaGFyQXQob2Zmc2V0KTsgfQorCitpbmxpbmUgVUNoYXIKK1VuaWNvZGVTdHJpbmc6
Om9wZXJhdG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreyByZXR1cm4gZG9DaGFyQXQob2Zm
c2V0KTsgfQorCitpbmxpbmUgVUNoYXIzMgorVW5pY29kZVN0cmluZzo6Y2hhcjMyQXQoaW50MzJf
dCBvZmZzZXQpIGNvbnN0Cit7CisgIGludDMyX3QgbGVuID0gbGVuZ3RoKCk7CisgIGlmKCh1aW50
MzJfdClvZmZzZXQgPCAodWludDMyX3QpbGVuKSB7CisgICAgY29uc3QgVUNoYXIgKmFycmF5ID0g
Z2V0QXJyYXlTdGFydCgpOworICAgIFVDaGFyMzIgYzsKKyAgICBVMTZfR0VUKGFycmF5LCAwLCBv
ZmZzZXQsIGxlbiwgYyk7CisgICAgcmV0dXJuIGM7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGtJ
bnZhbGlkVUNoYXI7CisgIH0KK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omdl
dENoYXIzMlN0YXJ0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCB7CisgIGlmKCh1aW50MzJfdClvZmZz
ZXQgPCAodWludDMyX3QpbGVuZ3RoKCkpIHsKKyAgICBjb25zdCBVQ2hhciAqYXJyYXkgPSBnZXRB
cnJheVN0YXJ0KCk7CisgICAgVTE2X1NFVF9DUF9TVEFSVChhcnJheSwgMCwgb2Zmc2V0KTsKKyAg
ICByZXR1cm4gb2Zmc2V0OworICB9IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2lu
bGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpnZXRDaGFyMzJMaW1pdChpbnQzMl90IG9mZnNl
dCkgY29uc3QgeworICBpbnQzMl90IGxlbiA9IGxlbmd0aCgpOworICBpZigodWludDMyX3Qpb2Zm
c2V0IDwgKHVpbnQzMl90KWxlbikgeworICAgIGNvbnN0IFVDaGFyICphcnJheSA9IGdldEFycmF5
U3RhcnQoKTsKKyAgICBVMTZfU0VUX0NQX0xJTUlUKGFycmF5LCAwLCBvZmZzZXQsIGxlbik7Cisg
ICAgcmV0dXJuIG9mZnNldDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbGVuOworICB9Cit9CisK
K2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6aXNFbXB0eSgpIGNvbnN0IHsKKyAgcmV0dXJu
IGZTaG9ydExlbmd0aCA9PSAwOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKy8vIFdyaXRlIGltcGxlbWVudGF0aW9uIG1ldGhvZHMKKy8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5saW5lIHZvaWQKK1VuaWNvZGVTdHJp
bmc6OnNldExlbmd0aChpbnQzMl90IGxlbikgeworICBpZihsZW4gPD0gMTI3KSB7CisgICAgZlNo
b3J0TGVuZ3RoID0gKGludDhfdClsZW47CisgIH0gZWxzZSB7CisgICAgZlNob3J0TGVuZ3RoID0g
KGludDhfdCktMTsKKyAgICBmVW5pb24uZkZpZWxkcy5mTGVuZ3RoID0gbGVuOworICB9Cit9CisK
K2lubGluZSB2b2lkCitVbmljb2RlU3RyaW5nOjpzZXRUb0VtcHR5KCkgeworICBmU2hvcnRMZW5n
dGggPSAwOworICBmRmxhZ3MgPSBrU2hvcnRTdHJpbmc7Cit9CisKK2lubGluZSB2b2lkCitVbmlj
b2RlU3RyaW5nOjpzZXRBcnJheShVQ2hhciAqYXJyYXksIGludDMyX3QgbGVuLCBpbnQzMl90IGNh
cGFjaXR5KSB7CisgIHNldExlbmd0aChsZW4pOworICBmVW5pb24uZkZpZWxkcy5mQXJyYXkgPSBh
cnJheTsKKyAgZlVuaW9uLmZGaWVsZHMuZkNhcGFjaXR5ID0gY2FwYWNpdHk7Cit9CisKK2lubGlu
ZSBjb25zdCBVQ2hhciAqCitVbmljb2RlU3RyaW5nOjpnZXRUZXJtaW5hdGVkQnVmZmVyKCkgewor
ICBpZighaXNXcml0YWJsZSgpKSB7CisgICAgcmV0dXJuIDA7CisgIH0gZWxzZSB7CisgICAgVUNo
YXIgKmFycmF5ID0gZ2V0QXJyYXlTdGFydCgpOworICAgIGludDMyX3QgbGVuID0gbGVuZ3RoKCk7
CisgICAgaWYobGVuIDwgZ2V0Q2FwYWNpdHkoKSAmJiAoKGZGbGFncyZrUmVmQ291bnRlZCkgPT0g
MCB8fCByZWZDb3VudCgpID09IDEpKSB7CisgICAgICAvKgorICAgICAgICoga1JlZkNvdW50ZWQ6
IERvIG5vdCB3cml0ZSB0aGUgTlVMIGlmIHRoZSBidWZmZXIgaXMgc2hhcmVkLgorICAgICAgICog
VGhhdCBpcyBtb3N0bHkgc2FmZSwgZXhjZXB0IHdoZW4gdGhlIGxlbmd0aCBvZiBvbmUgY29weSB3
YXMgbW9kaWZpZWQKKyAgICAgICAqIHdpdGhvdXQgY29weS1vbi13cml0ZSwgZS5nLiwgdmlhIHRy
dW5jYXRlKG5ld0xlbmd0aCkgb3IgcmVtb3ZlKHZvaWQpLgorICAgICAgICogVGhlbiB0aGUgTlVM
IHdvdWxkIGJlIHdyaXR0ZW4gaW50byB0aGUgbWlkZGxlIG9mIGFub3RoZXIgY29weSdzIHN0cmlu
Zy4KKyAgICAgICAqLworICAgICAgaWYoIShmRmxhZ3Mma0J1ZmZlcklzUmVhZG9ubHkpKSB7Cisg
ICAgICAgIC8qCisgICAgICAgICAqIFdlIG11c3Qgbm90IHdyaXRlIHRvIGEgcmVhZG9ubHkgYnVm
ZmVyLCBidXQgaXQgaXMga25vd24gdG8gYmUKKyAgICAgICAgICogTlVMLXRlcm1pbmF0ZWQgaWYg
bGVuPGNhcGFjaXR5LgorICAgICAgICAgKiBBIHNoYXJlZCwgYWxsb2NhdGVkIGJ1ZmZlciAocmVm
Q291bnQoKT4xKSBtdXN0IG5vdCBoYXZlIGl0cyBjb250ZW50cworICAgICAgICAgKiBtb2RpZmll
ZCwgYnV0IHRoZSBOVUwgYXQgW2xlbl0gaXMgYmV5b25kIHRoZSBzdHJpbmcgY29udGVudHMsCisg
ICAgICAgICAqIGFuZCBtdWx0aXBsZSBzdHJpbmcgb2JqZWN0cyBhbmQgdGhyZWFkcyB3cml0aW5n
IHRoZSBzYW1lIE5VTCBpbnRvIHRoZQorICAgICAgICAgKiBzYW1lIGxvY2F0aW9uIGlzIGhhcm1s
ZXNzLgorICAgICAgICAgKiBJbiBhbGwgb3RoZXIgY2FzZXMsIHRoZSBidWZmZXIgaXMgZnVsbHkg
d3JpdGFibGUgYW5kIGl0IGlzIGFueXdheSBzYWZlCisgICAgICAgICAqIHRvIHdyaXRlIHRoZSBO
VUwuCisgICAgICAgICAqCisgICAgICAgICAqIE5vdGU6IEFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0
aGlzIGNvZGUgdGVzdGVkIHdoZXRoZXIgdGhlcmUgaXMgYSBOVUwKKyAgICAgICAgICogYXQgW2xl
bl0gYWxyZWFkeSwgYnV0LCB3aGlsZSBzYWZlLCBpdCBnZW5lcmF0ZWQgbG90cyBvZiB3YXJuaW5n
cyBmcm9tCisgICAgICAgICAqIHRvb2xzIGxpa2UgdmFsZ3JpbmQgYW5kIFB1cmlmeS4KKyAgICAg
ICAgICovCisgICAgICAgIGFycmF5W2xlbl0gPSAwOworICAgICAgfQorICAgICAgcmV0dXJuIGFy
cmF5OworICAgIH0gZWxzZSBpZihjbG9uZUFycmF5SWZOZWVkZWQobGVuKzEpKSB7CisgICAgICBh
cnJheSA9IGdldEFycmF5U3RhcnQoKTsKKyAgICAgIGFycmF5W2xlbl0gPSAwOworICAgICAgcmV0
dXJuIGFycmF5OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH0KK30K
KworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcj0gKFVDaGFy
IGNoKQoreyByZXR1cm4gZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCAmY2gsIDAsIDEpOyB9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6b3BlcmF0b3I9IChVQ2hhcjMyIGNo
KQoreyByZXR1cm4gcmVwbGFjZSgwLCBsZW5ndGgoKSwgY2gpOyB9CisKK2lubGluZSBVbmljb2Rl
U3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0VG8oY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4
dCwKKyAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKQoreworICB1bkJvZ3VzKCk7CisgIHJldHVybiBkb1JlcGxhY2UoMCwgbGVuZ3Ro
KCksIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOworfQorCitpbmxpbmUgVW5pY29kZVN0
cmluZyYKK1VuaWNvZGVTdHJpbmc6OnNldFRvKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQs
CisgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCkKK3sKKyAgdW5Cb2d1cygpOworICBzcmNU
ZXh0LnBpbkluZGV4KHNyY1N0YXJ0KTsKKyAgcmV0dXJuIGRvUmVwbGFjZSgwLCBsZW5ndGgoKSwg
c3JjVGV4dCwgc3JjU3RhcnQsIHNyY1RleHQubGVuZ3RoKCkgLSBzcmNTdGFydCk7Cit9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0VG8oY29uc3QgVW5pY29kZVN0
cmluZyYgc3JjVGV4dCkKK3sKKyAgdW5Cb2d1cygpOworICByZXR1cm4gZG9SZXBsYWNlKDAsIGxl
bmd0aCgpLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsKK30KKworaW5saW5lIFVuaWNv
ZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisg
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7CisgIHVuQm9ndXMoKTsKKyAgcmV0dXJu
IGRvUmVwbGFjZSgwLCBsZW5ndGgoKSwgc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCk7Cit9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0VG8oVUNoYXIgc3JjQ2hhcikK
K3sKKyAgdW5Cb2d1cygpOworICByZXR1cm4gZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCAmc3JjQ2hh
ciwgMCwgMSk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0
VG8oVUNoYXIzMiBzcmNDaGFyKQoreworICB1bkJvZ3VzKCk7CisgIHJldHVybiByZXBsYWNlKDAs
IGxlbmd0aCgpLCBzcmNDaGFyKTsKK30KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2Rl
U3RyaW5nOjphcHBlbmQoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7
IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCksIDAsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5n
dGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6YXBwZW5kKGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpCit7IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCks
IDAsIHNyY1RleHQsIDAsIHNyY1RleHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBVbmljb2RlU3Ry
aW5nJgorVW5pY29kZVN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpCit7IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCksIDAsIHNyY0NoYXJzLCBzcmNTdGFydCwg
c3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OmFw
cGVuZChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoKQoreyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCBzcmNDaGFycywgMCwgc3JjTGVu
Z3RoKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OmFwcGVuZChV
Q2hhciBzcmNDaGFyKQoreyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCAmc3JjQ2hhciwg
MCwgMSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjphcHBlbmQo
VUNoYXIzMiBzcmNDaGFyKSB7CisgIFVDaGFyIGJ1ZmZlcltVMTZfTUFYX0xFTkdUSF07CisgIGlu
dDMyX3QgX2xlbmd0aCA9IDA7CisgIFVCb29sIGlzRXJyb3IgPSBGQUxTRTsKKyAgVTE2X0FQUEVO
RChidWZmZXIsIF9sZW5ndGgsIFUxNl9NQVhfTEVOR1RILCBzcmNDaGFyLCBpc0Vycm9yKTsKKyAg
cmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgYnVmZmVyLCAwLCBfbGVuZ3RoKTsKK30KKwor
aW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcis9IChVQ2hhciBj
aCkKK3sgcmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgJmNoLCAwLCAxKTsgfQorCitpbmxp
bmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6Om9wZXJhdG9yKz0gKFVDaGFyMzIgY2gp
IHsKKyAgcmV0dXJuIGFwcGVuZChjaCk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5p
Y29kZVN0cmluZzo6b3BlcmF0b3IrPSAoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKK3sg
cmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgo
KSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjppbnNlcnQoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwK
KyAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBz
cmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIHNyY1N0YXJ0
LCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6
aW5zZXJ0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIDAsIHNyY1Rl
eHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6
aW5zZXJ0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFy
cywKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY0NoYXJzLCBzcmNT
dGFydCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJp
bmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreyByZXR1cm4gZG9SZXBs
YWNlKHN0YXJ0LCAwLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgVW5pY29k
ZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICAgICBVQ2hhciBzcmNDaGFyKQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCAwLCAmc3JjQ2hh
ciwgMCwgMSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjppbnNl
cnQoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgVUNoYXIzMiBzcmNDaGFyKQoreyByZXR1
cm4gcmVwbGFjZShzdGFydCwgMCwgc3JjQ2hhcik7IH0KKworCitpbmxpbmUgVW5pY29kZVN0cmlu
ZyYKK1VuaWNvZGVTdHJpbmc6OnJlbW92ZSgpCit7CisgIC8vIHJlbW92ZSgpIG9mIGEgYm9ndXMg
c3RyaW5nIG1ha2VzIHRoZSBzdHJpbmcgZW1wdHkgYW5kIG5vbi1ib2d1cworICAvLyB3ZSBhbHNv
IHVuLWFsaWFzIGEgcmVhZC1vbmx5IGFsaWFzIHRvIGRlYWwgd2l0aCBOVUwtdGVybWluYXRpb24K
KyAgLy8gaXNzdWVzIHdpdGggZ2V0VGVybWluYXRlZEJ1ZmZlcigpCisgIGlmKGZGbGFncyAmIChr
SXNCb2d1c3xrQnVmZmVySXNSZWFkb25seSkpIHsKKyAgICBzZXRUb0VtcHR5KCk7CisgIH0gZWxz
ZSB7CisgICAgZlNob3J0TGVuZ3RoID0gMDsKKyAgfQorICByZXR1cm4gKnRoaXM7Cit9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6cmVtb3ZlKGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKQoreworICAgIGlmKHN0YXJ0IDw9IDAgJiYg
X2xlbmd0aCA9PSBJTlQzMl9NQVgpIHsKKyAgICAgICAgLy8gcmVtb3ZlKGd1YXJhbnRlZWQgZXZl
cnl0aGluZykgb2YgYSBib2d1cyBzdHJpbmcgbWFrZXMgdGhlIHN0cmluZyBlbXB0eSBhbmQgbm9u
LWJvZ3VzCisgICAgICAgIHJldHVybiByZW1vdmUoKTsKKyAgICB9CisgICAgcmV0dXJuIGRvUmVw
bGFjZShzdGFydCwgX2xlbmd0aCwgTlVMTCwgMCwgMCk7Cit9CisKK2lubGluZSBVbmljb2RlU3Ry
aW5nJgorVW5pY29kZVN0cmluZzo6cmVtb3ZlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICAgIGludDMyX3QgbGltaXQpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxpbWl0
IC0gc3RhcnQsIE5VTEwsIDAsIDApOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nICYKK1VuaWNv
ZGVTdHJpbmc6OnJldGFpbkJldHdlZW4oaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCkgewor
ICB0cnVuY2F0ZShsaW1pdCk7CisgIHJldHVybiBkb1JlcGxhY2UoMCwgc3RhcnQsIE5VTEwsIDAs
IDApOworfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnRydW5jYXRlKGludDMyX3Qg
dGFyZ2V0TGVuZ3RoKQoreworICBpZihpc0JvZ3VzKCkgJiYgdGFyZ2V0TGVuZ3RoID09IDApIHsK
KyAgICAvLyB0cnVuY2F0ZSgwKSBvZiBhIGJvZ3VzIHN0cmluZyBtYWtlcyB0aGUgc3RyaW5nIGVt
cHR5IGFuZCBub24tYm9ndXMKKyAgICB1bkJvZ3VzKCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9
IGVsc2UgaWYoKHVpbnQzMl90KXRhcmdldExlbmd0aCA8ICh1aW50MzJfdClsZW5ndGgoKSkgewor
ICAgIHNldExlbmd0aCh0YXJnZXRMZW5ndGgpOworICAgIGlmKGZGbGFncyZrQnVmZmVySXNSZWFk
b25seSkgeworICAgICAgZlVuaW9uLmZGaWVsZHMuZkNhcGFjaXR5ID0gdGFyZ2V0TGVuZ3RoOyAg
Ly8gbm90IE5VTC10ZXJtaW5hdGVkIGFueSBtb3JlCisgICAgfQorICAgIHJldHVybiBUUlVFOwor
ICB9IGVsc2UgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCitpbmxpbmUgVW5pY29kZVN0
cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJldmVyc2UoKQoreyByZXR1cm4gZG9SZXZlcnNlKDAsIGxl
bmd0aCgpKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJldmVy
c2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkKK3sgcmV0
dXJuIGRvUmV2ZXJzZShzdGFydCwgX2xlbmd0aCk7IH0KKworVV9OQU1FU1BBQ0VfRU5ECisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3VudW0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bnVtLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTEwMmJhYjU4YjNkMWJiMmUyYjIwODJjYjU1ODljNWRkZWZlOGNjMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bnVtLmgKQEAgLTAsMCArMSw5
OTkgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ny0y
MDEwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhl
cnMuCisqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIE1vZGlmaWNhdGlvbiBIaXN0b3J5OgorKgor
KiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMDYvMjQvOTkgICAg
aGVsZW5hICAgICAgSW50ZWdyYXRlZCBBbGFuJ3MgTkYgZW5oYW5jZW1lbnRzIGFuZCBKYXZhMiBi
dWcgZml4ZXMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyNpZm5kZWYgX1VOVU0KKyNk
ZWZpbmUgX1VOVU0KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisKKyNpZiAhVUNPTkZJ
R19OT19GT1JNQVRUSU5HCisKKyNpbmNsdWRlICJ1bmljb2RlL2xvY2FscG9pbnRlci5oIgorI2lu
Y2x1ZGUgInVuaWNvZGUvdWxvYy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW1pc2MuaCIKKyNpbmNs
dWRlICJ1bmljb2RlL3BhcnNlZXJyLmgiCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6
IE51bWJlckZvcm1hdAorICoKKyAqIDxoMj4gTnVtYmVyIEZvcm1hdCBDIEFQSSA8L2gyPgorICoK
KyAqIE51bWJlciBGb3JtYXQgQyBBUEkgIFByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IKKyAqIGZvcm1h
dHRpbmcgYW5kIHBhcnNpbmcgYSBudW1iZXIuICBBbHNvIHByb3ZpZGVzIG1ldGhvZHMgZm9yCisg
KiBkZXRlcm1pbmluZyB3aGljaCBsb2NhbGVzIGhhdmUgbnVtYmVyIGZvcm1hdHMsIGFuZCB3aGF0
IHRoZWlyIG5hbWVzCisgKiBhcmUuCisgKiA8UD4KKyAqIFVOdW1iZXJGb3JtYXQgaGVscHMgeW91
IHRvIGZvcm1hdCBhbmQgcGFyc2UgbnVtYmVycyBmb3IgYW55IGxvY2FsZS4KKyAqIFlvdXIgY29k
ZSBjYW4gYmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgbG9jYWxlIGNvbnZlbnRpb25z
CisgKiBmb3IgZGVjaW1hbCBwb2ludHMsIHRob3VzYW5kcy1zZXBhcmF0b3JzLCBvciBldmVuIHRo
ZSBwYXJ0aWN1bGFyCisgKiBkZWNpbWFsIGRpZ2l0cyB1c2VkLCBvciB3aGV0aGVyIHRoZSBudW1i
ZXIgZm9ybWF0IGlzIGV2ZW4gZGVjaW1hbC4KKyAqIFRoZXJlIGFyZSBkaWZmZXJlbnQgbnVtYmVy
IGZvcm1hdCBzdHlsZXMgbGlrZSBkZWNpbWFsLCBjdXJyZW5jeSwKKyAqIHBlcmNlbnQgYW5kIHNw
ZWxsb3V0LgorICogPFA+CisgKiBUbyBmb3JtYXQgYSBudW1iZXIgZm9yIHRoZSBjdXJyZW50IExv
Y2FsZSwgdXNlIG9uZSBvZiB0aGUgc3RhdGljCisgKiBmYWN0b3J5IG1ldGhvZHM6CisgKiA8cHJl
PgorICogXGNvZGUKKyAqICAgIFVDaGFyIG15U3RyaW5nWzIwXTsKKyAqICAgIGRvdWJsZSBteU51
bWJlciA9IDcuMDsKKyAqICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICog
ICAgVU51bWJlckZvcm1hdCogbmYgPSB1bnVtX29wZW4oVU5VTV9ERUZBVUxULCBOVUxMLCAtMSwg
TlVMTCwgTlVMTCwgJnN0YXR1cyk7CisgKiAgICB1bnVtX2Zvcm1hdERvdWJsZShuZiwgbXlOdW1i
ZXIsIG15U3RyaW5nLCAyMCwgTlVMTCwgJnN0YXR1cyk7CisgKiAgICBwcmludGYoIiBFeGFtcGxl
IDE6ICVzXG4iLCBhdXN0cmR1cChteVN0cmluZykgKTsgLy9hdXN0cmR1cCggYSBmdW5jdGlvbiB1
c2VkIHRvIGNvbnZlcnQgVUNoYXIqIHRvIGNoYXIqKQorICogXGVuZGNvZGUKKyAqIDwvcHJlPgor
ICogSWYgeW91IGFyZSBmb3JtYXR0aW5nIG11bHRpcGxlIG51bWJlcnMsIGl0IGlzIG1vcmUgZWZm
aWNpZW50IHRvIGdldAorICogdGhlIGZvcm1hdCBhbmQgdXNlIGl0IG11bHRpcGxlIHRpbWVzIHNv
IHRoYXQgdGhlIHN5c3RlbSBkb2Vzbid0CisgKiBoYXZlIHRvIGZldGNoIHRoZSBpbmZvcm1hdGlv
biBhYm91dCB0aGUgbG9jYWwgbGFuZ3VhZ2UgYW5kIGNvdW50cnkKKyAqIGNvbnZlbnRpb25zIG11
bHRpcGxlIHRpbWVzLgorICogPHByZT4KKyAqIFxjb2RlCisgKiB1aW50MzJfdCBpLCByZXN1bHRs
ZW5ndGgsIHJlc2xlbm5lZWRlZDsKKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICogVUZpZWxkUG9zaXRpb24gcG9zOworICogdWludDMyX3QgYVtdID0geyAxMjMsIDMzMzMs
IC0xMjM0NTY3IH07CisgKiBjb25zdCB1aW50MzJfdCBhX2xlbiA9IHNpemVvZihhKSAvIHNpemVv
ZihhWzBdKTsKKyAqIFVOdW1iZXJGb3JtYXQqIG5mOworICogVUNoYXIqIHJlc3VsdCA9IE5VTEw7
CisgKgorICogbmYgPSB1bnVtX29wZW4oVU5VTV9ERUZBVUxULCBOVUxMLCAtMSwgTlVMTCwgTlVM
TCwgJnN0YXR1cyk7CisgKiBmb3IgKGkgPSAwOyBpIDwgYV9sZW47IGkrKykgeworICogICAgcmVz
dWx0bGVuZ3RoPTA7CisgKiAgICByZXNsZW5uZWVkZWQ9dW51bV9mb3JtYXQobmYsIGFbaV0sIE5V
TEwsIHJlc3VsdGxlbmd0aCwgJnBvcywgJnN0YXR1cyk7CisgKiAgICByZXN1bHQgPSBOVUxMOwor
ICogICAgaWYoc3RhdHVzPT1VX0JVRkZFUl9PVkVSRkxPV19FUlJPUil7CisgKiAgICAgICBzdGF0
dXM9VV9aRVJPX0VSUk9SOworICogICAgICAgcmVzdWx0bGVuZ3RoPXJlc2xlbm5lZWRlZCsxOwor
ICogICAgICAgcmVzdWx0PShVQ2hhciopbWFsbG9jKHNpemVvZihVQ2hhcikgKiByZXN1bHRsZW5n
dGgpOworICogICAgICAgdW51bV9mb3JtYXQobmYsIGFbaV0sIHJlc3VsdCwgcmVzdWx0bGVuZ3Ro
LCAmcG9zLCAmc3RhdHVzKTsKKyAqICAgIH0KKyAqICAgIHByaW50ZiggIiBFeGFtcGxlIDI6ICVz
XG4iLCBhdXN0cmR1cChyZXN1bHQpKTsKKyAqICAgIGZyZWUocmVzdWx0KTsKKyAqIH0KKyAqIFxl
bmRjb2RlCisgKiA8L3ByZT4KKyAqIFRvIGZvcm1hdCBhIG51bWJlciBmb3IgYSBkaWZmZXJlbnQg
TG9jYWxlLCBzcGVjaWZ5IGl0IGluIHRoZQorICogY2FsbCB0byB1bnVtX29wZW4oKS4KKyAqIDxw
cmU+CisgKiBcY29kZQorICogICAgIFVOdW1iZXJGb3JtYXQqIG5mID0gdW51bV9vcGVuKFVOVU1f
REVGQVVMVCwgTlVMTCwgLTEsICJmcl9GUiIsIE5VTEwsICZzdWNjZXNzKQorICogXGVuZGNvZGUK
KyAqIDwvcHJlPgorICogWW91IGNhbiB1c2UgYSBOdW1iZXJGb3JtYXQgQVBJIHVudW1fcGFyc2Uo
KSB0byBwYXJzZS4KKyAqIDxwcmU+CisgKiBcY29kZQorICogICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CisgKiAgICBpbnQzMl90IHBvcz0wOworICogICAgaW50MzJfdCBudW07
CisgKiAgICBudW0gPSB1bnVtX3BhcnNlKG5mLCBzdHIsIHVfc3RybGVuKHN0ciksICZwb3MsICZz
dGF0dXMpOworICogXGVuZGNvZGUKKyAqIDwvcHJlPgorICogVXNlIFVOVU1fREVDSU1BTCB0byBn
ZXQgdGhlIG5vcm1hbCBudW1iZXIgZm9ybWF0IGZvciB0aGF0IGNvdW50cnkuCisgKiBUaGVyZSBh
cmUgb3RoZXIgc3RhdGljIG9wdGlvbnMgYXZhaWxhYmxlLiAgVXNlIFVOVU1fQ1VSUkVOQ1kKKyAq
IHRvIGdldCB0aGUgY3VycmVuY3kgbnVtYmVyIGZvcm1hdCBmb3IgdGhhdCBjb3VudHJ5LiAgVXNl
IFVOVU1fUEVSQ0VOVAorICogdG8gZ2V0IGEgZm9ybWF0IGZvciBkaXNwbGF5aW5nIHBlcmNlbnRh
Z2VzLiBXaXRoIHRoaXMgZm9ybWF0LCBhCisgKiBmcmFjdGlvbiBmcm9tIDAuNTMgaXMgZGlzcGxh
eWVkIGFzIDUzJS4KKyAqIDxQPgorICogVXNlIGEgcGF0dGVybiB0byBjcmVhdGUgZWl0aGVyIGEg
RGVjaW1hbEZvcm1hdCBvciBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdAorICogZm9ybWF0dGVyLiAg
VGhlIHBhdHRlcm4gbXVzdCBjb25mb3JtIHRvIHRoZSBzeW50YXggZGVmaW5lZCBmb3IgdGhvc2UK
KyAqIGZvcm1hdHRlcnMuCisgKiA8UD4KKyAqIFlvdSBjYW4gYWxzbyBjb250cm9sIHRoZSBkaXNw
bGF5IG9mIG51bWJlcnMgd2l0aCBzdWNoIGZ1bmN0aW9uIGFzCisgKiB1bnVtX2dldEF0dHJpYnVl
cygpIGFuZCB1bnVtX3NldEF0cmlidXRlcygpLCB3aGljaCBsZXQgeW91IHNldCB0aGUKKyAqIG1p
bWludW0gZnJhY3Rpb24gZGlnaXRzLCBncm91cGluZywgZXRjLgorICogQHNlZSBVTnVtYmVyRm9y
bWF0QXR0cmlidXRlcyBmb3IgbW9yZSBkZXRhaWxzCisgKiA8UD4KKyAqIFlvdSBjYW4gYWxzbyB1
c2UgZm9ybXMgb2YgdGhlIHBhcnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCisgKiBQYXJzZVBv
c2l0aW9uIGFuZCBVRmllbGRQb3NpdGlvbiB0byBhbGxvdyB5b3UgdG86CisgKiA8dWwgdHlwZT1y
b3VuZD4KKyAqICAgPGxpPihhKSBwcm9ncmVzc2l2ZWx5IHBhcnNlIHRocm91Z2ggcGllY2VzIG9m
IGEgc3RyaW5nLgorICogICA8bGk+KGIpIGFsaWduIHRoZSBkZWNpbWFsIHBvaW50IGFuZCBvdGhl
ciBhcmVhcy4KKyAqIDwvdWw+CisgKiA8cD4KKyAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY2hh
bmdlIG9yIHNldCB0aGUgc3ltYm9scyB1c2VkIGZvciBhIHBhcnRpY3VsYXIKKyAqIGxvY2FsZSBs
aWtlIHRoZSBjdXJyZW5jeSBzeW1ib2wsIHRoZSBncm91cGluZyBzZXBlcmF0b3IgLCBtb25ldGFy
eSBzZXBlcmF0b3IKKyAqIGV0YyBieSBtYWtpbmcgdXNlIG9mIGZ1bmN0aW9ucyB1bnVtX3NldFN5
bWJvbHMoKSBhbmQgdW51bV9nZXRTeW1ib2xzKCkuCisgKi8KKworLyoqIEEgbnVtYmVyIGZvcm1h
dHRlci4KKyAqICBGb3IgdXNhZ2UgaW4gQyBwcm9ncmFtcy4KKyAqICBAc3RhYmxlIElDVSAyLjAK
KyAqLwordHlwZWRlZiB2b2lkKiBVTnVtYmVyRm9ybWF0OworCisvKiogVGhlIHBvc3NpYmxlIG51
bWJlciBmb3JtYXQgc3R5bGVzLiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBl
bnVtIFVOdW1iZXJGb3JtYXRTdHlsZSB7CisgICAgLyoqCisgICAgICogRGVjaW1hbCBmb3JtYXQg
ZGVmaW5lZCBieSBwYXR0ZXJuIAorICAgICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAqLworICAg
IFVOVU1fUEFUVEVSTl9ERUNJTUFMPTAsCisgICAgLyoqIERlY2ltYWwgZm9ybWF0ICovCisgICAg
VU5VTV9ERUNJTUFMPTEsCisgICAgLyoqIEN1cnJlbmN5IGZvcm1hdCAqLworICAgIFVOVU1fQ1VS
UkVOQ1ksCisgICAgLyoqIFBlcmNlbnQgZm9ybWF0ICovCisgICAgVU5VTV9QRVJDRU5ULAorICAg
IC8qKiBTY2llbnRpZmljIGZvcm1hdCAqLworICAgIFVOVU1fU0NJRU5USUZJQywKKyAgICAvKiog
U3BlbGxvdXQgcnVsZS1iYXNlZCBmb3JtYXQgKi8KKyAgICBVTlVNX1NQRUxMT1VULAorICAgIC8q
KiAKKyAgICAgKiBPcmRpbmFsIHJ1bGUtYmFzZWQgZm9ybWF0IAorICAgICAqIEBzdGFibGUgSUNV
IDMuMAorICAgICAqLworICAgIFVOVU1fT1JESU5BTCwKKyAgICAvKiogCisgICAgICogRHVyYXRp
b24gcnVsZS1iYXNlZCBmb3JtYXQgCisgICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAgICovCisg
ICAgVU5VTV9EVVJBVElPTiwKKyAgICAvKiogCisgICAgICogTnVtYmVyaW5nIHN5c3RlbSBydWxl
LWJhc2VkIGZvcm1hdCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICAgKi8KKyAgICBVTlVN
X05VTUJFUklOR19TWVNURU0sCisgICAgLyoqIAorICAgICAqIFJ1bGUtYmFzZWQgZm9ybWF0IGRl
ZmluZWQgYnkgcGF0dGVybiAKKyAgICAgKiBAc3RhYmxlIElDVSAzLjAKKyAgICAgKi8KKyAgICBV
TlVNX1BBVFRFUk5fUlVMRUJBU0VELAorICAgIC8qKiBEZWZhdWx0IGZvcm1hdCAqLworICAgIFVO
VU1fREVGQVVMVCA9IFVOVU1fREVDSU1BTCwKKyAgICAvKiogKEFsaWFzIGZvciBVTlVNX1BBVFRF
Uk5fREVDSU1BTCkgKi8KKyAgICBVTlVNX0lHTk9SRSA9IFVOVU1fUEFUVEVSTl9ERUNJTUFMCit9
IFVOdW1iZXJGb3JtYXRTdHlsZTsKKworLyoqIFRoZSBwb3NzaWJsZSBudW1iZXIgZm9ybWF0IHJv
dW5kaW5nIG1vZGVzLiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBlbnVtIFVO
dW1iZXJGb3JtYXRSb3VuZGluZ01vZGUgeworICAgIFVOVU1fUk9VTkRfQ0VJTElORywKKyAgICBV
TlVNX1JPVU5EX0ZMT09SLAorICAgIFVOVU1fUk9VTkRfRE9XTiwKKyAgICBVTlVNX1JPVU5EX1VQ
LAorICAgIC8qKgorICAgICAqIEhhbGYtZXZlbiByb3VuZGluZywgbWlzc3BlbGxlZCBuYW1lCisg
ICAgICogQGRlcHJlY2F0ZWQsIElDVSAzLjgKKyAgICAgKi8KKyAgICBVTlVNX0ZPVU5EX0hBTEZF
VkVOLAorICAgIFVOVU1fUk9VTkRfSEFMRkRPV04sCisgICAgVU5VTV9ST1VORF9IQUxGVVAsCisg
ICAgLyoqCisgICAgICogSGFsZi1ldmVuIHJvdW5kaW5nCisgICAgICogQHN0YWJsZSwgSUNVIDMu
OAorICAgICAqLworICAgIFVOVU1fUk9VTkRfSEFMRkVWRU4gPSBVTlVNX0ZPVU5EX0hBTEZFVkVO
Cit9IFVOdW1iZXJGb3JtYXRSb3VuZGluZ01vZGU7CisKKy8qKiBUaGUgcG9zc2libGUgbnVtYmVy
IGZvcm1hdCBwYWQgcG9zaXRpb25zLiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRl
ZiBlbnVtIFVOdW1iZXJGb3JtYXRQYWRQb3NpdGlvbiB7CisgICAgVU5VTV9QQURfQkVGT1JFX1BS
RUZJWCwKKyAgICBVTlVNX1BBRF9BRlRFUl9QUkVGSVgsCisgICAgVU5VTV9QQURfQkVGT1JFX1NV
RkZJWCwKKyAgICBVTlVNX1BBRF9BRlRFUl9TVUZGSVgKK30gVU51bWJlckZvcm1hdFBhZFBvc2l0
aW9uOworCisvKioKKyAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IFVOdW1iZXJGb3JtYXQgZm9y
IGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcKKyAqIG51bWJlcnMuICBBIFVOdW1iZXJGb3JtYXQgbWF5
IGJlIHVzZWQgdG8gZm9ybWF0IG51bWJlcnMgYnkgY2FsbGluZworICoge0BsaW5rICN1bnVtX2Zv
cm1hdCB9LCBhbmQgdG8gcGFyc2UgbnVtYmVycyBieSBjYWxsaW5nIHtAbGluayAjdW51bV9wYXJz
ZSB9LgorICogVGhlIGNhbGxlciBtdXN0IGNhbGwge0BsaW5rICN1bnVtX2Nsb3NlIH0gd2hlbiBk
b25lIHRvIHJlbGVhc2UgcmVzb3VyY2VzCisgKiB1c2VkIGJ5IHRoaXMgb2JqZWN0LgorICogQHBh
cmFtIHN0eWxlIFRoZSB0eXBlIG9mIG51bWJlciBmb3JtYXQgdG8gb3Blbjogb25lIG9mCisgKiBV
TlVNX0RFQ0lNQUwsIFVOVU1fQ1VSUkVOQ1ksIFVOVU1fUEVSQ0VOVCwgVU5VTV9TQ0lFTlRJRklD
LCBVTlVNX1NQRUxMT1VULAorICogVU5VTV9QQVRURVJOX0RFQ0lNQUwsIFVOVU1fUEFUVEVSTl9S
VUxFQkFTRUQsIG9yIFVOVU1fREVGQVVMVC4KKyAqIElmIFVOVU1fUEFUVEVSTl9ERUNJTUFMIG9y
IFVOVU1fUEFUVEVSTl9SVUxFQkFTRUQgaXMgcGFzc2VkIHRoZW4gdGhlCisgKiBudW1iZXIgZm9y
bWF0IGlzIG9wZW5lZCB1c2luZyB0aGUgZ2l2ZW4gcGF0dGVybiwgd2hpY2ggbXVzdCBjb25mb3Jt
CisgKiB0byB0aGUgc3ludGF4IGRlc2NyaWJlZCBpbiBEZWNpbWFsRm9ybWF0IG9yIFJ1bGVCYXNl
ZE51bWJlckZvcm1hdCwKKyAqIHJlc3BlY3RpdmVseS4KKyAqIEBwYXJhbSBwYXR0ZXJuIEEgcGF0
dGVybiBzcGVjaWZ5aW5nIHRoZSBmb3JtYXQgdG8gdXNlLiAKKyAqIFRoaXMgcGFyYW1ldGVyIGlz
IGlnbm9yZWQgdW5sZXNzIHRoZSBzdHlsZSBpcworICogVU5VTV9QQVRURVJOX0RFQ0lNQUwgb3Ig
VU5VTV9QQVRURVJOX1JVTEVCQVNFRC4KKyAqIEBwYXJhbSBwYXR0ZXJuTGVuZ3RoIFRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybiwgb3IgLTEKKyAqIGlmIG51bGwtdGVybWlu
YXRlZC4gVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCB1bmxlc3MgdGhlIHN0eWxlIGlzCisgKiBV
TlVNX1BBVFRFUk4uCisgKiBAcGFyYW0gbG9jYWxlIEEgbG9jYWxlIGlkZW50aWZpZXIgdG8gdXNl
IHRvIGRldGVybWluZSBmb3JtYXR0aW5nCisgKiBhbmQgcGFyc2luZyBjb252ZW50aW9ucywgb3Ig
TlVMTCB0byB1c2UgdGhlIGRlZmF1bHQgbG9jYWxlLgorICogQHBhcmFtIHBhcnNlRXJyIEEgcG9p
bnRlciB0byBhIFVQYXJzZUVycm9yIHN0cnVjdCB0byByZWNlaXZlIHRoZQorICogZGV0YWlscyBv
ZiBhbnkgcGFyc2luZyBlcnJvcnMsIG9yIE5VTEwgaWYgbm8gcGFyc2luZyBlcnJvciBkZXRhaWxz
CisgKiBhcmUgZGVzaXJlZC4KKyAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIGlucHV0
LW91dHB1dCBVRXJyb3JDb2RlLgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gYSBuZXdseSBjcmVh
dGVkIFVOdW1iZXJGb3JtYXQsIG9yIE5VTEwgaWYgYW4KKyAqIGVycm9yIG9jY3VycmVkLgorICog
QHNlZSB1bnVtX2Nsb3NlCisgKiBAc2VlIERlY2ltYWxGb3JtYXQKKyAqIEBzdGFibGUgSUNVIDIu
MAorICovCitVX1NUQUJMRSBVTnVtYmVyRm9ybWF0KiBVX0VYUE9SVDIgCit1bnVtX29wZW4oICBV
TnVtYmVyRm9ybWF0U3R5bGUgICAgc3R5bGUsCisgICAgICAgICAgICBjb25zdCAgICBVQ2hhciog
ICAgcGF0dGVybiwKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICAgICBwYXR0ZXJuTGVuZ3Ro
LAorICAgICAgICAgICAgY29uc3QgICAgY2hhciogICAgIGxvY2FsZSwKKyAgICAgICAgICAgIFVQ
YXJzZUVycm9yKiAgICAgICBwYXJzZUVyciwKKyAgICAgICAgICAgIFVFcnJvckNvZGUqICAgICAg
ICBzdGF0dXMpOworCisKKy8qKgorKiBDbG9zZSBhIFVOdW1iZXJGb3JtYXQuCisqIE9uY2UgY2xv
c2VkLCBhIFVOdW1iZXJGb3JtYXQgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFyYW0gZm10
IFRoZSBmb3JtYXR0ZXIgdG8gY2xvc2UuCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyIAordW51bV9jbG9zZShVTnVtYmVyRm9ybWF0KiBmbXQpOworCisjaWYg
VV9TSE9XX0NQTFVTUExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xh
c3MgTG9jYWxVTnVtYmVyRm9ybWF0UG9pbnRlcgorICogIlNtYXJ0IHBvaW50ZXIiIGNsYXNzLCBj
bG9zZXMgYSBVTnVtYmVyRm9ybWF0IHZpYSB1bnVtX2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRo
b2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9j
YWxQb2ludGVyQmFzZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAor
ICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVTnVtYmVyRm9ybWF0UG9pbnRl
ciwgVU51bWJlckZvcm1hdCwgdW51bV9jbG9zZSk7CisKK1VfTkFNRVNQQUNFX0VORAorCisjZW5k
aWYKKworLyoqCisgKiBPcGVuIGEgY29weSBvZiBhIFVOdW1iZXJGb3JtYXQuCisgKiBUaGlzIGZ1
bmN0aW9uIHBlcmZvcm1zIGEgZGVlcCBjb3B5LgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0IHRv
IGNvcHkKKyAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVj
ZWl2ZSBhbnkgZXJyb3JzLgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gYSBVTnVtYmVyRm9ybWF0
IGlkZW50aWNhbCB0byBmbXQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVU51
bWJlckZvcm1hdCogVV9FWFBPUlQyIAordW51bV9jbG9uZShjb25zdCBVTnVtYmVyRm9ybWF0ICpm
bXQsCisgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworLyoqCisqIEZvcm1hdCBhbiBpbnRl
Z2VyIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KKyogVGhlIGludGVnZXIgd2lsbCBiZSBmb3JtYXR0
ZWQgYWNjb3JkaW5nIHRvIHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBAcGFyYW0gZm10
IFRoZSBmb3JtYXR0ZXIgdG8gdXNlLgorKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9y
bWF0LgorKiBAcGFyYW0gcmVzdWx0IEEgcG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZlIHRo
ZSBmb3JtYXR0ZWQgbnVtYmVyLgorKiBAcGFyYW0gcmVzdWx0TGVuZ3RoIFRoZSBtYXhpbXVtIHNp
emUgb2YgcmVzdWx0LgorKiBAcGFyYW0gcG9zICAgIEEgcG9pbnRlciB0byBhIFVGaWVsZFBvc2l0
aW9uLiAgT24gaW5wdXQsIHBvc2l0aW9uLT5maWVsZAorKiBpcyByZWFkLiAgT24gb3V0cHV0LCBw
b3NpdGlvbi0+YmVnaW5JbmRleCBhbmQgcG9zaXRpb24tPmVuZEluZGV4IGluZGljYXRlCisqIHRo
ZSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpbmRpY2VzIG9mIGZpZWxkIG51bWJlciBwb3NpdGlvbi0+
ZmllbGQsIGlmIHN1Y2gKKyogYSBmaWVsZCBleGlzdHMuICBUaGlzIHBhcmFtZXRlciBtYXkgYmUg
TlVMTCwgaW4gd2hpY2ggY2FzZSBubyBmaWVsZAorKiBAcGFyYW0gc3RhdHVzIEEgcG9pbnRlciB0
byBhbiBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycworKiBAcmV0dXJuIFRoZSB0b3Rh
bCBidWZmZXIgc2l6ZSBuZWVkZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1bHRMZW5ndGgsIHRoZSBv
dXRwdXQgd2FzIHRydW5jYXRlZC4KKyogQHNlZSB1bnVtX2Zvcm1hdEludDY0CisqIEBzZWUgdW51
bV9mb3JtYXREb3VibGUKKyogQHNlZSB1bnVtX3BhcnNlCisqIEBzZWUgdW51bV9wYXJzZUludDY0
CisqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIFVGaWVsZFBvc2l0aW9uCisqIEBzdGFi
bGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9mb3JtYXQo
ICAgIGNvbnN0ICAgIFVOdW1iZXJGb3JtYXQqICAgIGZtdCwKKyAgICAgICAgaW50MzJfdCAgICAg
ICAgICAgIG51bWJlciwKKyAgICAgICAgVUNoYXIqICAgICAgICAgICAgcmVzdWx0LAorICAgICAg
ICBpbnQzMl90ICAgICAgICAgICAgcmVzdWx0TGVuZ3RoLAorICAgICAgICBVRmllbGRQb3NpdGlv
biAgICAqcG9zLAorICAgICAgICBVRXJyb3JDb2RlKiAgICAgICAgc3RhdHVzKTsKKworLyoqCisq
IEZvcm1hdCBhbiBpbnQ2NCB1c2luZyBhIFVOdW1iZXJGb3JtYXQuCisqIFRoZSBpbnQ2NCB3aWxs
IGJlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisq
IEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBwYXJhbSBudW1iZXIgVGhlIG51
bWJlciB0byBmb3JtYXQuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRv
IHJlY2VpdmUgdGhlIGZvcm1hdHRlZCBudW1iZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhl
IG1heGltdW0gc2l6ZSBvZiByZXN1bHQuCisqIEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEg
VUZpZWxkUG9zaXRpb24uICBPbiBpbnB1dCwgcG9zaXRpb24tPmZpZWxkCisqIGlzIHJlYWQuICBP
biBvdXRwdXQsIHBvc2l0aW9uLT5iZWdpbkluZGV4IGFuZCBwb3NpdGlvbi0+ZW5kSW5kZXggaW5k
aWNhdGUKKyogdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nIGluZGljZXMgb2YgZmllbGQgbnVtYmVy
IHBvc2l0aW9uLT5maWVsZCwgaWYgc3VjaAorKiBhIGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1l
dGVyIG1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIGZpZWxkCisqIEBwYXJhbSBzdGF0dXMg
QSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1
cm4gVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExl
bmd0aCwgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBz
ZWUgdW51bV9mb3JtYXREb3VibGUKKyogQHNlZSB1bnVtX3BhcnNlCisqIEBzZWUgdW51bV9wYXJz
ZUludDY0CisqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIFVGaWVsZFBvc2l0aW9uCisq
IEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9m
b3JtYXRJbnQ2NChjb25zdCBVTnVtYmVyRm9ybWF0ICpmbXQsCisgICAgICAgIGludDY0X3QgICAg
ICAgICBudW1iZXIsCisgICAgICAgIFVDaGFyKiAgICAgICAgICByZXN1bHQsCisgICAgICAgIGlu
dDMyX3QgICAgICAgICByZXN1bHRMZW5ndGgsCisgICAgICAgIFVGaWVsZFBvc2l0aW9uICpwb3Ms
CisgICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisvKioKKyogRm9ybWF0IGEgZG91
YmxlIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KKyogVGhlIGRvdWJsZSB3aWxsIGJlIGZvcm1hdHRl
ZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisqIEBwYXJhbSBmbXQg
VGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3Jt
YXQuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhl
IGZvcm1hdHRlZCBudW1iZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhlIG1heGltdW0gc2l6
ZSBvZiByZXN1bHQuCisqIEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEgVUZpZWxkUG9zaXRp
b24uICBPbiBpbnB1dCwgcG9zaXRpb24tPmZpZWxkCisqIGlzIHJlYWQuICBPbiBvdXRwdXQsIHBv
c2l0aW9uLT5iZWdpbkluZGV4IGFuZCBwb3NpdGlvbi0+ZW5kSW5kZXggaW5kaWNhdGUKKyogdGhl
IGJlZ2lubmluZyBhbmQgZW5kaW5nIGluZGljZXMgb2YgZmllbGQgbnVtYmVyIHBvc2l0aW9uLT5m
aWVsZCwgaWYgc3VjaAorKiBhIGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBO
VUxMLCBpbiB3aGljaCBjYXNlIG5vIGZpZWxkCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRv
IGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHRvdGFs
IGJ1ZmZlciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlIG91
dHB1dCB3YXMgdHJ1bmNhdGVkLgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3Jt
YXRJbnQ2NAorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlSW50NjQKKyogQHNl
ZSB1bnVtX3BhcnNlRG91YmxlCisqIEBzZWUgVUZpZWxkUG9zaXRpb24KKyogQHN0YWJsZSBJQ1Ug
Mi4wCisqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCit1bnVtX2Zvcm1hdERvdWJsZSgg
ICAgY29uc3QgICAgVU51bWJlckZvcm1hdCogIGZtdCwKKyAgICAgICAgICAgIGRvdWJsZSAgICAg
ICAgICBudW1iZXIsCisgICAgICAgICAgICBVQ2hhciogICAgICAgICAgcmVzdWx0LAorICAgICAg
ICAgICAgaW50MzJfdCAgICAgICAgIHJlc3VsdExlbmd0aCwKKyAgICAgICAgICAgIFVGaWVsZFBv
c2l0aW9uICAqcG9zLCAvKiAwIGlmIGlnbm9yZSAqLworICAgICAgICAgICAgVUVycm9yQ29kZSog
ICAgIHN0YXR1cyk7CisKKy8qKgorKiBGb3JtYXQgYSBkZWNpbWFsIG51bWJlciB1c2luZyBhIFVO
dW1iZXJGb3JtYXQuCisqIFRoZSBudW1iZXIgd2lsbCBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRv
IHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBUaGUgc3ludGF4IG9mIHRoZSBpbnB1dCBu
dW1iZXIgaXMgYSAibnVtZXJpYyBzdHJpbmciCisqIGFzIGRlZmluZWQgaW4gdGhlIERlY2ltYWwg
QXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uLCBhdmFpbGFibGUgYXQKKyogaHR0cDovL3NwZWxlb3Ry
b3ZlLmNvbS9kZWNpbWFsCisqIEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBw
YXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQuCisqIEBwYXJhbSBsZW5ndGggVGhlIGxl
bmd0aCBvZiB0aGUgaW5wdXQgbnVtYmVyLCBvciAtMSBpZiB0aGUgaW5wdXQgaXMgbnVsLXRlcm1p
bmF0ZWQuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUg
dGhlIGZvcm1hdHRlZCBudW1iZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhlIG1heGltdW0g
c2l6ZSBvZiByZXN1bHQuCisqIEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEgVUZpZWxkUG9z
aXRpb24uICBPbiBpbnB1dCwgcG9zaXRpb24tPmZpZWxkCisqICAgICAgICAgICAgICAgaXMgcmVh
ZC4gIE9uIG91dHB1dCwgcG9zaXRpb24tPmJlZ2luSW5kZXggYW5kIHBvc2l0aW9uLT5lbmRJbmRl
eCBpbmRpY2F0ZQorKiAgICAgICAgICAgICAgIHRoZSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpbmRp
Y2VzIG9mIGZpZWxkIG51bWJlciBwb3NpdGlvbi0+ZmllbGQsIGlmIHN1Y2gKKyogICAgICAgICAg
ICAgICBhIGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBOVUxMLCBpbiB3aGlj
aCBjYXNlIGl0IGlzIGlnbm9yZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVF
cnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHRvdGFsIGJ1ZmZl
ciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlIG91dHB1dCB3
YXMgdHJ1bmNhdGVkLgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2
NAorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlSW50NjQKKyogQHNlZSB1bnVt
X3BhcnNlRG91YmxlCisqIEBzZWUgVUZpZWxkUG9zaXRpb24KKyogQHN0YWJsZSBJQ1UgNC40IAor
Ki8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9mb3JtYXREZWNpbWFsKCAgICBj
b25zdCAgICBVTnVtYmVyRm9ybWF0KiAgZm10LAorICAgICAgICAgICAgY29uc3QgY2hhciAqICAg
IG51bWJlciwKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICBsZW5ndGgsCisgICAgICAgICAg
ICBVQ2hhciogICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIHJl
c3VsdExlbmd0aCwKKyAgICAgICAgICAgIFVGaWVsZFBvc2l0aW9uICAqcG9zLCAvKiAwIGlmIGln
bm9yZSAqLworICAgICAgICAgICAgVUVycm9yQ29kZSogICAgIHN0YXR1cyk7CisKKy8qKgorICog
Rm9ybWF0IGEgZG91YmxlIGN1cnJlbmN5IGFtb3VudCB1c2luZyBhIFVOdW1iZXJGb3JtYXQuCisg
KiBUaGUgZG91YmxlIHdpbGwgYmUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgVU51bWJlckZv
cm1hdCdzIGxvY2FsZS4KKyAqIEBwYXJhbSBmbXQgdGhlIGZvcm1hdHRlciB0byB1c2UKKyAqIEBw
YXJhbSBudW1iZXIgdGhlIG51bWJlciB0byBmb3JtYXQKKyAqIEBwYXJhbSBjdXJyZW5jeSB0aGUg
My1sZXR0ZXIgbnVsbC10ZXJtaW5hdGVkIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUKKyAqIEBwYXJh
bSByZXN1bHQgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgZm9ybWF0dGVk
IG51bWJlcgorICogQHBhcmFtIHJlc3VsdExlbmd0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgVUNo
YXJzIHRvIHdyaXRlIHRvIHJlc3VsdAorICogQHBhcmFtIHBvcyBhIHBvaW50ZXIgdG8gYSBVRmll
bGRQb3NpdGlvbi4gIE9uIGlucHV0LAorICogcG9zaXRpb24tPmZpZWxkIGlzIHJlYWQuICBPbiBv
dXRwdXQsIHBvc2l0aW9uLT5iZWdpbkluZGV4IGFuZAorICogcG9zaXRpb24tPmVuZEluZGV4IGlu
ZGljYXRlIHRoZSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpbmRpY2VzIG9mCisgKiBmaWVsZCBudW1i
ZXIgcG9zaXRpb24tPmZpZWxkLCBpZiBzdWNoIGEgZmllbGQgZXhpc3RzLiAgVGhpcworICogcGFy
YW1ldGVyIG1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIGl0IGlzIGlnbm9yZWQuCisgKiBAcGFy
YW0gc3RhdHVzIGEgcG9pbnRlciB0byBhbiBpbnB1dC1vdXRwdXQgVUVycm9yQ29kZQorICogQHJl
dHVybiB0aGUgdG90YWwgYnVmZmVyIHNpemUgbmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0
TGVuZ3RoLAorICogdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorICogQHNlZSB1bnVtX2Zvcm1h
dERvdWJsZQorICogQHNlZSB1bnVtX3BhcnNlRG91YmxlQ3VycmVuY3kKKyAqIEBzZWUgVUZpZWxk
UG9zaXRpb24KKyAqIEBzdGFibGUgSUNVIDMuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQ
T1JUMiAKK3VudW1fZm9ybWF0RG91YmxlQ3VycmVuY3koY29uc3QgVU51bWJlckZvcm1hdCogZm10
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBVQ2hhciogY3VycmVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IFVDaGFyKiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0
TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBVRmllbGRQb3NpdGlvbiogcG9zLCAv
KiBpZ25vcmVkIGlmIDAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSog
c3RhdHVzKTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8gYW4gaW50ZWdlciB1c2luZyBh
IFVOdW1iZXJGb3JtYXQuCisqIFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5nIHRv
IHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIg
dG8gdXNlLgorKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBwYXJzZS4KKyogQHBhcmFtIHRleHRM
ZW5ndGggVGhlIGxlbmd0aCBvZiB0ZXh0LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCisqIEBw
YXJhbSBwYXJzZVBvcyBJZiBub3QgMCwgb24gaW5wdXQgYSBwb2ludGVyIHRvIGFuIGludGVnZXIg
c3BlY2lmeWluZyB0aGUgb2Zmc2V0IGF0IHdoaWNoCisqIHRvIGJlZ2luIHBhcnNpbmcuICBJZiBu
b3QgMCwgb24gb3V0cHV0IHRoZSBvZmZzZXQgYXQgd2hpY2ggcGFyc2luZyBlbmRlZC4KKyogQHBh
cmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJv
cnMKKyogQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIHBhcnNlZCBpbnRlZ2VyCisqIEBzZWUgdW51
bV9wYXJzZUludDY0CisqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIHVudW1fZm9ybWF0
CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2NAorKiBAc2VlIHVudW1fZm9ybWF0RG91YmxlCisqIEBz
dGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9wYXJz
ZSggICAgY29uc3QgICBVTnVtYmVyRm9ybWF0KiAgZm10LAorICAgICAgICBjb25zdCAgIFVDaGFy
KiAgICAgICAgICB0ZXh0LAorICAgICAgICBpbnQzMl90ICAgICAgICAgdGV4dExlbmd0aCwKKyAg
ICAgICAgaW50MzJfdCAgICAgICAgICpwYXJzZVBvcyAvKiAwID0gc3RhcnQgKi8sCisgICAgICAg
IFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8g
YW4gaW50NjQgdXNpbmcgYSBVTnVtYmVyRm9ybWF0LgorKiBUaGUgc3RyaW5nIHdpbGwgYmUgcGFy
c2VkIGFjY29yZGluZyB0byB0aGUgVU51bWJlckZvcm1hdCdzIGxvY2FsZS4KKyogQHBhcmFtIGZt
dCBUaGUgZm9ybWF0dGVyIHRvIHVzZS4KKyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2Uu
CisqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10
ZXJtaW5hdGVkLgorKiBAcGFyYW0gcGFyc2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRl
ciB0byBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiB0byBiZWdp
biBwYXJzaW5nLiAgSWYgbm90IDAsIG9uIG91dHB1dCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHBhcnNp
bmcgZW5kZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8g
cmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgaW50
ZWdlcgorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlRG91YmxlCisqIEBzZWUg
dW51bV9mb3JtYXQKKyogQHNlZSB1bnVtX2Zvcm1hdEludDY0CisqIEBzZWUgdW51bV9mb3JtYXRE
b3VibGUKKyogQHN0YWJsZSBJQ1UgMi44CisqLworVV9TVEFCTEUgaW50NjRfdCBVX0VYUE9SVDIg
Cit1bnVtX3BhcnNlSW50NjQoY29uc3QgVU51bWJlckZvcm1hdCogIGZtdCwKKyAgICAgICAgY29u
c3QgVUNoYXIqICB0ZXh0LAorICAgICAgICBpbnQzMl90ICAgICAgIHRleHRMZW5ndGgsCisgICAg
ICAgIGludDMyX3QgICAgICAgKnBhcnNlUG9zIC8qIDAgPSBzdGFydCAqLywKKyAgICAgICAgVUVy
cm9yQ29kZSAgICAqc3RhdHVzKTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8gYSBkb3Vi
bGUgdXNpbmcgYSBVTnVtYmVyRm9ybWF0LgorKiBUaGUgc3RyaW5nIHdpbGwgYmUgcGFyc2VkIGFj
Y29yZGluZyB0byB0aGUgVU51bWJlckZvcm1hdCdzIGxvY2FsZS4KKyogQHBhcmFtIGZtdCBUaGUg
Zm9ybWF0dGVyIHRvIHVzZS4KKyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCisqIEBw
YXJhbSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5h
dGVkLgorKiBAcGFyYW0gcGFyc2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRlciB0byBh
biBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiB0byBiZWdpbiBwYXJz
aW5nLiAgSWYgbm90IDAsIG9uIG91dHB1dCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHBhcnNpbmcgZW5k
ZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2
ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgZG91YmxlCisq
IEBzZWUgdW51bV9wYXJzZQorKiBAc2VlIHVudW1fcGFyc2VJbnQ2NAorKiBAc2VlIHVudW1fZm9y
bWF0CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2NAorKiBAc2VlIHVudW1fZm9ybWF0RG91YmxlCisq
IEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGRvdWJsZSBVX0VYUE9SVDIgCit1bnVtX3Bh
cnNlRG91YmxlKCAgICBjb25zdCAgIFVOdW1iZXJGb3JtYXQqICBmbXQsCisgICAgICAgICAgICBj
b25zdCAgIFVDaGFyKiAgICAgICAgICB0ZXh0LAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAg
IHRleHRMZW5ndGgsCisgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgKnBhcnNlUG9zIC8qIDAg
PSBzdGFydCAqLywKKyAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKworCisv
KioKKyogUGFyc2UgYSBudW1iZXIgZnJvbSBhIHN0cmluZyBpbnRvIGFuIHVuZm9ybWF0dGVkIG51
bWVyaWMgc3RyaW5nIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KKyogVGhlIGlucHV0IHN0cmluZyB3
aWxsIGJlIHBhcnNlZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisq
IFRoZSBzeW50YXggb2YgdGhlIG91dHB1dCBpcyBhICJudW1lcmljIHN0cmluZyIKKyogYXMgZGVm
aW5lZCBpbiB0aGUgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24sIGF2YWlsYWJsZSBh
dAorKiBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwKKyogQHBhcmFtIGZtdCBUaGUgZm9y
bWF0dGVyIHRvIHVzZS4KKyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCisqIEBwYXJh
bSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVk
LgorKiBAcGFyYW0gcGFyc2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRlciB0byBhbiBp
bnRlZ2VyIHNwZWNpZnlpbmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiAgICAgICAgICAgICAgICAg
dG8gYmVnaW4gcGFyc2luZy4gIElmIG5vdCAwLCBvbiBvdXRwdXQgdGhlIG9mZnNldCBhdCB3aGlj
aCBwYXJzaW5nIGVuZGVkLgorKiBAcGFyYW0gb3V0QnVmIEEgKGNoYXIgKikgYnVmZmVyIHRvIHJl
Y2VpdmUgdGhlIHBhcnNlZCBudW1iZXIgYXMgYSBzdHJpbmcuICBUaGUgb3V0cHV0IHN0cmluZwor
KiAgICAgICAgICAgICAgIHdpbGwgYmUgbnVsLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmlj
aWVudCBzcGFjZS4KKyogQHBhcmFtIG91dEJ1Zkxlbmd0aCBUaGUgc2l6ZSBvZiB0aGUgb3V0cHV0
IGJ1ZmZlci4gIE1heSBiZSB6ZXJvLCBpbiB3aGljaCBjYXNlCisqICAgICAgICAgICAgICAgdGhl
IG91dEJ1ZiBwb2ludGVyIG1heSBiZSBOVUxMLCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJu
IHRoZQorKiAgICAgICAgICAgICAgIHNpemUgb2YgdGhlIG91dHB1dCBzdHJpbmcuCisqIEBwYXJh
bSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3Jz
CisqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IHN0cmluZywgbm90IGluY2x1ZGlu
ZyBhbnkgdGVybWluYXRpbmcgbnVsLgorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3Bh
cnNlSW50NjQKKyogQHNlZSB1bnVtX2Zvcm1hdAorKiBAc2VlIHVudW1fZm9ybWF0SW50NjQKKyog
QHNlZSB1bnVtX2Zvcm1hdERvdWJsZQorKiBAc3RhYmxlIElDVSA0LjQKKyovCitVX1NUQUJMRSBp
bnQzMl90IFVfRVhQT1JUMiAKK3VudW1fcGFyc2VEZWNpbWFsKGNvbnN0ICAgVU51bWJlckZvcm1h
dCogIGZtdCwKKyAgICAgICAgICAgICAgICAgY29uc3QgICBVQ2hhciogICAgICAgICAgdGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgdGV4dExlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgKnBhcnNlUG9zIC8qIDAgPSBz
dGFydCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgKm91dEJ1
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgb3V0QnVmTGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKwor
LyoqCisgKiBQYXJzZSBhIHN0cmluZyBpbnRvIGEgZG91YmxlIGFuZCBhIGN1cnJlbmN5IHVzaW5n
IGEgVU51bWJlckZvcm1hdC4KKyAqIFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5n
IHRvIHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorICogQHBhcmFtIGZtdCB0aGUgZm9ybWF0
dGVyIHRvIHVzZQorICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gcGFyc2UKKyAqIEBwYXJhbSB0
ZXh0TGVuZ3RoIHRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkCisg
KiBAcGFyYW0gcGFyc2VQb3MgYSBwb2ludGVyIHRvIGFuIG9mZnNldCBpbmRleCBpbnRvIHRleHQg
YXQgd2hpY2ggdG8KKyAqIGJlZ2luIHBhcnNpbmcuIE9uIG91dHB1dCwgKnBhcnNlUG9zIHdpbGwg
cG9pbnQgYWZ0ZXIgdGhlIGxhc3QKKyAqIHBhcnNlZCBjaGFyYWN0ZXIuICBUaGlzIHBhcmFtZXRl
ciBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBwYXJzaW5nCisgKiBiZWdpbnMgYXQgb2Zmc2V0IDAu
CisgKiBAcGFyYW0gY3VycmVuY3kgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0
aGUgcGFyc2VkIG51bGwtCisgKiB0ZXJtaW5hdGVkIGN1cnJlbmN5LiAgVGhpcyBidWZmZXIgbXVz
dCBoYXZlIGEgY2FwYWNpdHkgb2YgYXQgbGVhc3QKKyAqIDQgVUNoYXJzLgorICogQHBhcmFtIHN0
YXR1cyBhIHBvaW50ZXIgdG8gYW4gaW5wdXQtb3V0cHV0IFVFcnJvckNvZGUKKyAqIEByZXR1cm4g
dGhlIHBhcnNlZCBkb3VibGUKKyAqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorICogQHNlZSB1bnVt
X2Zvcm1hdERvdWJsZUN1cnJlbmN5CisgKiBAc3RhYmxlIElDVSAzLjAKKyAqLworVV9TVEFCTEUg
ZG91YmxlIFVfRVhQT1JUMgordW51bV9wYXJzZURvdWJsZUN1cnJlbmN5KGNvbnN0IFVOdW1iZXJG
b3JtYXQqIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogdGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCogcGFyc2VQb3MsIC8qIDAgPSBzdGFydCAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgIFVDaGFyKiBjdXJyZW5jeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisvKioKKyAqIFNldCB0aGUgcGF0dGVybiB1c2Vk
IGJ5IGEgVU51bWJlckZvcm1hdC4gIFRoaXMgY2FuIG9ubHkgYmUgdXNlZAorICogb24gYSBEZWNp
bWFsRm9ybWF0LCBvdGhlciBmb3JtYXRzIHJldHVybiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IK
KyAqIGluIHRoZSBzdGF0dXMuCisgKiBAcGFyYW0gZm9ybWF0IFRoZSBmb3JtYXR0ZXIgdG8gc2V0
LgorICogQHBhcmFtIGxvY2FsaXplZCBUUlVFIGlmIHRoZSBwYXR0ZXJuIGlzIGxvY2FsaXplZCwg
RkFMU0Ugb3RoZXJ3aXNlLgorICogQHBhcmFtIHBhdHRlcm4gVGhlIG5ldyBwYXR0ZXJuCisgKiBA
cGFyYW0gcGF0dGVybkxlbmd0aCBUaGUgbGVuZ3RoIG9mIHBhdHRlcm4sIG9yIC0xIGlmIG51bGwt
dGVybWluYXRlZC4KKyAqIEBwYXJhbSBwYXJzZUVycm9yIEEgcG9pbnRlciB0byBVUGFyc2VFcnJv
ciB0byByZWNpZXZlIGluZm9ybWF0aW9uCisgKiBhYm91dCBlcnJvcnMgb2NjdXJyZWQgZHVyaW5n
IHBhcnNpbmcsIG9yIE5VTEwgaWYgbm8gcGFyc2UgZXJyb3IKKyAqIGluZm9ybWF0aW9uIGlzIGRl
c2lyZWQuCisgKiBAcGFyYW0gc3RhdHVzIEEgcG9pbnRlciB0byBhbiBpbnB1dC1vdXRwdXQgVUVy
cm9yQ29kZS4KKyAqIEBzZWUgdW51bV90b1BhdHRlcm4KKyAqIEBzZWUgRGVjaW1hbEZvcm1hdAor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAordW51bV9h
cHBseVBhdHRlcm4oICAgICAgICAgIFVOdW1iZXJGb3JtYXQgICpmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUJvb2wgICAgICAgICAgbG9jYWxpemVkLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCAgIFVDaGFyICAgICAgICAgICpwYXR0ZXJuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgICAgICAgICBwYXR0ZXJuTGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVQYXJzZUVycm9yICAgICpwYXJzZUVycm9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICpzdGF0dXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CisKKy8qKgorKiBHZXQgYSBsb2NhbGUgZm9yIHdoaWNoIGRl
Y2ltYWwgZm9ybWF0dGluZyBwYXR0ZXJucyBhcmUgYXZhaWxhYmxlLgorKiBBIFVOdW1iZXJGb3Jt
YXQgaW4gYSBsb2NhbGUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhl
IGNvcnJlY3QKKyogZm9ybWF0dGluZyBhbmQgcGFyc2luZyBmb3IgdGhlIGxvY2FsZS4gIFRoZSBy
ZXN1bHRzIG9mIHRoaXMgY2FsbCBhcmUgbm90CisqIHZhbGlkIGZvciBydWxlLWJhc2VkIG51bWJl
ciBmb3JtYXRzLgorKiBAcGFyYW0gbG9jYWxlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBkZXNpcmVk
IGxvY2FsZS4KKyogQHJldHVybiBBIGxvY2FsZSBmb3Igd2hpY2ggbnVtYmVyIGZvcm1hdHRpbmcg
cGF0dGVybnMgYXJlIGF2YWlsYWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVudW1fY291bnRB
dmFpbGFibGUKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9F
WFBPUlQyIAordW51bV9nZXRBdmFpbGFibGUoaW50MzJfdCBsb2NhbGVJbmRleCk7CisKKy8qKgor
KiBEZXRlcm1pbmUgaG93IG1hbnkgbG9jYWxlcyBoYXZlIGRlY2ltYWwgZm9ybWF0dGluZyBwYXR0
ZXJucyBhdmFpbGFibGUuICBUaGUKKyogcmVzdWx0cyBvZiB0aGlzIGNhbGwgYXJlIG5vdCB2YWxp
ZCBmb3IgcnVsZS1iYXNlZCBudW1iZXIgZm9ybWF0cy4KKyogVGhpcyBmdW5jdGlvbiBpcyB1c2Vm
dWwgZm9yIGRldGVybWluaW5nIHRoZSBsb29wIGVuZGluZyBjb25kaXRpb24gZm9yCisqIGNhbGxz
IHRvIHtAbGluayAjdW51bV9nZXRBdmFpbGFibGUgfS4KKyogQHJldHVybiBUaGUgbnVtYmVyIG9m
IGxvY2FsZXMgZm9yIHdoaWNoIGRlY2ltYWwgZm9ybWF0dGluZyBwYXR0ZXJucyBhcmUgYXZhaWxh
YmxlLgorKiBAc2VlIHVudW1fZ2V0QXZhaWxhYmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1Vf
U1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9jb3VudEF2YWlsYWJsZSh2b2lkKTsKKwor
LyoqIFRoZSBwb3NzaWJsZSBVTnVtYmVyRm9ybWF0IG51bWVyaWMgYXR0cmlidXRlcyBAc3RhYmxl
IElDVSAyLjAgKi8KK3R5cGVkZWYgZW51bSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlIHsKKyAgLyoq
IFBhcnNlIGludGVnZXJzIG9ubHkgKi8KKyAgVU5VTV9QQVJTRV9JTlRfT05MWSwKKyAgLyoqIFVz
ZSBncm91cGluZyBzZXBhcmF0b3IgKi8KKyAgVU5VTV9HUk9VUElOR19VU0VELAorICAvKiogQWx3
YXlzIHNob3cgZGVjaW1hbCBwb2ludCAqLworICBVTlVNX0RFQ0lNQUxfQUxXQVlTX1NIT1dOLAor
ICAvKiogTWF4aW11bSBpbnRlZ2VyIGRpZ2l0cyAqLworICBVTlVNX01BWF9JTlRFR0VSX0RJR0lU
UywKKyAgLyoqIE1pbmltdW0gaW50ZWdlciBkaWdpdHMgKi8KKyAgVU5VTV9NSU5fSU5URUdFUl9E
SUdJVFMsCisgIC8qKiBJbnRlZ2VyIGRpZ2l0cyAqLworICBVTlVNX0lOVEVHRVJfRElHSVRTLAor
ICAvKiogTWF4aW11bSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgVU5VTV9NQVhfRlJBQ1RJT05fRElH
SVRTLAorICAvKiogTWluaW11bSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgVU5VTV9NSU5fRlJBQ1RJ
T05fRElHSVRTLAorICAvKiogRnJhY3Rpb24gZGlnaXRzICovCisgIFVOVU1fRlJBQ1RJT05fRElH
SVRTLAorICAvKiogTXVsdGlwbGllciAqLworICBVTlVNX01VTFRJUExJRVIsCisgIC8qKiBHcm91
cGluZyBzaXplICovCisgIFVOVU1fR1JPVVBJTkdfU0laRSwKKyAgLyoqIFJvdW5kaW5nIE1vZGUg
Ki8KKyAgVU5VTV9ST1VORElOR19NT0RFLAorICAvKiogUm91bmRpbmcgaW5jcmVtZW50ICovCisg
IFVOVU1fUk9VTkRJTkdfSU5DUkVNRU5ULAorICAvKiogVGhlIHdpZHRoIHRvIHdoaWNoIHRoZSBv
dXRwdXQgb2YgPGNvZGU+Zm9ybWF0KCk8L2NvZGU+IGlzIHBhZGRlZC4gKi8KKyAgVU5VTV9GT1JN
QVRfV0lEVEgsCisgIC8qKiBUaGUgcG9zaXRpb24gYXQgd2hpY2ggcGFkZGluZyB3aWxsIHRha2Ug
cGxhY2UuICovCisgIFVOVU1fUEFERElOR19QT1NJVElPTiwKKyAgLyoqIFNlY29uZGFyeSBncm91
cGluZyBzaXplICovCisgIFVOVU1fU0VDT05EQVJZX0dST1VQSU5HX1NJWkUsCisgIC8qKiBVc2Ug
c2lnbmlmaWNhbnQgZGlnaXRzCisgICAqIEBzdGFibGUgSUNVIDMuMCAqLworICBVTlVNX1NJR05J
RklDQU5UX0RJR0lUU19VU0VELAorICAvKiogTWluaW11bSBzaWduaWZpY2FudCBkaWdpdHMKKyAg
ICogQHN0YWJsZSBJQ1UgMy4wICovCisgIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywKKyAg
LyoqIE1heGltdW0gc2lnbmlmaWNhbnQgZGlnaXRzCisgICAqIEBzdGFibGUgSUNVIDMuMCAqLwor
ICBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsCisgIC8qKiBMZW5pZW50IHBhcnNlIG1vZGUg
dXNlZCBieSBydWxlLWJhc2VkIGZvcm1hdHMuCisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8K
KyAgVU5VTV9MRU5JRU5UX1BBUlNFCit9IFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGU7CisKKy8qKgor
KiBHZXQgYSBudW1lcmljIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0
LgorKiBBbiBleGFtcGxlIG9mIGEgbnVtZXJpYyBhdHRyaWJ1dGUgaXMgdGhlIG51bWJlciBvZiBp
bnRlZ2VyIGRpZ2l0cyBhIGZvcm1hdHRlciB3aWxsIHByb2R1Y2UuCisqIEBwYXJhbSBmbXQgVGhl
IGZvcm1hdHRlciB0byBxdWVyeS4KKyogQHBhcmFtIGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBxdWVy
eTsgb25lIG9mIFVOVU1fUEFSU0VfSU5UX09OTFksIFVOVU1fR1JPVVBJTkdfVVNFRCwKKyogVU5V
TV9ERUNJTUFMX0FMV0FZU19TSE9XTiwgVU5VTV9NQVhfSU5URUdFUl9ESUdJVFMsIFVOVU1fTUlO
X0lOVEVHRVJfRElHSVRTLCBVTlVNX0lOVEVHRVJfRElHSVRTLAorKiBVTlVNX01BWF9GUkFDVElP
Tl9ESUdJVFMsIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgVU5VTV9GUkFDVElPTl9ESUdJVFMs
IFVOVU1fTVVMVElQTElFUiwKKyogVU5VTV9HUk9VUElOR19TSVpFLCBVTlVNX1JPVU5ESU5HX01P
REUsIFVOVU1fRk9STUFUX1dJRFRILCBVTlVNX1BBRERJTkdfUE9TSVRJT04sIFVOVU1fU0VDT05E
QVJZX0dST1VQSU5HX1NJWkUuCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIGF0dHIuCisqIEBzZWUg
dW51bV9zZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX2dldERvdWJsZUF0dHJpYnV0ZQorKiBAc2Vl
IHVudW1fc2V0RG91YmxlQXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisq
IEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RB
QkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9nZXRBdHRyaWJ1dGUoY29uc3QgVU51bWJlckZv
cm1hdCogICAgICAgICAgZm10LAorICAgICAgICAgIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgIGF0
dHIpOworCisvKioKKyogU2V0IGEgbnVtZXJpYyBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIGEg
VU51bWJlckZvcm1hdC4KKyogQW4gZXhhbXBsZSBvZiBhIG51bWVyaWMgYXR0cmlidXRlIGlzIHRo
ZSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYSBmb3JtYXR0ZXIgd2lsbCBwcm9kdWNlLiAgSWYg
dGhlCisqIGZvcm1hdHRlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBhdHRyaWJ1dGUsIHRoZSBj
YWxsIGlzIGlnbm9yZWQuICBSdWxlLWJhc2VkIGZvcm1hdHRlcnMgb25seSB1bmRlcnN0YW5kCisq
IHRoZSBsZW5pZW50LXBhcnNlIGF0dHJpYnV0ZS4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVy
IHRvIHNldC4KKyogQHBhcmFtIGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBzZXQ7IG9uZSBvZiBVTlVN
X1BBUlNFX0lOVF9PTkxZLCBVTlVNX0dST1VQSU5HX1VTRUQsCisqIFVOVU1fREVDSU1BTF9BTFdB
WVNfU0hPV04sIFVOVU1fTUFYX0lOVEVHRVJfRElHSVRTLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lU
UywgVU5VTV9JTlRFR0VSX0RJR0lUUywKKyogVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBVTlVN
X01JTl9GUkFDVElPTl9ESUdJVFMsIFVOVU1fRlJBQ1RJT05fRElHSVRTLCBVTlVNX01VTFRJUExJ
RVIsCisqIFVOVU1fR1JPVVBJTkdfU0laRSwgVU5VTV9ST1VORElOR19NT0RFLCBVTlVNX0ZPUk1B
VF9XSURUSCwgVU5VTV9QQURESU5HX1BPU0lUSU9OLCBVTlVNX1NFQ09OREFSWV9HUk9VUElOR19T
SVpFLAorKiBvciBVTlVNX0xFTklFTlRfUEFSU0UuCisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3
IHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX2dl
dERvdWJsZUF0dHJpYnV0ZQorKiBAc2VlIHVudW1fc2V0RG91YmxlQXR0cmlidXRlCisqIEBzZWUg
dW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisqIEBz
dGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAordW51bV9zZXRBdHRy
aWJ1dGUoICAgIFVOdW1iZXJGb3JtYXQqICAgICAgICAgIGZtdCwKKyAgICAgICAgICAgIFVOdW1i
ZXJGb3JtYXRBdHRyaWJ1dGUgIGF0dHIsCisgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAg
ICAgICBuZXdWYWx1ZSk7CisKKworLyoqCisqIEdldCBhIG51bWVyaWMgYXR0cmlidXRlIGFzc29j
aWF0ZWQgd2l0aCBhIFVOdW1iZXJGb3JtYXQuCisqIEFuIGV4YW1wbGUgb2YgYSBudW1lcmljIGF0
dHJpYnV0ZSBpcyB0aGUgbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIGEgZm9ybWF0dGVyIHdpbGwg
cHJvZHVjZS4KKyogSWYgdGhlIGZvcm1hdHRlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBhdHRy
aWJ1dGUsIC0xIGlzIHJldHVybmVkLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gcXVl
cnkuCisqIEBwYXJhbSBhdHRyIFRoZSBhdHRyaWJ1dGUgdG8gcXVlcnk7IGUuZy4gVU5VTV9ST1VO
RElOR19JTkNSRU1FTlQuCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51
bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc2VlIHVudW1fc2V0
RG91YmxlQXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51
bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGRvdWJs
ZSBVX0VYUE9SVDIgCit1bnVtX2dldERvdWJsZUF0dHJpYnV0ZShjb25zdCBVTnVtYmVyRm9ybWF0
KiAgICAgICAgICBmbXQsCisgICAgICAgICAgVU51bWJlckZvcm1hdEF0dHJpYnV0ZSAgYXR0cik7
CisKKy8qKgorKiBTZXQgYSBudW1lcmljIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVt
YmVyRm9ybWF0LgorKiBBbiBleGFtcGxlIG9mIGEgbnVtZXJpYyBhdHRyaWJ1dGUgaXMgdGhlIG51
bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBhIGZvcm1hdHRlciB3aWxsIHByb2R1Y2UuCisqIElmIHRo
ZSBmb3JtYXR0ZXIgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgYXR0cmlidXRlLCB0aGlzIGNhbGwg
aXMgaWdub3JlZC4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHNldC4KKyogQHBhcmFt
IGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBzZXQ7IGUuZy4gVU5VTV9ST1VORElOR19JTkNSRU1FTlQu
CisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51bV9n
ZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc2VlIHVudW1fZ2V0RG91
YmxlQXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9z
ZXRUZXh0QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyIAordW51bV9zZXREb3VibGVBdHRyaWJ1dGUoICAgIFVOdW1iZXJGb3JtYXQqICAgICAg
ICAgIGZtdCwKKyAgICAgICAgICAgIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgIGF0dHIsCisgICAg
ICAgICAgICBkb3VibGUgICAgICAgICAgICAgICAgIG5ld1ZhbHVlKTsKKworLyoqIFRoZSBwb3Nz
aWJsZSBVTnVtYmVyRm9ybWF0IHRleHQgYXR0cmlidXRlcyBAc3RhYmxlIElDVSAyLjAqLwordHlw
ZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlIHsKKyAgLyoqIFBvc2l0aXZlIHBy
ZWZpeCAqLworICBVTlVNX1BPU0lUSVZFX1BSRUZJWCwKKyAgLyoqIFBvc2l0aXZlIHN1ZmZpeCAq
LworICBVTlVNX1BPU0lUSVZFX1NVRkZJWCwKKyAgLyoqIE5lZ2F0aXZlIHByZWZpeCAqLworICBV
TlVNX05FR0FUSVZFX1BSRUZJWCwKKyAgLyoqIE5lZ2F0aXZlIHN1ZmZpeCAqLworICBVTlVNX05F
R0FUSVZFX1NVRkZJWCwKKyAgLyoqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBwYWQgdG8gdGhlIGZv
cm1hdCB3aWR0aC4gKi8KKyAgVU5VTV9QQURESU5HX0NIQVJBQ1RFUiwKKyAgLyoqIFRoZSBJU08g
Y3VycmVuY3kgY29kZSAqLworICBVTlVNX0NVUlJFTkNZX0NPREUsCisgIC8qKgorICAgKiBUaGUg
ZGVmYXVsdCBydWxlIHNldC4gIFRoaXMgaXMgb25seSBhdmFpbGFibGUgd2l0aCBydWxlLWJhc2Vk
IGZvcm1hdHRlcnMuCisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8KKyAgVU5VTV9ERUZBVUxU
X1JVTEVTRVQsCisgIC8qKgorICAgKiBUaGUgcHVibGljIHJ1bGUgc2V0cy4gIFRoaXMgaXMgb25s
eSBhdmFpbGFibGUgd2l0aCBydWxlLWJhc2VkIGZvcm1hdHRlcnMuCisgICAqIFRoaXMgaXMgYSBy
ZWFkLW9ubHkgYXR0cmlidXRlLiAgVGhlIHB1YmxpYyBydWxlc2V0cyBhcmUgcmV0dXJuZWQgYXMg
YQorICAgKiBzaW5nbGUgc3RyaW5nLCB3aXRoIGVhY2ggcnVsZXNldCBuYW1lIGRlbGltaXRlZCBi
eSAnOycgKHNlbWljb2xvbikuCisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8KKyAgVU5VTV9Q
VUJMSUNfUlVMRVNFVFMKK30gVU51bWJlckZvcm1hdFRleHRBdHRyaWJ1dGU7CisKKy8qKgorKiBH
ZXQgYSB0ZXh0IGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0LgorKiBB
biBleGFtcGxlIG9mIGEgdGV4dCBhdHRyaWJ1dGUgaXMgdGhlIHN1ZmZpeCBmb3IgcG9zaXRpdmUg
bnVtYmVycy4gIElmIHRoZSBmb3JtYXR0ZXIKKyogZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgYXR0
cmlidXRyZSwgVV9VTlNVUFBPUlRFRF9FUlJPUiBpcyByZXR1cm5lZCBhcyB0aGUgc3RhdHVzLgor
KiBSdWxlLWJhc2VkIGZvcm1hdHRlcnMgb25seSB1bmRlcnN0YW5kIFVOVU1fREVGQVVMVF9SVUxF
U0VUIGFuZCBVTlVNX1BVQkxJQ19SVUxFU0VUUy4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVy
IHRvIHF1ZXJ5LgorKiBAcGFyYW0gdGFnIFRoZSBhdHRyaWJ1dGUgdG8gcXVlcnk7IG9uZSBvZiBV
TlVNX1BPU0lUSVZFX1BSRUZJWCwgVU5VTV9QT1NJVElWRV9TVUZGSVgsCisqIFVOVU1fTkVHQVRJ
VkVfUFJFRklYLCBVTlVNX05FR0FUSVZFX1NVRkZJWCwgVU5VTV9QQURESU5HX0NIQVJBQ1RFUiwg
VU5VTV9DVVJSRU5DWV9DT0RFLAorKiBVTlVNX0RFRkFVTFRfUlVMRVNFVCwgb3IgVU5VTV9QVUJM
SUNfUlVMRVNFVFMuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJl
Y2VpdmUgdGhlIGF0dHJpYnV0ZS4KKyogQHBhcmFtIHJlc3VsdExlbmd0aCBUaGUgbWF4aW11bSBz
aXplIG9mIHJlc3VsdC4KKyogQHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29k
ZSB0byByZWNlaXZlIGFueSBlcnJvcnMKKyogQHJldHVybiBUaGUgdG90YWwgYnVmZmVyIHNpemUg
bmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0TGVuZ3RoLCB0aGUgb3V0cHV0IHdhcyB0cnVu
Y2F0ZWQuCisqIEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRBdHRy
aWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc3RhYmxlIElDVSAyLjAKKyovCitV
X1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK3VudW1fZ2V0VGV4dEF0dHJpYnV0ZSggICAgY29u
c3QgICAgVU51bWJlckZvcm1hdCogICAgICAgICAgICAgICAgICAgIGZtdCwKKyAgICAgICAgICAg
IFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlICAgICAgdGFnLAorICAgICAgICAgICAgVUNoYXIq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgIGludDMyX3Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGVuZ3RoLAorICAgICAgICAgICAgVUVy
cm9yQ29kZSogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworCisvKioKKyogU2V0IGEg
dGV4dCBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIGEgVU51bWJlckZvcm1hdC4KKyogQW4gZXhh
bXBsZSBvZiBhIHRleHQgYXR0cmlidXRlIGlzIHRoZSBzdWZmaXggZm9yIHBvc2l0aXZlIG51bWJl
cnMuICBSdWxlLWJhc2VkIGZvcm1hdHRlcnMKKyogb25seSB1bmRlcnN0YW5kIFVOVU1fREVGQVVM
VF9SVUxFU0VULgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gc2V0LgorKiBAcGFyYW0g
dGFnIFRoZSBhdHRyaWJ1dGUgdG8gc2V0OyBvbmUgb2YgVU5VTV9QT1NJVElWRV9QUkVGSVgsIFVO
VU1fUE9TSVRJVkVfU1VGRklYLAorKiBVTlVNX05FR0FUSVZFX1BSRUZJWCwgVU5VTV9ORUdBVElW
RV9TVUZGSVgsIFVOVU1fUEFERElOR19DSEFSQUNURVIsIFVOVU1fQ1VSUkVOQ1lfQ09ERSwKKyog
b3IgVU5VTV9ERUZBVUxUX1JVTEVTRVQuCisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVl
IG9mIGF0dHIuCisqIEBwYXJhbSBuZXdWYWx1ZUxlbmd0aCBUaGUgbGVuZ3RoIG9mIG5ld1ZhbHVl
LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRv
IGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEBzZWUgdW51bV9nZXRUZXh0
QXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJp
YnV0ZQorKiBAc3RhYmxlIElDVSAyLjAKKyovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK3Vu
dW1fc2V0VGV4dEF0dHJpYnV0ZSggICAgVU51bWJlckZvcm1hdCogICAgICAgICAgICAgICAgICAg
IGZtdCwKKyAgICAgICAgICAgIFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlICAgICAgdGFnLAor
ICAgICAgICAgICAgY29uc3QgICAgVUNoYXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1ZhbHVlLAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdWYWx1ZUxlbmd0aCwKKyAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdHVzKTsKKworLyoqCisgKiBFeHRyYWN0IHRoZSBwYXR0ZXJuIGZyb20gYSBVTnVt
YmVyRm9ybWF0LiAgVGhlIHBhdHRlcm4gd2lsbCBmb2xsb3cKKyAqIHRoZSBEZWNpbWFsRm9ybWF0
IHBhdHRlcm4gc3ludGF4LgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHF1ZXJ5Lgor
ICogQHBhcmFtIGlzUGF0dGVybkxvY2FsaXplZCBUUlVFIGlmIHRoZSBwYXR0ZXJuIHNob3VsZCBi
ZSBsb2NhbGl6ZWQsCisgKiBGQUxTRSBvdGhlcndpc2UuICBUaGlzIGlzIGlnbm9yZWQgaWYgdGhl
IGZvcm1hdHRlciBpcyBhIHJ1bGUtYmFzZWQKKyAqIGZvcm1hdHRlci4KKyAqIEBwYXJhbSByZXN1
bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIHBhdHRlcm4uCisgKiBAcGFy
YW0gcmVzdWx0TGVuZ3RoIFRoZSBtYXhpbXVtIHNpemUgb2YgcmVzdWx0LgorICogQHBhcmFtIHN0
YXR1cyBBIHBvaW50ZXIgdG8gYW4gaW5wdXQtb3V0cHV0IFVFcnJvckNvZGUuCisgKiBAcmV0dXJu
IFRoZSB0b3RhbCBidWZmZXIgc2l6ZSBuZWVkZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1bHRMZW5n
dGgsCisgKiB0aGUgb3V0cHV0IHdhcyB0cnVuY2F0ZWQuCisgKiBAc2VlIHVudW1fYXBwbHlQYXR0
ZXJuCisgKiBAc2VlIERlY2ltYWxGb3JtYXQKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK3VudW1fdG9QYXR0ZXJuKCAgICBjb25zdCAgICBVTnVt
YmVyRm9ybWF0KiAgICAgICAgICBmbXQsCisgICAgICAgIFVCb29sICAgICAgICAgICAgICAgICAg
aXNQYXR0ZXJuTG9jYWxpemVkLAorICAgICAgICBVQ2hhciogICAgICAgICAgICAgICAgICByZXN1
bHQsCisgICAgICAgIGludDMyX3QgICAgICAgICAgICAgICAgIHJlc3VsdExlbmd0aCwKKyAgICAg
ICAgVUVycm9yQ29kZSogICAgICAgICAgICAgc3RhdHVzKTsKKworCisvKioKKyAqIENvbnN0YW50
cyBmb3Igc3BlY2lmeWluZyBhIG51bWJlciBmb3JtYXQgc3ltYm9sLgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KK3R5cGVkZWYgZW51bSBVTnVtYmVyRm9ybWF0U3ltYm9sIHsKKyAgLyoqIFRoZSBk
ZWNpbWFsIHNlcGFyYXRvciAqLworICBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX1NZTUJPTCA9IDAs
CisgIC8qKiBUaGUgZ3JvdXBpbmcgc2VwYXJhdG9yICovCisgIFVOVU1fR1JPVVBJTkdfU0VQQVJB
VE9SX1NZTUJPTCA9IDEsCisgIC8qKiBUaGUgcGF0dGVybiBzZXBhcmF0b3IgKi8KKyAgVU5VTV9Q
QVRURVJOX1NFUEFSQVRPUl9TWU1CT0wgPSAyLAorICAvKiogVGhlIHBlcmNlbnQgc2lnbiAqLwor
ICBVTlVNX1BFUkNFTlRfU1lNQk9MID0gMywKKyAgLyoqIFplcm8qLworICBVTlVNX1pFUk9fRElH
SVRfU1lNQk9MID0gNCwKKyAgLyoqIENoYXJhY3RlciByZXByZXNlbnRpbmcgYSBkaWdpdCBpbiB0
aGUgcGF0dGVybiAqLworICBVTlVNX0RJR0lUX1NZTUJPTCA9IDUsCisgIC8qKiBUaGUgbWludXMg
c2lnbiAqLworICBVTlVNX01JTlVTX1NJR05fU1lNQk9MID0gNiwKKyAgLyoqIFRoZSBwbHVzIHNp
Z24gKi8KKyAgVU5VTV9QTFVTX1NJR05fU1lNQk9MID0gNywKKyAgLyoqIFRoZSBjdXJyZW5jeSBz
eW1ib2wgKi8KKyAgVU5VTV9DVVJSRU5DWV9TWU1CT0wgPSA4LAorICAvKiogVGhlIGludGVybmF0
aW9uYWwgY3VycmVuY3kgc3ltYm9sICovCisgIFVOVU1fSU5UTF9DVVJSRU5DWV9TWU1CT0wgPSA5
LAorICAvKiogVGhlIG1vbmV0YXJ5IHNlcGFyYXRvciAqLworICBVTlVNX01PTkVUQVJZX1NFUEFS
QVRPUl9TWU1CT0wgPSAxMCwKKyAgLyoqIFRoZSBleHBvbmVudGlhbCBzeW1ib2wgKi8KKyAgVU5V
TV9FWFBPTkVOVElBTF9TWU1CT0wgPSAxMSwKKyAgLyoqIFBlciBtaWxsIHN5bWJvbCAqLworICBV
TlVNX1BFUk1JTExfU1lNQk9MID0gMTIsCisgIC8qKiBFc2NhcGUgcGFkZGluZyBjaGFyYWN0ZXIg
Ki8KKyAgVU5VTV9QQURfRVNDQVBFX1NZTUJPTCA9IDEzLAorICAvKiogSW5maW5pdHkgc3ltYm9s
ICovCisgIFVOVU1fSU5GSU5JVFlfU1lNQk9MID0gMTQsCisgIC8qKiBOYW4gc3ltYm9sICovCisg
IFVOVU1fTkFOX1NZTUJPTCA9IDE1LAorICAvKiogU2lnbmlmaWNhbnQgZGlnaXQgc3ltYm9sCisg
ICAqIEBzdGFibGUgSUNVIDMuMCAqLworICBVTlVNX1NJR05JRklDQU5UX0RJR0lUX1NZTUJPTCA9
IDE2LAorICAvKiogVGhlIG1vbmV0YXJ5IGdyb3VwaW5nIHNlcGFyYXRvciAKKyAgICogQHN0YWJs
ZSBJQ1UgMy42CisgICAqLworICBVTlVNX01PTkVUQVJZX0dST1VQSU5HX1NFUEFSQVRPUl9TWU1C
T0wgPSAxNywgIAorICAvKiogT25lCisgICAqIEBkcmFmdCBJQ1UgNC42CisgICAqLworICBVTlVN
X09ORV9ESUdJVF9TWU1CT0wgPSAxOCwKKyAgLyoqIFR3bworICAgKiBAZHJhZnQgSUNVIDQuNgor
ICAgKi8KKyAgVU5VTV9UV09fRElHSVRfU1lNQk9MID0gMTksCisgIC8qKiBUaHJlZQorICAgKiBA
ZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgVU5VTV9USFJFRV9ESUdJVF9TWU1CT0wgPSAyMCwKKyAg
LyoqIEZvdXIKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVOVU1fRk9VUl9ESUdJVF9T
WU1CT0wgPSAyMSwKKyAgLyoqIEZpdmUKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVO
VU1fRklWRV9ESUdJVF9TWU1CT0wgPSAyMiwKKyAgLyoqIFNpeAorICAgKiBAZHJhZnQgSUNVIDQu
NgorICAgKi8KKyAgVU5VTV9TSVhfRElHSVRfU1lNQk9MID0gMjMsCisgIC8qKiBTZXZlbgorICAg
ICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVOVU1fU0VWRU5fRElHSVRfU1lNQk9MID0gMjQs
CisgIC8qKiBFaWdodAorICAgKiBAZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgVU5VTV9FSUdIVF9E
SUdJVF9TWU1CT0wgPSAyNSwKKyAgLyoqIE5pbmUKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICov
CisgIFVOVU1fTklORV9ESUdJVF9TWU1CT0wgPSAyNiwKKyAgLyoqIGNvdW50IHN5bWJvbCBjb25z
dGFudHMgKi8KKyAgVU5VTV9GT1JNQVRfU1lNQk9MX0NPVU5UID0gMjcKK30gVU51bWJlckZvcm1h
dFN5bWJvbDsKKworLyoqCisqIEdldCBhIHN5bWJvbCBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVy
Rm9ybWF0LgorKiBBIFVOdW1iZXJGb3JtYXQgdXNlcyBzeW1ib2xzIHRvIHJlcHJlc2VudCB0aGUg
c3BlY2lhbCBsb2NhbGUtZGVwZW5kZW50CisqIGNoYXJhY3RlcnMgaW4gYSBudW1iZXIsIGZvciBl
eGFtcGxlIHRoZSBwZXJjZW50IHNpZ24uIFRoaXMgQVBJIGlzIG5vdAorKiBzdXBwb3J0ZWQgZm9y
IHJ1bGUtYmFzZWQgZm9ybWF0dGVycy4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHF1
ZXJ5LgorKiBAcGFyYW0gc3ltYm9sIFRoZSBVTnVtYmVyRm9ybWF0U3ltYm9sIGNvbnN0YW50IGZv
ciB0aGUgc3ltYm9sIHRvIGdldAorKiBAcGFyYW0gYnVmZmVyIFRoZSBzdHJpbmcgYnVmZmVyIHRo
YXQgd2lsbCByZWNlaXZlIHRoZSBzeW1ib2wgc3RyaW5nOworKiAgICAgICAgICAgICAgIGlmIGl0
IGlzIE5VTEwsIHRoZW4gb25seSB0aGUgbGVuZ3RoIG9mIHRoZSBzeW1ib2wgaXMgcmV0dXJuZWQK
KyogQHBhcmFtIHNpemUgVGhlIHNpemUgb2YgdGhlIHN0cmluZyBidWZmZXIKKyogQHBhcmFtIHN0
YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMKKyog
QHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSBzeW1ib2w7IHRoZSBidWZmZXIgaXMgbm90IG1vZGlm
aWVkIGlmCisqICAgICAgICAgPGNvZGU+bGVuZ3RoJmd0Oz1zaXplPC9jb2RlPgorKiBAc2VlIHVu
dW1fc2V0U3ltYm9sCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9F
WFBPUlQyCit1bnVtX2dldFN5bWJvbChjb25zdCBVTnVtYmVyRm9ybWF0ICpmbXQsCisgICAgICAg
ICAgICAgICBVTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCwKKyAgICAgICAgICAgICAgIFVDaGFy
ICpidWZmZXIsCisgICAgICAgICAgICAgICBpbnQzMl90IHNpemUsCisgICAgICAgICAgICAgICBV
RXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyogU2V0IGEgc3ltYm9sIGFzc29jaWF0ZWQgd2l0
aCBhIFVOdW1iZXJGb3JtYXQuCisqIEEgVU51bWJlckZvcm1hdCB1c2VzIHN5bWJvbHMgdG8gcmVw
cmVzZW50IHRoZSBzcGVjaWFsIGxvY2FsZS1kZXBlbmRlbnQKKyogY2hhcmFjdGVycyBpbiBhIG51
bWJlciwgZm9yIGV4YW1wbGUgdGhlIHBlcmNlbnQgc2lnbi4gIFRoaXMgQVBJIGlzIG5vdAorKiBz
dXBwb3J0ZWQgZm9yIHJ1bGUtYmFzZWQgZm9ybWF0dGVycy4KKyogQHBhcmFtIGZtdCBUaGUgZm9y
bWF0dGVyIHRvIHNldC4KKyogQHBhcmFtIHN5bWJvbCBUaGUgVU51bWJlckZvcm1hdFN5bWJvbCBj
b25zdGFudCBmb3IgdGhlIHN5bWJvbCB0byBzZXQKKyogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcg
dG8gc2V0IHRoZSBzeW1ib2wgdG8KKyogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBz
dHJpbmcsIG9yIC0xIGZvciBhIHplcm8tdGVybWluYXRlZCBzdHJpbmcKKyogQHBhcmFtIHN0YXR1
cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCisqIEBz
ZWUgdW51bV9nZXRTeW1ib2wKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgdm9pZCBV
X0VYUE9SVDIKK3VudW1fc2V0U3ltYm9sKFVOdW1iZXJGb3JtYXQgKmZtdCwKKyAgICAgICAgICAg
ICAgIFVOdW1iZXJGb3JtYXRTeW1ib2wgc3ltYm9sLAorICAgICAgICAgICAgICAgY29uc3QgVUNo
YXIgKnZhbHVlLAorICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisKKy8qKgorICogR2V0IHRoZSBsb2NhbGUgZm9yIHRo
aXMgbnVtYmVyIGZvcm1hdCBvYmplY3QuCisgKiBZb3UgY2FuIGNob29zZSBiZXR3ZWVuIHZhbGlk
IGFuZCBhY3R1YWwgbG9jYWxlLgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIGdldCB0
aGUgbG9jYWxlIGZyb20KKyAqIEBwYXJhbSB0eXBlIHR5cGUgb2YgdGhlIGxvY2FsZSB3ZSdyZSBs
b29raW5nIGZvciAodmFsaWQgb3IgYWN0dWFsKSAKKyAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29k
ZSBmb3IgdGhlIG9wZXJhdGlvbgorICogQHJldHVybiB0aGUgbG9jYWxlIG5hbWUKKyAqIEBzdGFi
bGUgSUNVIDIuOAorICovCitVX1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKK3VudW1fZ2V0
TG9jYWxlQnlUeXBlKGNvbnN0IFVOdW1iZXJGb3JtYXQgKmZtdCwKKyAgICAgICAgICAgICAgICAg
ICAgIFVMb2NEYXRhTG9jYWxlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgVUVycm9y
Q29kZSogc3RhdHVzKTsgCisKKyNlbmRpZiAvKiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORyAq
LworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29k
ZS91b2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW9iamVjdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3ZDRjODRkYTViNjc4ZTJkZjQ4YWU0M2I2ODJhYjU0OTA5MjgzNTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW9iamVj
dC5oCkBAIC0wLDAgKzEsMzUyIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAg
Q29weXJpZ2h0IChDKSAyMDAyLTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
KyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorKiAgIGZpbGUgbmFtZTogIHVvYmplY3QuaAorKiAgIGVuY29k
aW5nOiAgIFVTLUFTQ0lJCisqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50
YXRpb246NAorKgorKiAgIGNyZWF0ZWQgb246IDIwMDJqdW4yNgorKiAgIGNyZWF0ZWQgYnk6IE1h
cmt1cyBXLiBTY2hlcmVyCisqLworCisjaWZuZGVmIF9fVU9CSkVDVF9IX18KKyNkZWZpbmUgX19V
T0JKRUNUX0hfXworCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKworVV9OQU1FU1BBQ0Vf
QkVHSU4KKworLyoqCisgKiBcZmlsZQorICogXGJyaWVmIEMrKyBBUEk6IENvbW1vbiBJQ1UgYmFz
ZSBjbGFzcyBVT2JqZWN0LgorICovCisKKy8qKiAgVV9PVkVSUklERV9DWFhfQUxMT0NBVElPTiAt
IERlZmluZSB0aGlzIHRvIG92ZXJyaWRlIG9wZXJhdG9yIG5ldyBhbmQKKyAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpbiBVTWVtb3J5LiBFbmFibGVkIGJ5IGRlZmF1bHQg
Zm9yIElDVS4KKyAqCisgKiAgICAgICAgIEVuYWJsaW5nIGZvcmNlcyBhbGwgYWxsb2NhdGlvbiBv
ZiBJQ1Ugb2JqZWN0IHR5cGVzIHRvIHVzZSBJQ1UncworICogICAgICAgICBtZW1vcnkgYWxsb2Nh
dGlvbi4gT24gV2luZG93cywgdGhpcyBhbGxvd3MgdGhlIElDVSBETEwgdG8gYmUgdXNlZCBieQor
ICogICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCBzdGF0aWNhbGx5IGxpbmsgdGhlIEMgUnVudGlt
ZSBsaWJyYXJ5LCBtZWFuaW5nIHRoYXQKKyAqICAgICAgICAgdGhlIGFwcCBhbmQgSUNVIHdpbGwg
YmUgdXNpbmcgZGlmZmVyZW50IGhlYXBzLgorICoKKyAqIEBzdGFibGUgSUNVIDIuMgorICovICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjaWZuZGVmIFVfT1ZFUlJJREVfQ1hYX0FMTE9D
QVRJT04KKyNkZWZpbmUgVV9PVkVSUklERV9DWFhfQUxMT0NBVElPTiAxCisjZW5kaWYKKworLyoq
IAorICogXGRlZiBVX0hBVkVfUExBQ0VNRU5UX05FVworICogIERlZmluZSB0aGlzIHRvIGRlZmlu
ZSB0aGUgcGxhY2VtZW50IG5ldyBhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgaW4gVU1lbW9yeSBmb3IgU1RMLgorICoKKyAqIEBzdGFibGUgSUNVIDIuNgorICovICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisjaWZuZGVmIFVfSEFWRV9QTEFDRU1FTlRfTkVXCisj
ZGVmaW5lIFVfSEFWRV9QTEFDRU1FTlRfTkVXIDEKKyNlbmRpZgorCisKKy8qKiAKKyAqIFxkZWYg
VV9IQVZFX0RFQlVHX0xPQ0FUSU9OX05FVyAKKyAqIERlZmluZSB0aGlzIHRvIGRlZmluZSB0aGUg
TUZDIGRlYnVnCisgKiB2ZXJzaW9uIG9mIHRoZSBvcGVyYXRvciBuZXcuCisgKgorICogQHN0YWJs
ZSBJQ1UgMy40CisgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNpZm5kZWYgVV9I
QVZFX0RFQlVHX0xPQ0FUSU9OX05FVworI2RlZmluZSBVX0hBVkVfREVCVUdfTE9DQVRJT05fTkVX
IDAKKyNlbmRpZgorCisvKioKKyAqIEB7CisgKiBcZGVmIFVfTk9fVEhST1cKKyAqICAgICAgICAg
RGVmaW5lIHRoaXMgdG8gZGVmaW5lIHRoZSB0aHJvdygpIHNwZWNpZmljYXRpb24gc28KKyAqICAg
ICAgICAgICAgICAgICBjZXJ0YWluIGZ1bmN0aW9ucyBkbyBub3QgdGhyb3cgYW55IGV4Y2VwdGlv
bnMKKyAqCisgKiAgICAgICAgIFVNZW1vcnkgb3BlcmF0b3IgbmV3IG1ldGhvZHMgc2hvdWxkIGhh
dmUgdGhlIHRocm93KCkgc3BlY2lmaWNhdGlvbiAKKyAqICAgICAgICAgYXBwZW5kZWQgdG8gdGhl
bSwgc28gdGhhdCB0aGUgY29tcGlsZXIgYWRkcyB0aGUgYWRkaXRpb25hbCBOVUxMIGNoZWNrIAor
ICogICAgICAgICBiZWZvcmUgY2FsbGluZyBjb25zdHJ1Y3RvcnMuIFdpdGhvdXQsIGlmIDxjb2Rl
Pm9wZXJhdG9yIG5ldzwvY29kZT4gcmV0dXJucyBOVUxMIHRoZSAKKyAqICAgICAgICAgY29uc3Ry
dWN0b3IgaXMgc3RpbGwgY2FsbGVkLCBhbmQgaWYgdGhlIGNvbnN0cnVjdG9yIHJlZmVyZW5jZXMg
bWVtYmVyIAorICogICAgICAgICBkYXRhLCAod2hpY2ggaXQgdHlwaWNhbGx5IGRvZXMpLCB0aGUg
cmVzdWx0IGlzIGEgc2VnbWVudGF0aW9uIHZpb2xhdGlvbi4KKyAqCisgKiBAZHJhZnQgSUNVIDQu
MgorICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjaWZuZGVmIFVfTk9fVEhST1cK
KyNkZWZpbmUgVV9OT19USFJPVyB0aHJvdygpCisjZW5kaWYKKworLyoqIEB9ICovCisKKy8qKgor
ICogVU1lbW9yeSBpcyB0aGUgY29tbW9uIElDVSBiYXNlIGNsYXNzLgorICogQWxsIG90aGVyIElD
VSBDKysgY2xhc3NlcyBhcmUgZGVyaXZlZCBmcm9tIFVNZW1vcnkgKHN0YXJ0aW5nIHdpdGggSUNV
IDIuNCkuCisgKgorICogVGhpcyBpcyBwcmltYXJpbHkgdG8gbWFrZSBpdCBwb3NzaWJsZSBhbmQg
c2ltcGxlIHRvIG92ZXJyaWRlIHRoZQorICogQysrIG1lbW9yeSBtYW5hZ2VtZW50IGJ5IGFkZGlu
ZyBuZXcvZGVsZXRlIG9wZXJhdG9ycyB0byB0aGlzIGJhc2UgY2xhc3MuCisgKgorICogVG8gb3Zl
cnJpZGUgQUxMIElDVSBtZW1vcnkgbWFuYWdlbWVudCwgaW5jbHVkaW5nIHRoYXQgZnJvbSBwbGFp
biBDIGNvZGUsCisgKiByZXBsYWNlIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBkZWNsYXJlZCBp
biBjbWVtb3J5LmgKKyAqCisgKiBVTWVtb3J5IGRvZXMgbm90IGNvbnRhaW4gYW55IHZpcnR1YWwg
ZnVuY3Rpb25zLgorICogQ29tbW9uICJib2lsZXJwbGF0ZSIgZnVuY3Rpb25zIGFyZSBkZWZpbmVk
IGluIFVPYmplY3QuCisgKgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KK2NsYXNzIFVfQ09NTU9O
X0FQSSBVTWVtb3J5IHsKK3B1YmxpYzoKKworLyogdGVzdCB2ZXJzaW9ucyBmb3IgZGVidWdnaW5n
IHNoYXBlciBoZWFwIG1lbW9yeSBwcm9ibGVtcyAqLworI2lmZGVmIFNIQVBFUl9NRU1PUllfREVC
VUcgIAorICAgIHN0YXRpYyB2b2lkICogTmV3QXJyYXkoaW50IHNpemUsIGludCBjb3VudCk7Cisg
ICAgc3RhdGljIHZvaWQgKiBHcm93QXJyYXkodm9pZCAqIGFycmF5LCBpbnQgbmV3U2l6ZSApOwor
ICAgIHN0YXRpYyB2b2lkICAgRnJlZUFycmF5KHZvaWQgKiBhcnJheSApOworI2VuZGlmCisKKyNp
ZiBVX09WRVJSSURFX0NYWF9BTExPQ0FUSU9OCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgZm9y
IElDVTRDIEMrKyBtZW1vcnkgbWFuYWdlbWVudC4KKyAgICAgKiBzaW1wbGUsIG5vbi1jbGFzcyB0
eXBlcyBhcmUgYWxsb2NhdGVkIHVzaW5nIHRoZSBtYWNyb3MgaW4gY29tbW9uL2NtZW1vcnkuaAor
ICAgICAqICh1cHJ2X21hbGxvYygpLCB1cHJ2X2ZyZWUoKSwgdXBydl9yZWFsbG9jKCkpOworICAg
ICAqIHRoZXkgb3Igc29tZXRoaW5nIGVsc2UgY291bGQgYmUgdXNlZCBoZXJlIHRvIGltcGxlbWVu
dCBDKysgbmV3L2RlbGV0ZQorICAgICAqIGZvciBJQ1U0QyBDKysgY2xhc3NlcworICAgICAqIEBz
dGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lkICogVV9FWFBPUlQyIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSkgVV9OT19USFJPVzsKKworICAgIC8qKgorICAgICAqIE92ZXJy
aWRlIGZvciBJQ1U0QyBDKysgbWVtb3J5IG1hbmFnZW1lbnQuCisgICAgICogU2VlIG5ldygpLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lkICogVV9FWFBP
UlQyIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSBVX05PX1RIUk9XOworCisgICAgLyoqCisg
ICAgICogT3ZlcnJpZGUgZm9yIElDVTRDIEMrKyBtZW1vcnkgbWFuYWdlbWVudC4KKyAgICAgKiBz
aW1wbGUsIG5vbi1jbGFzcyB0eXBlcyBhcmUgYWxsb2NhdGVkIHVzaW5nIHRoZSBtYWNyb3MgaW4g
Y29tbW9uL2NtZW1vcnkuaAorICAgICAqICh1cHJ2X21hbGxvYygpLCB1cHJ2X2ZyZWUoKSwgdXBy
dl9yZWFsbG9jKCkpOworICAgICAqIHRoZXkgb3Igc29tZXRoaW5nIGVsc2UgY291bGQgYmUgdXNl
ZCBoZXJlIHRvIGltcGxlbWVudCBDKysgbmV3L2RlbGV0ZQorICAgICAqIGZvciBJQ1U0QyBDKysg
Y2xhc3NlcworICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lk
IFVfRVhQT1JUMiBvcGVyYXRvciBkZWxldGUodm9pZCAqcCkgVV9OT19USFJPVzsKKworICAgIC8q
KgorICAgICAqIE92ZXJyaWRlIGZvciBJQ1U0QyBDKysgbWVtb3J5IG1hbmFnZW1lbnQuCisgICAg
ICogU2VlIGRlbGV0ZSgpLgorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0
YXRpYyB2b2lkIFVfRVhQT1JUMiBvcGVyYXRvciBkZWxldGVbXSh2b2lkICpwKSBVX05PX1RIUk9X
OworCisjaWYgVV9IQVZFX1BMQUNFTUVOVF9ORVcKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBm
b3IgSUNVNEMgQysrIG1lbW9yeSBtYW5hZ2VtZW50IGZvciBTVEwuCisgICAgICogU2VlIG5ldygp
LgorICAgICAqIEBzdGFibGUgSUNVIDIuNgorICAgICAqLworICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCAqIFVfRVhQT1JUMiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkICpwdHIpIFVfTk9fVEhST1cg
eyByZXR1cm4gcHRyOyB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBmb3IgSUNVNEMgQysr
IG1lbW9yeSBtYW5hZ2VtZW50IGZvciBTVEwuCisgICAgICogU2VlIGRlbGV0ZSgpLgorICAgICAq
IEBzdGFibGUgSUNVIDIuNgorICAgICAqLworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBVX0VYUE9S
VDIgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKiwgdm9pZCAqKSBVX05PX1RIUk9XIHt9CisjZW5kaWYg
LyogVV9IQVZFX1BMQUNFTUVOVF9ORVcgKi8KKyNpZiBVX0hBVkVfREVCVUdfTE9DQVRJT05fTkVX
CisgICAgLyoqCisgICAgICAqIFRoaXMgbWV0aG9kIG92ZXJyaWRlcyB0aGUgTUZDIGRlYnVnIHZl
cnNpb24gb2YgdGhlIG9wZXJhdG9yIG5ldworICAgICAgKiAKKyAgICAgICogQHBhcmFtIHNpemUg
ICBUaGUgcmVxdWVzdGVkIG1lbW9yeSBzaXplCisgICAgICAqIEBwYXJhbSBmaWxlICAgVGhlIGZp
bGUgd2hlcmUgdGhlIGFsbG9jYXRpb24gd2FzIHJlcXVlc3RlZAorICAgICAgKiBAcGFyYW0gbGlu
ZSAgIFRoZSBsaW5lIHdoZXJlIHRoZSBhbGxvY2F0aW9uIHdhcyByZXF1ZXN0ZWQgCisgICAgICAq
LyAKKyAgICBzdGF0aWMgdm9pZCAqIFVfRVhQT1JUMiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUs
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSBVX05PX1RIUk9XOworICAgIC8qKgorICAgICAg
KiBUaGlzIG1ldGhvZCBwcm92aWRlcyBhIG1hdGNoaW5nIGRlbGV0ZSBmb3IgdGhlIE1GQyBkZWJ1
ZyBuZXcKKyAgICAgICogCisgICAgICAqIEBwYXJhbSBwICAgICAgVGhlIHBvaW50ZXIgdG8gdGhl
IGFsbG9jYXRlZCBtZW1vcnkKKyAgICAgICogQHBhcmFtIGZpbGUgICBUaGUgZmlsZSB3aGVyZSB0
aGUgYWxsb2NhdGlvbiB3YXMgcmVxdWVzdGVkCisgICAgICAqIEBwYXJhbSBsaW5lICAgVGhlIGxp
bmUgd2hlcmUgdGhlIGFsbG9jYXRpb24gd2FzIHJlcXVlc3RlZCAKKyAgICAgICovIAorICAgIHN0
YXRpYyB2b2lkIFVfRVhQT1JUMiBvcGVyYXRvciBkZWxldGUodm9pZCogcCwgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUpIFVfTk9fVEhST1c7CisjZW5kaWYgLyogVV9IQVZFX0RFQlVHX0xPQ0FU
SU9OX05FVyAqLworI2VuZGlmIC8qIFVfT1ZFUlJJREVfQ1hYX0FMTE9DQVRJT04gKi8KKworICAg
IC8qCisgICAgICogQXNzaWdubWVudCBvcGVyYXRvciBub3QgZGVjbGFyZWQuIFRoZSBjb21waWxl
ciB3aWxsIHByb3ZpZGUgb25lCisgICAgICogd2hpY2ggZG9lcyBub3RoaW5nIHNpbmNlIHRoaXMg
Y2xhc3MgZG9lcyBub3QgY29udGFpbiBhbnkgZGF0YSBtZW1iZXJzLgorICAgICAqIEFQSS9jb2Rl
IGNvdmVyYWdlIG1heSBzaG93IHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGFzIHByZXNlbnQgYW5k
CisgICAgICogdW50ZXN0ZWQgLSBpZ25vcmUuCisgICAgICogU3ViY2xhc3NlcyBuZWVkIHRoaXMg
YXNzaWdubWVudCBvcGVyYXRvciBpZiB0aGV5IHVzZSBjb21waWxlci1wcm92aWRlZAorICAgICAq
IGFzc2lnbm1lbnQgb3BlcmF0b3JzIG9mIHRoZWlyIG93bi4gQW4gYWx0ZXJuYXRpdmUgdG8gbm90
IGRlY2xhcmluZyBvbmUKKyAgICAgKiBoZXJlIHdvdWxkIGJlIHRvIGRlY2xhcmUgYW5kIGVtcHR5
LWltcGxlbWVudCBhIHByb3RlY3RlZCBvciBwdWJsaWMgb25lLgorICAgIFVNZW1vcnkgJlVNZW1v
cnk6Om9wZXJhdG9yPShjb25zdCBVTWVtb3J5ICYpOworICAgICAqLworfTsKKworLyoqCisgKiBV
T2JqZWN0IGlzIHRoZSBjb21tb24gSUNVICJib2lsZXJwbGF0ZSIgY2xhc3MuCisgKiBVT2JqZWN0
IGluaGVyaXRzIFVNZW1vcnkgKHN0YXJ0aW5nIHdpdGggSUNVIDIuNCksCisgKiBhbmQgYWxsIG90
aGVyIHB1YmxpYyBJQ1UgQysrIGNsYXNzZXMKKyAqIGFyZSBkZXJpdmVkIGZyb20gVU9iamVjdCAo
c3RhcnRpbmcgd2l0aCBJQ1UgMi4yKS4KKyAqCisgKiBVT2JqZWN0IGNvbnRhaW5zIGNvbW1vbiB2
aXJ0dWFsIGZ1bmN0aW9ucyBsaWtlIGZvciBJQ1UncyAicG9vciBtYW4ncyBSVFRJIi4KKyAqIEl0
IGRvZXMgbm90IGNvbnRhaW4gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRo
b2RzCisgKiBsaWtlIGdldER5bmFtaWNDbGFzc0lEIHRvIGFsbG93IGRlcml2ZWQgY2xhc3NlcyBz
dWNoIGFzIEZvcm1hdAorICogdG8gZGVjbGFyZSB0aGVzZSBhcyBwdXJlIHZpcnR1YWwuCisgKgor
ICogVGhlIGNsb25lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBVT2JqZWN0IGJlY2F1
c2UgaXQgaXMgbm90CisgKiBpbXBsZW1lbnRlZCBieSBhbGwgSUNVIGNsYXNzZXMuCisgKiBNYW55
IElDVSBzZXJ2aWNlcyBwcm92aWRlIGEgY2xvbmUoKSBmdW5jdGlvbiBmb3IgdGhlaXIgY2xhc3Mg
dHJlZXMsCisgKiBkZWZpbmVkIG9uIHRoZSBzZXJ2aWNlJ3MgQysrIGJhc2UgY2xhc3MsIGFuZCBh
bGwgc3ViY2xhc3NlcyB3aXRoaW4gdGhhdAorICogc2VydmljZSBjbGFzcyB0cmVlIHJldHVybiBh
IHBvaW50ZXIgdG8gdGhlIHNlcnZpY2UgYmFzZSBjbGFzcworICogKHdoaWNoIGl0c2VsZiBpcyBh
IHN1YmNsYXNzIG9mIFVPYmplY3QpLgorICogVGhpcyBpcyBiZWNhdXNlIHNvbWUgY29tcGlsZXJz
IGRvIG5vdCBzdXBwb3J0IGNvdmFyaWFudCAoc2FtZS1hcy10aGlzKQorICogcmV0dXJuIHR5cGVz
OyBjYXN0IHRvIHRoZSBhcHByb3ByaWF0ZSBzdWJjbGFzcyBpZiBuZWNlc3NhcnkuCisgKgorICog
QHN0YWJsZSBJQ1UgMi4yCisgKi8KK2NsYXNzIFVfQ09NTU9OX0FQSSBVT2JqZWN0IDogcHVibGlj
IFVNZW1vcnkgeworcHVibGljOgorICAgIC8qKgorICAgICAqIERlc3RydWN0b3IuCisgICAgICoK
KyAgICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIH5VT2JqZWN0KCk7
CisKKyAgICAvKioKKyAgICAgKiBJQ1U0QyAicG9vciBtYW4ncyBSVFRJIiwgcmV0dXJucyBhIFVD
bGFzc0lEIGZvciB0aGUgYWN0dWFsIElDVSBjbGFzcy4KKyAgICAgKgorICAgICAqIEBzdGFibGUg
SUNVIDIuMgorICAgICAqLworICAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0RHluYW1pY0NsYXNzSUQo
KSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9u
cyBhcmUgcHJvdGVjdGVkIHRvIHByZXZlbnQgaW5zdGFudGlhdGlvbiBhbmQKKyAgICAvLyBkaXJl
Y3QgdXNlIG9mIFVPYmplY3QgaXRzZWxmCisKKyAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yCisg
ICAgLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFVPYmplY3QgaXMgYWJzdHJhY3QgKHNlZSBnZXRE
eW5hbWljQ2xhc3NJRCkKKyAgICAvLyBpbmxpbmUgVU9iamVjdCgpIHt9CisKKyAgICAvLyBjb3B5
IGNvbnN0cnVjdG9yCisgICAgLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFVPYmplY3QgaXMgYWJz
dHJhY3QgKHNlZSBnZXREeW5hbWljQ2xhc3NJRCkKKyAgICAvLyBpbmxpbmUgVU9iamVjdChjb25z
dCBVT2JqZWN0ICZvdGhlcikge30KKworI2lmIDAKKyAgICAvLyBUT0RPIFNvbWV0aW1lIGluIHRo
ZSBmdXR1cmUuIEltcGxlbWVudCBvcGVyYXRvcj09KCkuCisgICAgLy8gKFRoaXMgY29tbWVudCBp
bnNlcnRlZCBpbiAyLjIpCisgICAgLy8gc29tZSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyAiYm9p
bGVycGxhdGUiIGZ1bmN0aW9ucyBtYXkgYmUgbWFkZSBwdWJsaWMKKyAgICAvLyBpbiBhIGZ1dHVy
ZSBJQ1U0QyByZWxlYXNlIHdoZW4gYWxsIHN1YmNsYXNzZXMgaW1wbGVtZW50IHRoZW0KKworICAg
IC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgICAvLyAobm90IHZpcnR1YWwsIHNlZSAiVGFsaWdl
bnQncyBHdWlkZSB0byBEZXNpZ25pbmcgUHJvZ3JhbXMiIHBwLjczLi43NCkKKyAgICAvLyBjb21t
ZW50ZWQgb3V0IGJlY2F1c2UgdGhlIGltcGxlbWVudGF0aW9uIGlzIHRoZSBzYW1lIGFzIGEgY29t
cGlsZXIncyBkZWZhdWx0CisgICAgLy8gVU9iamVjdCAmb3BlcmF0b3I9KGNvbnN0IFVPYmplY3Qg
Jm90aGVyKSB7IHJldHVybiAqdGhpczsgfQorCisgICAgLy8gY29tcGFyaXNvbiBvcGVyYXRvcnMK
KyAgICB2aXJ0dWFsIGlubGluZSBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IFVPYmplY3QgJm90aGVy
KSBjb25zdCB7IHJldHVybiB0aGlzPT0mb3RoZXI7IH0KKyAgICBpbmxpbmUgVUJvb2wgb3BlcmF0
b3IhPShjb25zdCBVT2JqZWN0ICZvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3Ro
ZXIpOyB9CisKKyAgICAvLyBjbG9uZSgpIGNvbW1lbnRlZCBvdXQgZnJvbSB0aGUgYmFzZSBjbGFz
czoKKyAgICAvLyBzb21lIGNvbXBpbGVycyBkbyBub3Qgc3VwcG9ydCBjby12YXJpYW50IHJldHVy
biB0eXBlcworICAgIC8vIChpLmUuLCBzdWJjbGFzc2VzIHdvdWxkIGhhdmUgdG8gcmV0dXJuIFVP
YmplY3QgKiBhcyB3ZWxsLCBpbnN0ZWFkIG9mIFN1YkNsYXNzICopCisgICAgLy8gc2VlIGFsc28g
VU9iamVjdCBjbGFzcyBkb2N1bWVudGF0aW9uLgorICAgIC8vIHZpcnR1YWwgVU9iamVjdCAqY2xv
bmUoKSBjb25zdDsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBBc3NpZ25tZW50IG9wZXJhdG9y
IG5vdCBkZWNsYXJlZC4gVGhlIGNvbXBpbGVyIHdpbGwgcHJvdmlkZSBvbmUKKyAgICAgKiB3aGlj
aCBkb2VzIG5vdGhpbmcgc2luY2UgdGhpcyBjbGFzcyBkb2VzIG5vdCBjb250YWluIGFueSBkYXRh
IG1lbWJlcnMuCisgICAgICogQVBJL2NvZGUgY292ZXJhZ2UgbWF5IHNob3cgdGhlIGFzc2lnbm1l
bnQgb3BlcmF0b3IgYXMgcHJlc2VudCBhbmQKKyAgICAgKiB1bnRlc3RlZCAtIGlnbm9yZS4KKyAg
ICAgKiBTdWJjbGFzc2VzIG5lZWQgdGhpcyBhc3NpZ25tZW50IG9wZXJhdG9yIGlmIHRoZXkgdXNl
IGNvbXBpbGVyLXByb3ZpZGVkCisgICAgICogYXNzaWdubWVudCBvcGVyYXRvcnMgb2YgdGhlaXIg
b3duLiBBbiBhbHRlcm5hdGl2ZSB0byBub3QgZGVjbGFyaW5nIG9uZQorICAgICAqIGhlcmUgd291
bGQgYmUgdG8gZGVjbGFyZSBhbmQgZW1wdHktaW1wbGVtZW50IGEgcHJvdGVjdGVkIG9yIHB1Ymxp
YyBvbmUuCisgICAgVU9iamVjdCAmVU9iamVjdDo6b3BlcmF0b3I9KGNvbnN0IFVPYmplY3QgJik7
CisgICAgICovCisKKy8vIEZ1dHVyZSBpbXBsZW1lbnRhdGlvbiBmb3IgUlRUSSB0aGF0IHN1cHBv
cnQgc3VidHlwaW5nLiBbYWxhbl0KKy8vIAorLy8gIHB1YmxpYzoKKy8vICAgICAvKioKKy8vICAg
ICAgKiBAaW50ZXJuYWwKKy8vICAgICAgKi8KKy8vICAgICBzdGF0aWMgVUNsYXNzSUQgZ2V0U3Rh
dGljQ2xhc3NJRCgpOworLy8gCisvLyAgICAgLyoqCisvLyAgICAgICogQGludGVybmFsCisvLyAg
ICAgICovCisvLyAgICAgVUJvb2wgaW5zdGFuY2VPZihVQ2xhc3NJRCB0eXBlKSBjb25zdDsKK307
CisKKy8qKgorICogVGhpcyBpcyBhIHNpbXBsZSBtYWNybyB0byBhZGQgSUNVIFJUVEkgdG8gYW4g
SUNVIG9iamVjdCBpbXBsZW1lbnRhdGlvbi4KKyAqIFRoaXMgZG9lcyBub3QgZ28gaW50byB0aGUg
aGVhZGVyLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gKi5jcHAgZmlsZXMuCisgKgorICog
QHBhcmFtIG15Q2xhc3MgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRUSSBkZWZp
bmVkLgorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfUlRUSV9JTVBM
RU1FTlRBVElPTihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgVV9FWFBPUlQyIG15Q2xhc3M6Omdl
dFN0YXRpY0NsYXNzSUQoKSB7IFwKKyAgICAgICAgc3RhdGljIGNoYXIgY2xhc3NJRCA9IDA7IFwK
KyAgICAgICAgcmV0dXJuIChVQ2xhc3NJRCkmY2xhc3NJRDsgXAorICAgIH0gXAorICAgIFVDbGFz
c0lEIG15Q2xhc3M6OmdldER5bmFtaWNDbGFzc0lEKCkgY29uc3QgXAorICAgIHsgcmV0dXJuIG15
Q2xhc3M6OmdldFN0YXRpY0NsYXNzSUQoKTsgfQorCisKKy8qKgorICogVGhpcyBtYWNybyBhZGRz
IElDVSBSVFRJIHRvIGFuIElDVSBhYnN0cmFjdCBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKyAqIFRo
aXMgbWFjcm8gc2hvdWxkIGJlIGludm9rZWQgaW4gKi5jcHAgZmlsZXMuICBUaGUgY29ycmVzcG9u
ZGluZworICogaGVhZGVyIHNob3VsZCBkZWNsYXJlIGdldFN0YXRpY0NsYXNzSUQuCisgKgorICog
QHBhcmFtIG15Q2xhc3MgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRUSSBkZWZp
bmVkLgorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfQUJTVFJBQ1Rf
UlRUSV9JTVBMRU1FTlRBVElPTihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgVV9FWFBPUlQyIG15
Q2xhc3M6OmdldFN0YXRpY0NsYXNzSUQoKSB7IFwKKyAgICAgICAgc3RhdGljIGNoYXIgY2xhc3NJ
RCA9IDA7IFwKKyAgICAgICAgcmV0dXJuIChVQ2xhc3NJRCkmY2xhc3NJRDsgXAorICAgIH0KKwor
LyoqCisgKiBUaGlzIGlzIGEgc2ltcGxlIG1hY3JvIHRvIGV4cHJlc3MgdGhhdCBhIGNsYXNzIGFu
ZCBpdHMgc3ViY2xhc3NlcyBkbyBub3Qgb2ZmZXIKKyAqIElDVSdzICJwb29yIG1hbidzIFJUVEki
LgorICogQmVnaW5uaW5nIHdpdGggSUNVIDQuNiwgSUNVIHJlcXVpcmVzIEMrKyBjb21waWxlciBS
VFRJLgorICogVGhpcyBkb2VzIG5vdCBnbyBpbnRvIHRoZSBoZWFkZXIuIFRoaXMgc2hvdWxkIG9u
bHkgYmUgdXNlZCBpbiAqLmNwcCBmaWxlcy4KKyAqIFVzZSB0aGlzIHdpdGggYSBwcml2YXRlIGdl
dER5bmFtaWNDbGFzc0lEKCkgaW4gYW4gaW1tZWRpYXRlIHN1YmNsYXNzIG9mIFVPYmplY3QuCisg
KgorICogQHBhcmFtIG15Q2xhc3MgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRU
SSBkZWZpbmVkLgorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfTk9f
UlRUSV9JTVBMRU1FTlRBVElPTihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgbXlDbGFzczo6Z2V0
RHluYW1pY0NsYXNzSUQoKSBjb25zdCB7IHJldHVybiBOVUxMOyB9CisKKy8vIC8qKgorLy8gICog
VGhpcyBtYWNybyBhZGRzIElDVSBSVFRJIHRvIGFuIElDVSBjb25jcmV0ZSBjbGFzcyBpbXBsZW1l
bnRhdGlvbi4KKy8vICAqIFRoaXMgbWFjcm8gc2hvdWxkIGJlIGludm9rZWQgaW4gKi5jcHAgZmls
ZXMuICBUaGUgY29ycmVzcG9uZGluZworLy8gICogaGVhZGVyIHNob3VsZCBkZWNsYXJlIGdldER5
bmFtaWNDbGFzc0lEIGFuZCBnZXRTdGF0aWNDbGFzc0lELgorLy8gICoKKy8vICAqIEBwYXJhbSBt
eUNsYXNzIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IG5lZWRzIFJUVEkgZGVmaW5lZC4KKy8v
ICAqIEBwYXJhbSBteVBhcmVudCBUaGUgbmFtZSBvZiB0aGUgbXlDbGFzcydzIHBhcmVudC4KKy8v
ICAqIEBpbnRlcm5hbAorLy8gICovCisvKiNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfUlRUSV9JTVBM
RU1FTlRBVElPTihteUNsYXNzLCBteVBhcmVudCkgXAorICAgIFVPQkpFQ1RfREVGSU5FX0FCU1RS
QUNUX1JUVElfSU1QTEVNRU5UQVRJT04obXlDbGFzcywgbXlQYXJlbnQpIFwKKyAgICBVQ2xhc3NJ
RCBteUNsYXNzOjpnZXREeW5hbWljQ2xhc3NJRCgpIGNvbnN0IHsgXAorICAgICAgICByZXR1cm4g
bXlDbGFzczo6Z2V0U3RhdGljQ2xhc3NJRCgpOyBcCisgICAgfQorKi8KKworCitVX05BTUVTUEFD
RV9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA0ZDZjNWRhNjIxODYwNWFjZTFkNTIwMjJkMmRlYjJhMGIz
MjUxZjI3Li5iNmU2ZDRiYjI4M2YyNzliYzFhOTRiMDk0OWFiN2I5YTU0ZWIyYTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTM4LDEyICszOCwxNCBAQAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0
aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKKyAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFj
cm8oSlNPTikgXAogICAgIG1hY3JvKE1hcClcCiAgICAgbWFjcm8oTWFwSXRlcmF0b3IpXAogICAg
IG1hY3JvKE1hdGgpIFwKICAgICBtYWNybyhOYU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKKyAg
ICBtYWNybyhOdW1iZXJGb3JtYXQpIFwKICAgICBtYWNybyhPYmplY3QpIFwKICAgICBtYWNybyhQ
cm9taXNlKSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJvcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmY0NzVh
YWNlYWM2YTdmNjk0M2MzMjA0MDdjZjAxNjQ0YmQ0ODg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTAsMCAr
MSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShJbnRsTnVtYmVyRm9ybWF0KSB9OworCitJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9y
bWF0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxOdW1iZXJGb3Jt
YXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+
KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0KHZtLCBnbG9iYWxPYmplY3QtPm51bWJlckZvcm1h
dFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtLCBjb25zdHJ1Y3Rv
cik7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXQ6OkludGxOdW1iZXJGb3JtYXQoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CisgICAgCisgICAgbV9jb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGNvbnN0cnVjdG9yKTsK
K30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2VsbCktPkludGxOdW1iZXJGb3JtYXQ6
On5JbnRsTnVtYmVyRm9ybWF0KCk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlh
bGl6ZU51bWJlckZvcm1hdCgvKkpTVmFsdWUgbG9jYWxlLCBKU1ZhbHVlIG9wdGlvbnMqLykKK3sK
KyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBtX251bWJlckZvcm1h
dCA9IHVudW1fb3BlbihVTlVNX0RFRkFVTFQsIE5VTEwsIC0xLCBOVUxMLCBOVUxMLCAmc3RhdHVz
KTsKKyAgICAvLyBUT0RPOiBoYW5kbGUgZXJyb3IKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWQ4MDNkNTM4NGQ4ZTZlMGEyNmQ3
NGU2YWVkNGU4ODAxNGI5MDYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdF9oCisjZGVmaW5lIEludGxO
dW1iZXJGb3JtYXRfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0
aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOworCitjbGFzcyBJbnRsTnVt
YmVyRm9ybWF0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSW50bE51bWJl
ckZvcm1hdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9p
ZCBpbml0aWFsaXplTnVtYmVyRm9ybWF0KC8qSlNWYWx1ZSwgSlNWYWx1ZSovKTsKKworICAgIFVO
dW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9udW1iZXJGb3JtYXQ7CisgICAgfQorCisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
KiBjb25zdHJ1Y3RvcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jb25zdHJ1Y3Rv
ci5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAg
VU51bWJlckZvcm1hdCogbV9udW1iZXJGb3JtYXQ7CisgICAgV3JpdGVCYXJyaWVyPEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcj4gbV9jb25zdHJ1Y3RvcjsKKy8qCisgICAgU3RyaW5nIG1fbG9j
YWxlOworICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKKyAgICBTdHJpbmcgbV9zdHlsZTsK
KyAgICBTdHJpbmcgbV9jdXJyZW5jeTsKKyAgICBTdHJpbmcgbV9jdXJyZW5jeURpc3BsYXk7Cisg
ICAgaW50MzJfdCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOworICAgIGludDMyX3QgbV9taW5pbXVt
RnJhY3Rpb25EaWdpdHM7CisgICAgaW50MzJfdCBtX21heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAg
ICBpbnQzMl90IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOworICAgIGludDMyX3QgbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgYm9vbCBtX3VzZUdyb3VwaW5nOworKi8KK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAv
LyBJbnRsTnVtYmVyRm9ybWF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc0ZTA4MzUxZmM3Y2U3YzllYWQwZThmYzBjNDBhNDc0YmYxZDY4YmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgor
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJMb29rdXAu
aCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOworCit9
CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZudW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IubHV0LmgKK0BiZWdpbiBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvclRhYmxlCisgIHN1
cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JG
dW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0Bl
bmQKKyovCisKK0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlKQoreworICAgIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBudW1iZXJGb3JtYXRQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSog
bnVtYmVyRm9ybWF0UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBB
U0NJSUxpdGVyYWwoIk51bWJlckZvcm1hdCIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJGb3JtYXRQcm90b3R5
cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
UmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxLiBJZiBsb2NhbGVzIGlzIG5vdCBwcm92aWRlZCwgdGhlbiBsZXQg
bG9jYWxlcyBiZSB1bmRlZmluZWQuCisgICAgLy9KU1ZhbHVlIGxvY2FsZXMgPSBleGVjLT5hcmd1
bWVudCgwKTsKKworICAgIC8vIDIuIElmIG9wdGlvbnMgaXMgbm90IHByb3ZpZGVkLCB0aGVuIGxl
dCBvcHRpb25zIGJlIHVuZGVmaW5lZC4KKyAgICAvL0pTVmFsdWUgb3B0aW9ucyA9IGV4ZWMtPmFy
Z3VtZW50KDEpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworCisgICAg
SW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5j
YWxsZWUoKSkpOworCisgICAgLy8gMy4gQ2FsbCB0aGUgSW5pdGlhbGl6ZU51bWJlckZvcm1hdCBh
YnN0cmFjdCBvcGVyYXRpb24gKGRlZmluZWQgaW4gMTEuMS4xLjEpLCBwYXNzaW5nIGFzIGFyZ3Vt
ZW50cyB0aGUgbmV3bHkgY29uc3RydWN0ZWQgb2JqZWN0LCBsb2NhbGVzLCBhbmQgb3B0aW9ucy4K
KyAgICBmb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoLypsb2NhbGVzLCBvcHRpb25zKi8p
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXQpOworfQorCitDb25zdHJ1Y3RU
eXBlIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50bE51bWJlckZvcm1hdDsKKyAgICByZXR1cm4gQ29u
c3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQ7CisgICAgcmV0
dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1
cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIG51bWJlckZv
cm1hdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iq
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVz
T2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKQorICAgIC8vIFRoZSB2YWx1ZSBvZiB0aGUg
bGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCisK
KyAgICAvLyBUT0RPOiBzdXBwb3J0IHRoZSBhcmd1bWVudHMsIGluc3RlYWQgb2YganVzdCByZXR1
cm5pbmcgYWxsCisgICAgLy8gMS4gSWYgb3B0aW9ucyBpcyBub3QgcHJvdmlkZWQsIHRoZW4gbGV0
IG9wdGlvbnMgYmUgdW5kZWZpbmVkLgorICAgIC8vIDIuIExldCBhdmFpbGFibGVMb2NhbGVzIGJl
IHRoZSB2YWx1ZSBvZiB0aGUgW1thdmFpbGFibGVMb2NhbGVzXV0gaW50ZXJuYWwgcHJvcGVydHkg
b2YgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBpbml0aWFsIHZhbHVl
IG9mIEludGwuTnVtYmVyRm9ybWF0LgorICAgIC8vIDMuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJl
IHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdCBhYnN0cmFj
dCBvcGVyYXRpb24gKGRlZmluZWQgaW4gOS4yLjEpIHdpdGggYXJndW1lbnQgbG9jYWxlcy4KKyAg
ICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBTdXBwb3J0ZWRMb2NhbGVz
IGFic3RyYWN0IG9wZXJhdGlvbiAoZGVmaW5lZCBpbiA5LjIuOCkgd2l0aCBhcmd1bWVudHMgYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgYW5kIG9wdGlvbnMuCisKKyAgICBpbnQz
Ml90IGNvdW50ID0gdWxvY19jb3VudEF2YWlsYWJsZSgpOworICAKKyAgICBKU0FycmF5KiByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGNvdW50KTsKKworICAgIGZv
ciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgY29uc3QgY2hhciog
bG9jSWQgPSB1bG9jX2dldEF2YWlsYWJsZShpKTsKKyAgICAgICAgY2hhciB0YWdbVUxPQ19GVUxM
TkFNRV9DQVBBQ0lUWV07CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7
CisgICAgICAgIHVsb2NfdG9MYW5ndWFnZVRhZyhsb2NJZCwgdGFnLCBVTE9DX0ZVTExOQU1FX0NB
UEFDSVRZLCBGQUxTRSwgJmVycm9yKTsKKyAgICAgICAgLy8gVE9ETzogaGFuZGxlIGVycm9yCisg
ICAgICAgIEpTVmFsdWUgdiA9IGpzU3RyaW5nKGV4ZWMsIFN0cmluZyh0YWcpKTsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCB2KTsKKyAgICB9CisgICAgcmVzdWx0LT5z
ZXRMZW5ndGgoZXhlYywgY291bnQpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDgzMmM3ODdkNzg4YWUxODg0NWExMmZm
Zjc3YmFmMzU0N2I4OTMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3JfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYgRU5BQkxF
KElOVEwpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Cit9OworCitJbnRsTnVtYmVyRm9ybWF0KiBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNGdW5jdGlvbiopOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJj
MmE5ZjU5MWMxZjY5NzI3NTc1MDJhODRkMDI0ZGViNDI1YTY0ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgorCisjaWYg
RU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZK
U05vbkZpbmFsT2JqZWN0OjpzX2luZm8sICZudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKSB9OworCisvKiBTb3Vy
Y2UgZm9yIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBudW1iZXJGb3Jt
YXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAgICAgICAgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXQgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIHJlc29sdmVkT3B0aW9ucyAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVu
Y1Jlc29sdmVkT3B0aW9ucyAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyov
CisKK0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZT4odm0uaGVhcCkpIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUq
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZTo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU3RydWN0dXJlKikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK2Jv
b2wgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNP
YmplY3Q+KGV4ZWMsIG51bWJlckZvcm1hdFByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3N0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgdG9Eb3VibGUoSlNWYWx1ZSB2YWx1ZSwgZG91YmxlJiB4
KQoreworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgeCA9IHZhbHVlLmFzSW50
MzIoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHZhbHVlLmlzRG91
YmxlKCkpIHsKKyAgICAgICAgeCA9IHZhbHVlLmFzRG91YmxlKCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAodmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxs
KCktPnR5cGUoKSA9PSBOdW1iZXJPYmplY3RUeXBlKSB7CisgICAgICAgIHggPSBzdGF0aWNfY2Fz
dDxjb25zdCBOdW1iZXJPYmplY3QqPih2YWx1ZS5hc0NlbGwoKSktPmludGVybmFsVmFsdWUoKS5h
c051bWJlcigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKy8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGEgZ2V0dGVyIHJhdGhlciB0aGFuIGEg
dmFsdWUKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQobnVtYmVyKQorCisgICAgSW50bE51bWJlckZvcm1hdCogZm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghZm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKyAgICBpZiAoIXRv
RG91YmxlKGV4ZWMtPmFyZ3VtZW50KDApLCBkb3VibGVWYWx1ZSkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVU51bWJlckZvcm1hdCogbmYgPSBmb3JtYXQtPm51
bWJlckZvcm1hdCgpOworCisgICAgLy8gZmlyc3QgcGFzcywgdG8gZ2V0IHRoZSBzaXplIG5lZWRl
ZAorICAgIGludDMyX3Qgc2l6ZSA9IHVudW1fZm9ybWF0RG91YmxlKG5mLCBkb3VibGVWYWx1ZSwg
TlVMTCwgMCwgTlVMTCwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHNp
emUgKz0gMTsgLy8gcGx1cyB0aGUgbnVsbCB0ZXJtaW5hdG9yCisgICAgICAgIFVDaGFyKiBzdHJp
bmdWYWx1ZSA9IChVQ2hhciopZmFzdE1hbGxvYyhzaXplb2YoVUNoYXIpICogc2l6ZSk7CisKKyAg
ICAgICAgLy8gc2Vjb25kIHBhc3MsIGFjdHVhbGx5IHNldCB0aGUgc3RyaW5nVmFsdWUKKyAgICAg
ICAgdW51bV9mb3JtYXREb3VibGUobmYsIGRvdWJsZVZhbHVlLCBzdHJpbmdWYWx1ZSwgc2l6ZSwg
TlVMTCwgJnN0YXR1cyk7CisgICAgICAgIEpTVmFsdWUgc3RyaW5nID0ganNTdHJpbmcoZXhlYywg
U3RyaW5nKHN0cmluZ1ZhbHVlKSk7CisKKyAgICAgICAgZnJlZShzdHJpbmdWYWx1ZSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nKTsKKyAgICB9CisgICAgLy8gVE9ETzog
aGFuZGxlIGVycm9yCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpCisKKyAgICBJbnRsTnVtYmVy
Rm9ybWF0KiBmb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgSlNWYWx1ZSBvcHRpb25zID0ganNV
bmRlZmluZWQoKTsKKworICAgIC8vIFRPRE86IGNyZWF0ZSBvYmplY3Qgd2l0aCB0aGlzIGluZm9y
bWF0aW9uCisgICAgLy8gZm9ybWF0LT5sb2NhbGUKKyAgICAvLyBmb3JtYXQtPm51bWJlcmluZ1N5
c3RlbQorICAgIC8vIGZvcm1hdC0+c3R5bGUKKyAgICAvLyBmb3JtYXQtPmN1cnJlbmN5CisgICAg
Ly8gZm9ybWF0LT5jdXJyZW5jeURpc3BsYXkKKyAgICAvLyBmb3JtYXQtPm1pbmltdW1JbnRlZ2Vy
RGlnaXRzCisgICAgLy8gZm9ybWF0LT5taW5pbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAvLyBmb3Jt
YXQtPm1heGltdW1GcmFjdGlvbkRpZ2l0cworICAgIC8vIGZvcm1hdC0+bWluaW11bVNpZ25pZmlj
YW50RGlnaXRzCisgICAgLy8gZm9ybWF0LT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMKKyAgICAv
LyBmb3JtYXQtPnVzZUdyb3VwaW5nCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlv
bnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MmNiOTFjNjg5NjRkNzFkYzliZjNiYWJkNjhm
NTRmNTE0YzA5NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKyNk
ZWZpbmUgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZV9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKwor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNl
bmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA3MWQ4OTJiYTQ0NDQxOGJh
ZTc5NjhlMGQ4ZDI2YjZjYmQxNDVkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCisjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsT2JqZWN0KTsKKworfQorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE9iamVjdCkgfTsKKworSW50
bE9iamVjdDo6SW50bE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCitJbnRsT2JqZWN0KiBJbnRs
T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRs
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsT2JqZWN0Pih2
bS5oZWFwKSkgSW50bE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCit2b2lkIEludGxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCitTdHJ1Y3R1cmUqIEludGxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yOTU0ZGVhNjgzMDRkNGMwOGIxYTU1NWE3OWJjZWM4MmRhODIyOTQ2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0
aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEludGxPYmplY3Rf
aAorI2RlZmluZSBJbnRsT2JqZWN0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxPYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBz
dGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5k
aWYgLy8gSW50bE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTRhMGMxY2ZhNmVjMmFjZDM5M2U1NDNmNDI2MGMyYzMy
NmJhMTkzNy4uMjYwNGJmYTdhMmZkYzU3M2MyYjJlMWFkZDZlOTFhYzhlMWYwODFhMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MTMzLDYgKzEzMywxMyBAQAogI2luY2x1ZGUgIldlYWtTZXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIldlYWtTZXRQcm90b3R5cGUuaCIKIAorI2lmIEVOQUJMRShJTlRMKQorI2luY2x1ZGUgIklu
dGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5oIgorI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCiAjaWYgRU5BQkxFKFBST01JU0VT
KQogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9y
LmgiCkBAIC0zMjQsNiArMzMxLDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgIG1fcHJvbWlzZVByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEpTUHJvbWlzZVByb3RvdHlw
ZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX3Byb21pc2VTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9wcm9taXNlUHJvdG90eXBlLmdldCgpKSk7CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQor
ICAgIAorI2lmIEVOQUJMRShJTlRMKQorICAgIG1fbnVtYmVyRm9ybWF0UHJvdG90eXBlLnNldCh2
bSwgdGhpcywgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSkpOworICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnNldCh2bSwg
dGhpcywgSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX251bWJl
ckZvcm1hdFByb3RvdHlwZS5nZXQoKSkpOworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCiAgICAg
bV9wYXJzZUludEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAyLCB2bS5wcm9wZXJ0eU5hbWVzLT5wYXJzZUludC5zdHJpbmcoKSwgZ2xvYmFsRnVuY1Bh
cnNlSW50LCBOb0ludHJpbnNpYykpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wYXJzZUludCwgbV9wYXJzZUludEZ1bmN0aW9uLmdldCgpLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKQEAgLTM3MCw2ICszODIsOSBAQCBtXyAjIyBsb3dlck5hbWUg
IyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YwogI2lmIEVOQUJMRShQUk9NSVNFUykKICAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTUHJvbWlzZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKICNlbmRpZgorI2lmIEVOQUJMRShJ
TlRMKQorICAgIG1fbnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX251bWJlckZvcm1hdFByb3RvdHlwZS5nZXQoKSkpOworI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBE
b250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVj
dG9yLCBEb250RW51bSk7CkBAIC0zNzgsNiArMzkzLDkgQEAgbV8gIyMgbG93ZXJOYW1lICMjIFBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmMKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1f
cHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
SU5UTCkKKyAgICBtX251bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX251bWJlckZvcm1hdENv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAgICAg
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9i
amVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKQEAgLTQxMyw3ICs0MzEsMTAgQEAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3QKICAgICAKICAgICBtX2V2YWxGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbC5zdHJpbmcoKSwgZ2xv
YmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+ZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKLSAgICAK
KworI2lmIEVOQUJMRShJTlRMKQorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9u
dEVudW0pOworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5KU09OLCBKU09OT2JqZWN0OjpjcmVhdGUodm0s
IEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5NYXRoLCBNYXRoT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KSwgRG9udEVudW0pOwogICAgIApAQCAtNzIxLDYgKzc0Miw5IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICNp
ZiBFTkFCTEUoUFJPTUlTRVMpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJv
bWlzZUNvbnN0cnVjdG9yKTsKICNlbmRpZgorI2lmIEVOQUJMRShJTlRMKQorICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdENvbnN0cnVjdG9yKTsKKyNlbmRpZiAv
LyBFTkFCTEUoSU5UTCkKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxH
ZXR0ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVsbFNl
dHRlckZ1bmN0aW9uKTsKQEAgLTc0MCw2ICs3NjQsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAjaWYgRU5B
QkxFKFBST01JU0VTKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VQ
cm90b3R5cGUpOwogI2VuZGlmCisjaWYgRU5BQkxFKElOVEwpCisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CkBAIC03NzgsNiArODA1LDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlU3RydWN0dXJlKTsKICNlbmRpZiAvLyBFTkFC
TEUoUFJPTUlTRVMpCiAKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQorCiAjZGVmaW5lIFZJU0lUX1NJTVBMRV9UWVBFKENhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHBy
b3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUpOyBcCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlKTsgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYWUx
MTM4N2U0OTRlYTU0MWY5NTU5NDAxNmEyNjRiMmE4MDU4Y2ZhNS4uZDhiNDI0MWYxNmEzOTgxMGZm
MTY2Y2ZlMTUzMGRjZDc4NjliMjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02OSw2ICs2OSwxMiBAQCBjbGFzcyBGdW5jdGlvblBy
b3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNs
YXNzIElucHV0Q3Vyc29yOworY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3I7CitjbGFzcyBJ
bnRsQ29sbGF0b3JQcm90b3R5cGU7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cjsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKK2NsYXNzIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CiBjbGFz
cyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU7CiBjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvcjsK
IGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKQEAgLTE4Myw2ICsxODksOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1
Y3RvcjsKICNlbmRpZgogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmpl
Y3RDb25zdHJ1Y3RvcjsKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICBXcml0ZUJhcnJpZXI8SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yPiBtX251bWJlckZvcm1hdENvbnN0cnVjdG9yOworI2VuZGlm
IC8vIEVOQUJMRShJTlRMKQogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4g
bV9udWxsR2V0dGVyRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlv
bj4gbV9udWxsU2V0dGVyRnVuY3Rpb247CkBAIC0yMDMsNiArMjEyLDkgQEAgcHJvdGVjdGVkOgog
I2lmIEVOQUJMRShQUk9NSVNFUykKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUHJvdG90eXBl
PiBtX3Byb21pc2VQcm90b3R5cGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICBXcml0
ZUJhcnJpZXI8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZT4gbV9udW1iZXJGb3JtYXRQcm90b3R5
cGU7CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNDQsNiArMjU2LDEwIEBAIHByb3RlY3RlZDoKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb21pc2VTdHJ1Y3R1cmU7CiAjZW5kaWYgLy8g
RU5BQkxFKFBST01JU0VTKQogCisjaWYgRU5BQkxFKElOVEwpCisgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CisjZW5kaWYgLy8gRU5BQkxFKElOVEwp
CisKICNkZWZpbmUgREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBs
b3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgV3JpdGVC
YXJyaWVyPGNhcGl0YWxOYW1lICMjIFByb3RvdHlwZT4gbV8gIyMgbG93ZXJOYW1lICMjIFByb3Rv
dHlwZTsgXAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fICMjIHByb3Blck5hbWUgIyMg
U3RydWN0dXJlOwpAQCAtMzkxLDYgKzQwNyw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUFJPTUlT
RVMpCiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIHByb21pc2VDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFC
TEUoSU5UTCkKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIG51bWJlckZvcm1hdENv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5nZXQo
KTsgfQorI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCiAgICAgTnVsbEdldHRlckZ1bmN0aW9uKiBu
dWxsR2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxHZXR0ZXJGdW5jdGlvbi5n
ZXQoKTsgfQogICAgIE51bGxTZXR0ZXJGdW5jdGlvbiogbnVsbFNldHRlckZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9udWxsU2V0dGVyRnVuY3Rpb24uZ2V0KCk7IH0KQEAgLTQyMiw2ICs0NDEs
OSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFBST01JU0VTKQogICAgIEpTUHJvbWlzZVByb3RvdHlw
ZSogcHJvbWlzZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5n
ZXQoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKElOVEwpCisgICAgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJG
b3JtYXRQcm90b3R5cGUuZ2V0KCk7IH0KKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAogICAgIFN0
cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTQ4
Myw2ICs1MDUsMTAgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVN0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmIC8vIEVO
QUJMRShQUk9NSVNFUykKIAorI2lmIEVOQUJMRShJTlRMKQorICAgIFN0cnVjdHVyZSogbnVtYmVy
Rm9ybWF0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIHJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgKaW5kZXggMTNhZTBhOTFiZDczYWZjYmU4ZDI3ZThiOTI0NmM3MTI0NjIyMGE4Zi4u
NjBhZDExYjA3Y2ZmOWRhZmJmMjFlOTdmZGQwODA1MWJhNGM1YWY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJl
RGVmaW5lcy5oCkBAIC01MzUsNiArNTM1LDEwIEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2ls
bCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAj
ZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTIDAKICNlbmRpZgog
CisjaWYgIWRlZmluZWQoRU5BQkxFX0lOVEwpCisjZGVmaW5lIEVOQUJMRV9JTlRMIDAKKyNlbmRp
ZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfSTE4Tl9BUEkpCiAjZGVmaW5lIEVO
QUJMRV9KQVZBU0NSSVBUX0kxOE5fQVBJIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA0M2Q3MDBl
Y2M2NzdjOGI2MDlhNmE2M2ZiMmMzZjdmNGY4MmNiMjgzLi44YzI1Yjc4YTJiMmU2MjVjYzE5YTgw
NDQ4OTIwMmEwYThiYmU0OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDYgKzExNiw4IEBAIEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEy
MDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCitFTkFCTEVfSU5UTCA9IDsK
KwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1Nf
R0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykp
OwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0g
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKIApAQCAtMjIyLDQgKzIyNCw0IEBAIEVOQUJMRV9G
VExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5BQkxFX0ZUTF9KSVQ7CiAKIEVOQUJMRV9TQVRVUkFU
RURfTEFZT1VUX0FSSVRITUVUSUMgPSBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElD
OwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9M
TElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQp
ICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5B
QkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQo
RU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5H
KSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9V
VCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVW
RUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NT
UzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVf
Q1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFC
TEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFC
TEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJM
RV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FN
RVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05E
QVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJ
RV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
Ul9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAk
KEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcp
ICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVS
UFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVf
TUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAk
KEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VU
SUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVO
QUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElD
X1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5T
UEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJf
QkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhF
U0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxF
X1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9J
Q09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VM
RUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9E
QVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJH
TCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJf
U09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQo
RU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVO
QUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVf
VklERU9fUFJFU0VOVEFUSU9OX01PREUpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0Rf
VFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFC
TEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5B
QkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VT
Nl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChF
TkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1Nf
QU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQo
RU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAk
KEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikg
JChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVf
Q1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09S
X1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFT
SEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFf
VFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVf
RU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJ
TFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJP
VFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMp
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5f
V09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQo
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hf
RVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5B
QkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5L
X1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQ
VCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09S
X1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdB
VE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJ
VF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFC
TEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFV
RVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVT
T0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NT
U19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFN
U19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQo
RU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFC
TEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJ
TykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkg
JChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9T
QVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNDNkNzAwZWNjNjc3YzhiNjA5YTZhNjNmYjJjM2Y3
ZjRmODJjYjI4My4uOGMyNWI3OGEyYjJlNjI1Y2MxOWE4MDQ0ODkyMDJhMGE4YmJlNDhiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTExNiw2ICsxMTYsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVDsKIAorRU5BQkxFX0lOVEwgPSA7CisKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lv
c19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFM7CiAKQEAgLTIyMiw0ICsyMjQsNCBAQCBFTkFCTEVfRlRMX0pJVFtzZGs9aXBob25l
b3MqXSA9IEVOQUJMRV9GVExfSklUOwogCiBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1F
VElDID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJ
TkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FW
Rl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9Q
QVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkp
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9T
WU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9O
RVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RF
Q09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RF
VklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19J
TUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxF
X0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NT
X1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVB
SykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1F
TlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVO
VCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05T
VFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5U
UykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dB
TUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9Q
QUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxF
X1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExF
VEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dF
RUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RV
UkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9V
Q0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAk
KEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VS
U09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFW
SUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BE
RktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQo
RU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9S
RVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVf
UkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxF
X0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RS
RUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChF
TkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNU
SU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcp
ICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVO
QUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxF
X1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChF
TkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9B
VURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9V
VCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJM
RV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1df
U0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxF
TUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkg
JChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAk
KEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklM
VEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxf
MikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURf
TEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9S
U19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFC
TEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVO
QUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAk
KEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAk
KEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChF
TkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQo
RU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJM
RV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxF
X0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9D
QUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVf
SU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVf
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FV
RElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVO
VCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVf
TkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZ
KSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJM
RV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZF
TlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJM
RV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUp
ICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVF
UlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQo
RU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9T
VUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVS
VEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExB
VEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVO
VFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dP
UkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklE
RU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1Nf
TUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9S
RVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQo
RU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9B
UklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBi
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IDQzZDcwMGVjYzY3N2M4YjYwOWE2YTYzZmIyYzNmN2Y0ZjgyY2IyODMuLjhjMjViNzhhMmIy
ZTYyNWNjMTlhODA0NDg5MjAyYTBhOGJiZTQ4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNiArMTE2
LDggQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRf
bWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKK0VOQUJM
RV9JTlRMID0gOworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQo
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFM
X1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwogCkBAIC0yMjIsNCArMjI0LDQg
QEAgRU5BQkxFX0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBFTkFCTEVfRlRMX0pJVDsKIAogRU5B
QkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZT1VU
X0FSSVRITUVUSUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZF
UkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1F
TlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNf
UEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykg
JChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lO
VEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNf
TEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1Nf
Q09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NT
X0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NF
TEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkg
JChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZ
KSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVM
XzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAk
KEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dF
T0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQo
RU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVf
VElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVO
QUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkg
JChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFC
TEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9S
X0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVS
X0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVO
QUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxF
X1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5B
QkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQ
RUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZ
UFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVO
QUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVO
VCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5B
QkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0sp
ICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQo
RU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQo
RU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRf
UkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZU
TF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElD
KSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMgPSAk
KEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQo
RU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJ
T05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElP
TklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkg
JChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQo
RU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElP
Tl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FE
QVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09S
SUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JF
R0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVT
KSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVO
QUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAk
KEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChF
TkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVO
QUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9S
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikg
JChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9E
RVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9N
X1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklD
RV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRI
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9J
T1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxF
X0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVG
SVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09O
VFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9N
T1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVO
QUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9N
SVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9M
SVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQo
RU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAk
KEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykg
JChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVO
QUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJF
Ul9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVU
T1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJ
TkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZB
TFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykg
JChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hI
Ul9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQp
ICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJF
U0VOVEFUSU9OX01PREUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDgwZDQ4YTkz
OTQ1Y2JjMzcxOTE3MTk0ZjFmZGE2YTFmMTkxN2MxNzYuLjk2ODA0MzNiMDg4MjRjZTVjMzIwNzg5
ZTU3MjFlNjQzNDZhYjJhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJl
cy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTk4LDYg
Kzk4LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAiVG9nZ2xlIG1vbnRoIHR5cGUgPGlucHV0PiBz
dXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FICJUb2dnbGUgdGltZSB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAiVG9n
Z2xlIHdlZWsgdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9JTlRMICJUb2dnbGUgSW50bCBzdXBwb3J0IiBQUklWQVRFIE9G
RikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU9TX0FJUlBMQVkgIlRvZ2dsZSBp
T1MgYWlycGxheSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORyAiVG9nZ2xlIGlPUyB0ZXh0IGF1dG9zaXppbmcg
c3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0pJ
VCAiRW5hYmxlIEp1c3RJblRpbWUgamF2YXNjcmlwdCBzdXBwb3J0IiBQUklWQVRFIE9OKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI4Y2ViZGYz
YTczNzFiYmZiZDQyYjlmYmJiMTkzM2NkMTViZTcxMjkuLjg2ZDgwNzJhZmU3ZjMxOGEzODQ2ZWFl
MGU4MDI2MjA3ZWI3YWQ1ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVy
ICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2Ny
aXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFX0lOVEwgZmxhZworCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBhZGQgZmxhZworCiAyMDE1LTA1LTI2ICBE
YW5hIEJ1cmthcnQgIDxkYnVya2FydEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZXMgY29tcGF0
aWJpbGl0eSBpc3N1ZXMgd2l0aCByZWNlbnQgZGFzaGJvYXJkIGNsZWFudXAuCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggOTY4ZWQ2N2JiZmUxYWJiNjc3NDUwMDQ4
OTY1MWY4NWE1NjI0ZWExMC4uN2EwMjM2NGI0YzEzZmU2Y2Q4NGIwYmI1MjI5YjM3NjNjOWExZjE2
YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtOTEsNiArOTEs
NyBAQCBteSAoCiAgICAgJGlucHV0VHlwZU1vbnRoU3VwcG9ydCwKICAgICAkaW5wdXRUeXBlVGlt
ZVN1cHBvcnQsCiAgICAgJGlucHV0VHlwZVdlZWtTdXBwb3J0LAorICAgICRpbnRsU3VwcG9ydCwK
ICAgICAkaml0U3VwcG9ydCwKICAgICAkbGVnYWN5Tm90aWZpY2F0aW9uc1N1cHBvcnQsCiAgICAg
JGxlZ2FjeVZlbmRvclByZWZpeFN1cHBvcnQsCkBAIC0yODgsNiArMjg5LDkgQEAgbXkgQGZlYXR1
cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLXdlZWsiLCBkZXNjID0+ICJUb2dn
bGUgSW5wdXQgVHlwZSBXZWVrIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5Q
VVRfVFlQRV9XRUVLIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGlucHV0VHlwZVdlZWtTdXBw
b3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAiaW50bCIsIGRlc2MgPT4gIlRvZ2dsZSBJbnRsIHN1
cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5UTCIsIGRlZmF1bHQgPT4gMCwgdmFs
dWUgPT4gXCRpbnRsU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1ub3RpZmlj
YXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkbGVnYWN5Tm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKIApkaWZmIC0tZ2l0
IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDg3ODRkOTY5OTI1YWVlMmZhMjNkY2FjZDg4
YzRmNjFjNDQ0YTdkYmQuLjEzMjk2YTVkNzQyOGY3MTNhZDNhY2NkM2JjYjQ5YzE2NTEyNDY0NzYg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydGVkIHdv
cmsgb24gaW1wbGVtZW50aW5nIHRoZSBJbnRlcm5hdGlvbmFpemF0aW9uIEFQSXMgYnkgYWRkaW5n
IHRoZSBmZWF0dXJlIGZsYWcKKyAgICAgICAgKGRpc2FibGVkIHVudGlsIHJlYWR5KSwgYW5kIGFk
ZGluZyBhIGdsb2JhbCBJbnRsIG9iamVjdCB0byBzZXJ2ZSBhcyB0aGUgbmFtZXNwYWNlLgorICAg
ICAgICBTZWUgc3BlYzogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtNDAy
LzEuMC8KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZTogYWRk
IEVOQUJMRV9JTlRMIGZsYWcKKwogMjAxNS0wNS0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE9wdGlvbnNH
VEsuY21ha2UgYW5kIE5FV1MgZm9yIDIuOS4yIHJlbGVhc2UuCmRpZmYgLS1naXQgYS9XZWJLaXRM
aWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwppbmRleCA2MjYz
NWRiN2ZmNjRjMDgxNTYzYjg5MzE4NjYwYjY4ZWRhM2Q1NzgyLi44NThhMGNkODJlZWQwNmRkNDRm
NGIzYTAzMWM0MDIzOGI4ZDIzOWY0IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFX0lO
VEwgZmxhZworCisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJv
cHM6CisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9w
czoKKwogMjAxNS0wNS0wOSAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAgICAgICBS
ZW1vdmUgdGhlIFBJQ1RVUkVfU0laRVMgYnVpbGQgZmxhZwpkaWZmIC0tZ2l0IGEvV2ViS2l0TGli
cmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzIGIvV2ViS2l0TGli
cmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCmluZGV4IGFlNzk0
OGJmYmM4ZDliNDlhYzExMjAzYTI4MmM1YzgzNjg3OTQ3N2QuLjBkZjk5MDk4YTcyNzg1NDMwZGZm
ZTEwOGE1ZjY1MWYxNzdlYmRjYTMgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMvd2lu
L3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKQEAgLTQ4LDYgKzQ4LDcgQEAKICAg
ICA8RU5BQkxFX0lOUFVUX1RZUEVfTU9OVEggLz4KICAgICA8RU5BQkxFX0lOUFVUX1RZUEVfVElN
RSAvPgogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9XRUVLIC8+CisgICAgPEVOQUJMRV9JTlRMPkVO
QUJMRV9JTlRMPC9FTkFCTEVfSU5UTD4KICAgICA8RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BS
RUZJWEVTPkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUzwvRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTPgogICAgIDxFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMgLz4K
ICAgICA8RU5BQkxFX0xJTktfUFJFRkVUQ0ggLz4KQEAgLTkyLDcgKzkzLDcgQEAKICAgPC9Qcm9w
ZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoRU5BQkxFX0NTUF9ORVhUKTskKEVOQUJMRV9Q
Uk9NSVNFUyk7JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpOyQoRU5BQkxFXzNEX1RS
QU5TRk9STVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyk7JChFTkFCTEVfQUNDRUxF
UkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKTskKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpOyQo
RU5BQkxFX0NBTlZBU19QQVRIKTskKEVOQUJMRV9DQU5WQVNfUFJPWFkpOyQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKTskKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKTskKEVOQUJMRV9D
U1NfSU1BR0VfU0VUKTskKEVOQUJMRV9DU1MzX1RFWFQpOyQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSyk7JChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKTskKEVOQUJMRV9DU1NfU0hBREVS
Uyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKTskKEVOQUJMRV9DU1NfUkVHSU9OUyk7JChFTkFC
TEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpOyQoRU5BQkxFX0NTU19TSEFQRVMpOyQoRU5BQkxFX0NT
U19TSEFQRV9JTlNJREUpOyQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVFJBTlNJ
VElPTlNfVU5QUkVGSVhFRCk7JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpOyQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUik7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFMSVNU
X0VMRU1FTlQpOyQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpOyQoRU5BQkxFX0RFVEFJTFNf
RUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJMRV9ESVJFQ1RPUllf
VVBMT0FEKTskKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUik7JChFTkFCTEVfRU5DUllQ
VEVEX01FRElBX1YyKTskKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpOyQoRU5B
QkxFX0ZJTEVfU1lTVEVNKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7JChFTkFCTEVfR0FNRVBB
RCk7JChFTkFCTEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9U
SFJPVFRMSU5HKTskKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpOyQoRU5BQkxFX0lDT05EQVRBQkFT
RSk7JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUik7
JChFTkFCTEVfSU5QVVRfU1BFRUNIKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpOyQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBVVF9UWVBF
X1RJTUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9MSU5L
X1BSRUZFVENIKTskKEVOQUJMRV9MSU5LX1BSRVJFTkRFUik7JChFTkFCTEVfTUFUSE1MKTskKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5BQkxFX01PVVNFX0NV
UlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfUFJPWElNSVRZX0VW
RU5UUyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKTsk
KEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQoRU5BQkxFX1NIQURPV19ET00pOyQoRU5BQkxFX1NI
QVJFRF9XT1JLRVJTKTskKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpOyQoRU5BQkxFX01F
RElBX1NPVVJDRSk7JChFTkFCTEVfTUVESUFfU1RBVElTVElDUyk7JChFTkFCTEVfU1FMX0RBVEFC
QVNFKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCk7JChF
TkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9TVkdfRk9OVFMpOyQoRU5BQkxF
X1NWR19PVEZfQ09OVkVSVEVSKTskKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKTskKEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkcpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9WSURFT19UUkFDSyk7JChF
TkFCTEVfVklFV19NT0RFX0NTU19NRURJQSk7JChFTkFCTEVfV0VCX0FVRElPKTskKEVOQUJMRV9X
RUJfU09DS0VUUyk7JChFTkFCTEVfV0VCX1RJTUlORyk7JChFTkFCTEVfV0VCR0wpOyQoRU5BQkxF
X1dFQlZUVF9SRUdJT05TKTskKEVOQUJMRV9YSFJfVElNRU9VVCk7JChFTkFCTEVfWFNMVCk7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoRU5BQkxFX0NTUF9ORVhUKTskKEVOQUJMRV9QUk9N
SVNFUyk7JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpOyQoRU5BQkxFXzNEX1RSQU5T
Rk9STVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyk7JChFTkFCTEVfQUNDRUxFUkFU
RURfT1ZFUkZMT1dfU0NST0xMSU5HKTskKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpOyQoRU5B
QkxFX0NBTlZBU19QQVRIKTskKEVOQUJMRV9DQU5WQVNfUFJPWFkpOyQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKTskKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKTskKEVOQUJMRV9DU1Nf
SU1BR0VfU0VUKTskKEVOQUJMRV9DU1MzX1RFWFQpOyQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElP
Tl9CUkVBSyk7JChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKTskKEVOQUJMRV9DU1NfU0hBREVSUyk7
JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKTskKEVOQUJMRV9DU1NfUkVHSU9OUyk7JChFTkFCTEVf
Q1NTX1NFTEVDVE9SU19MRVZFTDQpOyQoRU5BQkxFX0NTU19TSEFQRVMpOyQoRU5BQkxFX0NTU19T
SEFQRV9JTlNJREUpOyQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVFJBTlNJVElP
TlNfVU5QUkVGSVhFRCk7JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpOyQoRU5BQkxFX0NVU1RP
TV9TQ0hFTUVfSEFORExFUik7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFMSVNUX0VM
RU1FTlQpOyQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpOyQoRU5BQkxFX0RFVEFJTFNfRUxF
TUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJMRV9ESVJFQ1RPUllfVVBM
T0FEKTskKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUik7JChFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyKTskKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpOyQoRU5BQkxF
X0ZJTEVfU1lTVEVNKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7JChFTkFCTEVfR0FNRVBBRCk7
JChFTkFCTEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJP
VFRMSU5HKTskKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpOyQoRU5BQkxFX0lDT05EQVRBQkFTRSk7
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUik7JChF
TkFCTEVfSU5QVVRfU1BFRUNIKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpOyQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfSU5UTCk7JChFTkFCTEVfTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKTsk
KEVOQUJMRV9MSU5LX1BSRUZFVENIKTskKEVOQUJMRV9MSU5LX1BSRVJFTkRFUik7JChFTkFCTEVf
TUFUSE1MKTskKEVOQUJMRV9NRVRFUl9FTEVNRU5UKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5B
QkxFX01PVVNFX0NVUlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVf
UFJPWElNSVRZX0VWRU5UUyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX05BVklHQVRPUl9DT05U
RU5UX1VUSUxTKTskKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQoRU5BQkxFX1NIQURPV19ET00p
OyQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKTskKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQp
OyQoRU5BQkxFX01FRElBX1NPVVJDRSk7JChFTkFCTEVfTUVESUFfU1RBVElTVElDUyk7JChFTkFC
TEVfU1FMX0RBVEFCQVNFKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NVQlBJWEVM
X0xBWU9VVCk7JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9TVkdfRk9O
VFMpOyQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKTskKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KTskKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9WSURF
T19UUkFDSyk7JChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSk7JChFTkFCTEVfV0VCX0FVRElP
KTskKEVOQUJMRV9XRUJfU09DS0VUUyk7JChFTkFCTEVfV0VCX1RJTUlORyk7JChFTkFCTEVfV0VC
R0wpOyQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKTskKEVOQUJMRV9YSFJfVElNRU9VVCk7JChFTkFC
TEVfWFNMVCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVt
R3JvdXA+CkBAIC0yODQsNiArMjg1LDEwIEBACiAgICAgICA8VmFsdWU+JChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKTwvVmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZp
cm9ubWVudFZhcmlhYmxlPgogICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNs
dWRlPSJFTkFCTEVfSU5UTCI+CisgICAgICA8VmFsdWU+JChFTkFCTEVfSU5UTCk8L1ZhbHVlPgor
ICAgICAgPEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KKyAg
ICA8L0J1aWxkTWFjcm8+CiAgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTIj4KICAgICAgIDxWYWx1ZT4kKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZF
TkRPUl9QUkVGSVhFUyk8L1ZhbHVlPgogICAgICAgPEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwv
RW52aXJvbm1lbnRWYXJpYWJsZT4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dp
bi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKaW5kZXggNTAwYzRlMTE0
OGQ5MjA4YjUxNWQxOGI1ZDkxZmIxODE0ZjBiNmUwNC4uNGRkMGI5NTJjNjRmYWFjZWQ2M2I1MzNm
NGFmZmEzZjRkOThkOTRlNCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dp
bi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTQ4LDYgKzQ4LDcg
QEAKICAgICA8RU5BQkxFX0lOUFVUX1RZUEVfTU9OVEggLz4KICAgICA8RU5BQkxFX0lOUFVUX1RZ
UEVfVElNRSAvPgogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9XRUVLIC8+CisgICAgPEVOQUJMRV9J
TlRMPkVOQUJMRV9JTlRMPC9FTkFCTEVfSU5UTD4KICAgICA8RU5BQkxFX0xFR0FDWV9DU1NfVkVO
RE9SX1BSRUZJWEVTPkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUzwvRU5BQkxFX0xF
R0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTPgogICAgIDxFTkFCTEVfTEVHQUNZX05PVElGSUNBVElP
TlMgLz4KICAgICA8RU5BQkxFX0xJTktfUFJFRkVUQ0ggLz4KQEAgLTkyLDcgKzkzLDcgQEAKICAg
PC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxl
PgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoRU5BQkxFX0NTUF9ORVhUKTskKEVO
QUJMRV9QUk9NSVNFUyk7JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpOyQoRU5BQkxF
XzNEX1RSQU5TRk9STVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyk7JChFTkFCTEVf
QUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKTskKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1F
TlQpOyQoRU5BQkxFX0NBTlZBU19QQVRIKTskKEVOQUJMRV9DQU5WQVNfUFJPWFkpOyQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKTskKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKTskKEVO
QUJMRV9DU1NfSU1BR0VfU0VUKTskKEVOQUJMRV9DU1MzX1RFWFQpOyQoRU5BQkxFX0NTU19CT1hf
REVDT1JBVElPTl9CUkVBSyk7JChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKTskKEVOQUJMRV9DU1Nf
U0hBREVSUyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKTskKEVOQUJMRV9DU1NfUkVHSU9OUyk7
JChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpOyQoRU5BQkxFX0NTU19TSEFQRVMpOyQoRU5B
QkxFX0NTU19TSEFQRV9JTlNJREUpOyQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNf
VFJBTlNJVElPTlNfVU5QUkVGSVhFRCk7JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpOyQoRU5B
QkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUik7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpOyQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpOyQoRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FEKTskKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUik7JChFTkFCTEVf
RU5DUllQVEVEX01FRElBX1YyKTskKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgp
OyQoRU5BQkxFX0ZJTEVfU1lTVEVNKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7JChFTkFCTEVf
R0FNRVBBRCk7JChFTkFCTEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9U
SU1FUl9USFJPVFRMSU5HKTskKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpOyQoRU5BQkxFX0lDT05E
QVRBQkFTRSk7JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUik7JChFTkFCTEVfSU5QVVRfU1BFRUNIKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpOyQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBV
VF9UWVBFX1RJTUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKTskKEVOQUJM
RV9MSU5LX1BSRUZFVENIKTskKEVOQUJMRV9MSU5LX1BSRVJFTkRFUik7JChFTkFCTEVfTUFUSE1M
KTskKEVOQUJMRV9NRVRFUl9FTEVNRU5UKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5BQkxFX01P
VVNFX0NVUlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfUFJPWElN
SVRZX0VWRU5UUyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VU
SUxTKTskKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQoRU5BQkxFX1NIQURPV19ET00pOyQoRU5B
QkxFX1NIQVJFRF9XT1JLRVJTKTskKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpOyQoRU5B
QkxFX01FRElBX1NPVVJDRSk7JChFTkFCTEVfTUVESUFfU1RBVElTVElDUyk7JChFTkFCTEVfU1FM
X0RBVEFCQVNFKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NVQlBJWEVMX0xBWU9V
VCk7JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9TVkdfRk9OVFMpOyQo
RU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKTskKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKTskKEVO
QUJMRV9URVhUX0FVVE9TSVpJTkcpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9WSURFT19UUkFD
Syk7JChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSk7JChFTkFCTEVfV0VCX0FVRElPKTskKEVO
QUJMRV9XRUJfU09DS0VUUyk7JChFTkFCTEVfV0VCX1RJTUlORyk7JChFTkFCTEVfV0VCR0wpOyQo
RU5BQkxFX1dFQlZUVF9SRUdJT05TKTskKEVOQUJMRV9YSFJfVElNRU9VVCk7JChFTkFCTEVfWFNM
VCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoRU5BQkxFX0NTUF9ORVhUKTskKEVOQUJM
RV9QUk9NSVNFUyk7JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpOyQoRU5BQkxFXzNE
X1RSQU5TRk9STVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyk7JChFTkFCTEVfQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKTskKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQp
OyQoRU5BQkxFX0NBTlZBU19QQVRIKTskKEVOQUJMRV9DQU5WQVNfUFJPWFkpOyQoRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HKTskKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKTskKEVOQUJM
RV9DU1NfSU1BR0VfU0VUKTskKEVOQUJMRV9DU1MzX1RFWFQpOyQoRU5BQkxFX0NTU19CT1hfREVD
T1JBVElPTl9CUkVBSyk7JChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKTskKEVOQUJMRV9DU1NfU0hB
REVSUyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKTskKEVOQUJMRV9DU1NfUkVHSU9OUyk7JChF
TkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpOyQoRU5BQkxFX0NTU19TSEFQRVMpOyQoRU5BQkxF
X0NTU19TSEFQRV9JTlNJREUpOyQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVFJB
TlNJVElPTlNfVU5QUkVGSVhFRCk7JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpOyQoRU5BQkxF
X0NVU1RPTV9TQ0hFTUVfSEFORExFUik7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFM
SVNUX0VMRU1FTlQpOyQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpOyQoRU5BQkxFX0RFVEFJ
TFNfRUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEKTskKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUik7JChFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyKTskKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpOyQo
RU5BQkxFX0ZJTEVfU1lTVEVNKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7JChFTkFCTEVfR0FN
RVBBRCk7JChFTkFCTEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1F
Ul9USFJPVFRMSU5HKTskKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpOyQoRU5BQkxFX0lDT05EQVRB
QkFTRSk7JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
Uik7JChFTkFCTEVfSU5QVVRfU1BFRUNIKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBVVF9U
WVBFX1RJTUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfSU5UTCk7JChFTkFC
TEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJ
T05TKTskKEVOQUJMRV9MSU5LX1BSRUZFVENIKTskKEVOQUJMRV9MSU5LX1BSRVJFTkRFUik7JChF
TkFCTEVfTUFUSE1MKTskKEVOQUJMRV9NRVRFUl9FTEVNRU5UKTskKEVOQUJMRV9NSUNST0RBVEEp
OyQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChF
TkFCTEVfUFJPWElNSVRZX0VWRU5UUyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKTskKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQoRU5BQkxFX1NIQURP
V19ET00pOyQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKTskKEVOQUJMRV9NRURJQV9DT05UUk9MU19T
Q1JJUFQpOyQoRU5BQkxFX01FRElBX1NPVVJDRSk7JChFTkFCTEVfTUVESUFfU1RBVElTVElDUyk7
JChFTkFCTEVfU1FMX0RBVEFCQVNFKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NV
QlBJWEVMX0xBWU9VVCk7JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9T
VkdfRk9OVFMpOyQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKTskKEVOQUJMRV9URU1QTEFURV9F
TEVNRU5UKTskKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJM
RV9WSURFT19UUkFDSyk7JChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSk7JChFTkFCTEVfV0VC
X0FVRElPKTskKEVOQUJMRV9XRUJfU09DS0VUUyk7JChFTkFCTEVfV0VCX1RJTUlORyk7JChFTkFC
TEVfV0VCR0wpOyQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKTskKEVOQUJMRV9YSFJfVElNRU9VVCk7
JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CkBAIC0yODQsNiArMjg1LDEwIEBACiAgICAgICA8VmFsdWU+JChFTkFCTEVf
SU5QVVRfVFlQRV9XRUVLKTwvVmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVl
PC9FbnZpcm9ubWVudFZhcmlhYmxlPgogICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNy
byBJbmNsdWRlPSJFTkFCTEVfSU5UTCI+CisgICAgICA8VmFsdWU+JChFTkFCTEVfSU5UTCk8L1Zh
bHVlPgorICAgICAgPEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJs
ZT4KKyAgICA8L0J1aWxkTWFjcm8+CiAgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0xF
R0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTIj4KICAgICAgIDxWYWx1ZT4kKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUyk8L1ZhbHVlPgogICAgICAgPEVudmlyb25tZW50VmFyaWFibGU+
dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253997</attachid>
            <date>2015-06-01 07:04:38 -0700</date>
            <delta_ts>2015-06-01 22:40:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90906-20150601080417.patch</filename>
            <type>text/plain</type>
            <size>366710</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjRkY2IxNmJiODdhNTkyOTEzODY4NzdkNzNkMjc3NjE4OTAwYjE0Li4xZWMzYzZjY2FiMTUxMzgw
NjY1Y2IzYTg1MzFlNGNlODdlODczOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgSW50bE9iamVjdCBzb3VyY2UgYW5kIGFkZCB0byBwcm9qZWN0IGZpbGVzLiBBZGQg
bWlzc2luZyBpY3UgaGVhZGVycy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBhZGQgSW50
bE9iamVjdC5jcHAKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogYWRkIEVOQUJMRV9JTlRMCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOiBhZGQgSW50bCBuYW1lCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6
IG5ldworICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6IG5ldworICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOiBhZGQgSW50bCBvYmplY3QKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOiBpbml0IEludGwgb2JqZWN0CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwOiB1c2UgaWN1OjpOdW1iZXJGb3JtYXQKKwogMjAxNS0wNS0y
NyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T046IFRoZXNlIHNvcnRpbmcgaWRpb21zIHVzZWQgYnkgUGVhY2VrZWVwZXIgYW5kIEJyb3dzZXJt
YXJrIGFyZSB+MjBYIHNsb3dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyMWIxYmE1Y2ZlMjg0NGRmZDRkODliZjgyNDQwMjY5
YmIzYTZhMzFhLi5mMTg1M2RhYTIxMjYwNDc1OGFkYmY4ZmFjY2MxNWFkM2RlOTlhNWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE1LTA1LTIxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRp
b25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFnCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmlu
ZXMuaDogYWRkIGZsYWcKKwogMjAxNS0wNS0yNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3RyaW5nVmlldyBzaG91bGQgaGF2ZSBmaW5kKFN0cmluZ1ZpZXcs
IHN0YXJ0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOGI2YjkyMjkyNTE1NmEzZTFmOTEwYWIwYzE3MTdjZDY2
MzMyZWE5Li4wNzA3MzNkYmEyY2UzYjVmMzA1YWM2YmE2NzhjZjc5YTU1ZTE4M2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDUtMjEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRl
cm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEVOQUJMRV9JTlRMIGZsYWcgCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2VzIHlldCB0byBiZSB0ZXN0ZWQuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRkIGZsYWcKKwogMjAxNS0wNS0yNyAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBzaG9ydC1jaXJj
dWl0IE1JTUUgdHlwZSBsb29rdXAgd2hlbiBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGU1
MTM3NWU0MzExN2YwNTY1N2Y1M2Q4Y2M2OTY1N2IwYjIyZWEwNDkuLjA3MjA2ZTk5ZDkyYzZlY2Uz
ZWQxZjRhZDFlZWNmMWE4NDNjNGRhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5B
QkxFX0lOVEwgZmxhZworCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6IGFkZCBmbGFnCisKIDIwMTUtMDUtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjExMDQ1NTE+IFVwZGF0ZSBidWls
ZCBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg0MzA2ZDI0ZGQ0OTc0ZGQ1MTkzYTE0OGE4Y2Y1Yzhm
ZWNjMmI4YjcuLmJiM2ExODAyZjFkZWU1YzQ4YmJmNTllNzhkZTY1YzFhNjhkMTk5NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNS0yMSAgQW5keSBWYW5XYWdvbmVyICA8dGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IElu
dGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgRU5BQkxFX0lOVEwgZmxhZworCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IGFkZCBmbGFnCisKIDIwMTUtMDUtMjcgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIGEg
Zm9sbG93LXVwIHJldmlldyBjb21tZW50IGZyb20gRGFyaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMjAzZjU0MGU4NGY1ODNlN2JmOWNlYTAyMTk1ODIzNjRmOWQ1Mjk3
NS4uNjk3YzVhMTMxYjI5ZTViYTcyNTRiM2ViYzJlZjFkNDE2OWQxY2JlYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDcwLDYgKzQ3MCwxMCBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWlu
LmNwcAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0l0ZXJh
dG9yT3BlcmF0aW9ucy5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisgICAg
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bE9iamVjdC5jcHAKICAg
ICBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcAogICAgIHJ1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU0FycmF5LmNwcApAQCAtNjE1LDYgKzYxOSw4IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
KyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9KU09OT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDQz
ZDcwMGVjYzY3N2M4YjYwOWE2YTYzZmIyYzNmN2Y0ZjgyY2IyODMuLmQ0NTM3ODg0NzExMGQyMTI2
YWM4YTUxOTNhYWFlMWU0M2M5YWJlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTEx
Niw2ICsxMTYsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEw
MDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsK
IAorRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKKwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5U
RVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsK
IApAQCAtMjIyLDQgKzIyNCw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5B
QkxFX0ZUTF9KSVQ7CiAKIEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMgPSBFTkFC
TEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05T
KSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChF
TkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5B
QkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBU
QVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lP
TlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAk
KEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVO
QUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChF
TkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBS
RUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJ
TUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9D
T05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMp
ICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVO
QUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01F
VEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUp
ICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdD
T05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJ
TikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJP
WElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9U
QSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVU
T0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9O
X01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9M
TF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkg
JChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
T1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19U
UkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQo
RU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVX
X01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVO
QUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJM
RV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRF
RF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwor
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
ICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQo
RU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJM
RV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChF
TkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQo
RU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJ
T04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkg
JChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RF
WFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RP
TV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9O
VF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJB
U0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0Up
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9Q
T1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFC
TEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5B
QkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVf
UkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFC
TEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BF
RUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5B
QkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFC
TEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykg
JChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChF
TkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9S
RUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRM
X0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMp
ICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZmJhOTEwNjRkYTM4MWM5MjJlODg0NmYxOWMxMjhj
MzA1ZmMwODhiMy4uNjIwZmY0NWYyNWZlNzYwMjMyZjZkNGE1MGM0YzJhZTViMWY0Njc5YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQxLDYgKzQxLDgg
QEAgYWxsIDogXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQu
aCBcCiAgICAgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQu
aCBcCiAgICAgSlNHbG9iYWxPYmplY3QubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oKaW5kZXggMzZjYzczNzA0YTU4Mjc5ZmZjYjcxOGNiOTQ5OGIzNzljZDJiOWE2
Zi4uMGM4ZWEwNGZlNTk4MGFkYmQzN2I4YTEzNThmYThkNTY2MTMwYTQwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03MjcsNiArNzI3LDcgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0
aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVj
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdG9yT3Bl
cmF0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQVBJ
VmFsdWVXcmFwcGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtMTUzMCw2ICsxNTMxLDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25TdGF0dXMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRpb25zLmgiIC8+CkBAIC0x
ODI3LDQgKzE4MjksNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMi
PgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxCdWlsZEN1c3RvbWl6YXRp
b25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggOTNmZTVlMjY5MDM3NTZiOTVhNzk4
ZmExNzU1YjNkMjM0YzIzYzA1Ni4uYWM0YTk3YzE2ZTFhMTNkMzFkNmM5NmI0ZmFiYTEzYmVkMjlj
MzY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwpAQCAtNjI3LDYgKzYyNyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEludGxPYmplY3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xleGljYWxF
bnZpcm9ubWVudC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC0yNjkxLDYgKzI2OTQsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJdGVyYXRvck9wZXJhdGlvbnMuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW50bE9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xleGlj
YWxFbnZpcm9ubWVudC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpAQCAtNDQ4NSw0ICs0NDkxLDQgQEAKICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0
ZXI+CiAgICAgPC9NQVNNPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGU0ODgzM2M1Yzk4MWYxMDQ3ZmYwN2RlNjY1Mjg0OTYyY2ExNTkwOTIuLjY4NjkyZTI4MjI4
NWQxNjlmZDhhYTBiYWE4ZmI4ZjYxNjc0N2YzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTY1LDExICsxMTY1LDE5IEBACiAJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAv
KiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovOyB9OwogCQk5
RUE1QzdBMTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0aC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAv
KiBCdW5kbGVQYXRoLm1tICovOyB9OwogCQk5RUE1QzdBMjE5MEYwODg3MDA1MDhFQkUgLyogSW5p
dGlhbGl6ZUxMVk1NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNw
cCAqLzsgfTsKKwkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRB
OEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi87IH07CisJCUExMkJCRkY0MUIwNDRBOTgwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAq
LzsgfTsKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0Iy
MTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJC
NDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4
cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNC
MDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBB
Uk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFFNDk2NUQxQjE2
QzFEMjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFNDk2NUIxQjE2QzFEMjAwQ0JDODJEIC8qIElu
dGxOdW1iZXJGb3JtYXQuY3BwICovOyB9OworCQlBMUU0OTY1RTFCMTZDMUQyMDBDQkM4MkQgLyog
SW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFFNDk2NUMxQjE2QzFEMjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuaCAq
LzsgfTsKKwkJQTFFNDk2NUYxQjE2QzFFRjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFFNDk2NUExQjE2QkFDNzAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
ICovOyB9OworCQlBMUU0OTY2MjFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUU0OTY2MDFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgKi87IH07CisJCUExRTQ5NjYzMUIxNkMyMUMwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUU0OTY2MTFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovOyB9OworCQlBMUU0OTY2NTFCMTZDMjQyMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRTQ5NjY0MUIxNkMyNDIwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuY3BwICovOyB9OwogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87
IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4
OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkEx
QjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDEx
MEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwpAQCAtMjkzOCw5ICsyOTQ2
LDE3IEBACiAJCTlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUGF0aC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRs
ZVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVuZGxlUGF0aC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyog
SW5pdGlhbGl6ZUxMVk1NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSW5pdGlhbGl6ZUxMVk1NYWMuY3BwOyBwYXRoID0gbGx2bS9Jbml0aWFsaXplTExWTU1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMkJCRkYxMUIwNDRBOEIwMDY2NEI2
OSAvKiBJbnRsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyQkJGRjMxQjA0NEE5ODAw
NjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50bE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY1QTFCMTZCQUM3MDBDQkM4MkQgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY1QjFCMTZDMUQy
MDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFFNDk2NUMxQjE2QzFEMjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY2MDFCMTZDMjFDMDBDQkM4MkQgLyogSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTFFNDk2NjExQjE2QzIxQzAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUU0OTY2NDFC
MTZDMjQyMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE1MTg4RTBGQjAwMDExMEYx
NCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ0NzQsNiArNDQ5MCwxNCBAQAogCQkJCUZFNEQ1NUI3MUFFNzE2Q0EwMDUy
RTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCAqLywKIAkJCQk3MDExM0Q0OTFBOERCMDkzMDAzODQ4
QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk3MDExM0Q0QTFBOERCMDkzMDAz
ODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggKi8sCisJCQkJQTFFNDk2NUIxQjE2QzFEMjAw
Q0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXQuY3BwICovLAorCQkJCUExRTQ5NjVDMUIxNkMxRDIw
MENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8sCisJCQkJQTFFNDk2NjQxQjE2QzI0MjAw
Q0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFFNDk2
NUExQjE2QkFDNzAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAor
CQkJCUExRTQ5NjYwMUIxNkMyMUMwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcCAqLywKKwkJCQlBMUU0OTY2MTFCMTZDMjFDMDBDQkM4MkQgLyogSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5oICovLAorCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2Jq
ZWN0LmNwcCAqLywKKwkJCQlBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5o
ICovLAogCQkJCTkzQURGQ0U2MENDQkQ3QUMwMEQzMEIwOCAvKiBKU0FycmF5LmNwcCAqLywKIAkJ
CQk5Mzg3NzJFNTAzOEJGRTE5MDA4NjM1Q0UgLyogSlNBcnJheS5oICovLAogCQkJCTBGMkI2NkI0
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyLmNwcCAqLywKQEAgLTU2NDYsNiArNTY3
MCw3IEBACiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTdCQTYxMDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZl
cmlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUU0OTY1RjFCMTZDMUVGMDBDQkM4MkQgLyog
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVGOUIx
NDFBMUQ0M0Y2MDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFk
ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVh
cElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0RjRCNkY0MUEwNUM5NDQwMDVDQUI3NiAv
KiBjcHBfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCkBAIC01NzUyLDYgKzU3NzcsNyBAQAog
CQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJGQzlCRDMxNjY0NERGQjAwODEwRDMzIC8qIENvcGllZEJsb2Nr
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8q
IEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTEx
MiAvKiBDb3BpZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDOEQwMkQxNEEzQzZFMDAw
NTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRTk4
NDExQTg4NjVCNzAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywK
QEAgLTYxMDEsNiArNjEyNyw3IEBACiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJ
VElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAv
KiBKSVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMTE1QUE4MTEyMDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRTQ5NjYzMUIx
NkMyMUMwMENCQzgyRCAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJp
YW50LmggaW4gSGVhZGVycyAqLywKQEAgLTY0MzksNiArNjQ2Niw3IEBACiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkFFNjRBQTEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMUU0OTY1RTFCMTZDMUQyMDBDQkM4MkQgLyogSW50bE51bWJlckZv
cm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIElu
ZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUz
RiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRC
QTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKQEAg
LTcxNjksNiArNzE5Nyw3IEBACiAJCQkJNzBFQzBFQzQxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmlu
Z0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQzBFQzIxQUEw
RDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY3MDI1QTkxNzE0QjBGQTAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMTJCQkZGNDFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZH
T1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFRDE3
MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTVCMTRFRjkwQUQwMEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTcxOTksNiArNzIyOCw3IEBACiAJCQkJMEZEOEEzMkIxN0Q1MUY1NzAwQ0EyQzQw
IC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2Mzk0NDAxNUM3NUYxRDAwNkE1OTdDIC8qIERGR1R5cGVDaGVj
a0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzYxNkMxREIwRjAw
ODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFF
NDk2NjUxQjE2QzI0MjAwQ0JDODJEIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjM0QjE0OTE2RDQyMDEwMDAxQ0RBNUEgLyogREZHVXNlS2lu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTc2NjAxOTZCOEY5RTAwOTEwNTJB
IC8qIERGR0hlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjcsNiArNzM5Nyw3
IEBACiAJCQkJMTQ0MEZDRTQwQTUxRTQ2QjAwMDVGMDYxIC8qIEpTQ2xhc3NSZWYuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZFM0M2MTYxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRS
ZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFFNDk2NjIxQjE2QzIxQzAwQ0JDODJEIC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOTQ5ODIx
QTk3REI5NjAwRTI4OTY2IC8qIEpTQ2F0Y2hTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMkI2NkVCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCBp
biBTb3VyY2VzICovLApAQCAtNzU5Miw2ICs3NjIzLDcgQEAKIAkJCQkwRkEyQzE3QjE3RDdDRjg0
MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2
NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyQjY3MDcxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUExRTQ5NjVEMUIxNkMxRDIwMENCQzgyRCAvKiBJbnRsTnVt
YmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NzBBMTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkM5NTJCOTE5QTI4
QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL2J5dGVzdHJlYW0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9ieXRlc3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI5
ZTA3YTI1ZGNkOWI5NWQ5YTM3YTBiOGE3MmIzNWU2M2ExZmZiOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9ieXRlc3RyZWFtLmgKQEAgLTAsMCAr
MSwyNTIgQEAKKy8vIENvcHlyaWdodCAoQykgMjAwOS0yMDEwLCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCisvLyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorLy8KKy8vIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisvLyBBdXRob3I6IHNhbmpheUBnb29nbGUuY29tIChTYW5qYXkgR2hlbWF3YXQpCisvLwor
Ly8gQWJzdHJhY3QgaW50ZXJmYWNlIHRoYXQgY29uc3VtZXMgYSBzZXF1ZW5jZSBvZiBieXRlcyAo
Qnl0ZVNpbmspLgorLy8KKy8vIFVzZWQgc28gdGhhdCB3ZSBjYW4gd3JpdGUgYSBzaW5nbGUgcGll
Y2Ugb2YgY29kZSB0aGF0IGNhbiBvcGVyYXRlCisvLyBvbiBhIHZhcmlldHkgb2Ygb3V0cHV0IHN0
cmluZyB0eXBlcy4KKy8vCisvLyBWYXJpb3VzIGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGludGVy
ZmFjZSBhcmUgcHJvdmlkZWQ6CisvLyAgIEJ5dGVTaW5rOgorLy8gICAgICBDaGVja2VkQXJyYXlC
eXRlU2luayAgICBXcml0ZSB0byBhIGZsYXQgYXJyYXksIHdpdGggYm91bmRzIGNoZWNraW5nCisv
LyAgICAgIFN0cmluZ0J5dGVTaW5rICAgICAgICAgIFdyaXRlIHRvIGFuIFNUTCBzdHJpbmcKKwor
Ly8gVGhpcyBjb2RlIGlzIGEgY29udHJpYnV0aW9uIG9mIEdvb2dsZSBjb2RlLCBhbmQgdGhlIHN0
eWxlIHVzZWQgaGVyZSBpcworLy8gYSBjb21wcm9taXNlIGJldHdlZW4gdGhlIG9yaWdpbmFsIEdv
b2dsZSBjb2RlIGFuZCB0aGUgSUNVIGNvZGluZyBndWlkZWxpbmVzLgorLy8gRm9yIGV4YW1wbGUs
IGRhdGEgdHlwZXMgYXJlIElDVS1pZmllZCAoc2l6ZV90LGludC0+aW50MzJfdCksCisvLyBhbmQg
QVBJIGNvbW1lbnRzIGRveHlnZW4taWZpZWQsIGJ1dCBmdW5jdGlvbiBuYW1lcyBhbmQgYmVoYXZp
b3IgYXJlCisvLyBhcyBpbiB0aGUgb3JpZ2luYWwsIGlmIHBvc3NpYmxlLgorLy8gQXNzZXJ0aW9u
LXN0eWxlIGVycm9yIGhhbmRsaW5nLCBub3QgYXZhaWxhYmxlIGluIElDVSwgd2FzIGNoYW5nZWQg
dG8KKy8vIHBhcmFtZXRlciAicGlubmluZyIgc2ltaWxhciB0byBVbmljb2RlU3RyaW5nLgorLy8K
Ky8vIEluIGFkZGl0aW9uLCB0aGlzIGlzIG9ubHkgYSBwYXJ0aWFsIHBvcnQgb2YgdGhlIG9yaWdp
bmFsIEdvb2dsZSBjb2RlLAorLy8gbGltaXRlZCB0byB3aGF0IHdhcyBuZWVkZWQgc28gZmFyLiBU
aGUgKG5lYXJseSkgY29tcGxldGUgb3JpZ2luYWwgY29kZQorLy8gaXMgaW4gdGhlIElDVSBzdm4g
cmVwb3NpdG9yeSBhdCBpY3VodG1sL3RydW5rL2Rlc2lnbi9zdHJpbmdzL2NvbnRyaWIKKy8vIChz
ZWUgSUNVIHRpY2tldCA2NzY1LCByMjU1MTcpLgorCisjaWZuZGVmIF9fQllURVNUUkVBTV9IX18K
KyNkZWZpbmUgX19CWVRFU1RSRUFNX0hfXworCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQysr
IEFQSTogSW50ZXJmYWNlIGZvciB3cml0aW5nIGJ5dGVzLCBhbmQgaW1wbGVtZW50YXRpb24gY2xh
c3Nlcy4KKyAqLworCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmlj
b2RlL3VvYmplY3QuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0ZF9zdHJpbmcuaCIKKworVV9OQU1F
U1BBQ0VfQkVHSU4KKworLyoqCisgKiBBIEJ5dGVTaW5rIGNhbiBiZSBmaWxsZWQgd2l0aCBieXRl
cy4KKyAqIEBzdGFibGUgSUNVIDQuMgorICovCitjbGFzcyBVX0NPTU1PTl9BUEkgQnl0ZVNpbmsg
OiBwdWJsaWMgVU1lbW9yeSB7CitwdWJsaWM6CisgIC8qKgorICAgKiBEZWZhdWx0IGNvbnN0cnVj
dG9yLgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIEJ5dGVTaW5rKCkgeyB9CisgIC8q
KgorICAgKiBWaXJ0dWFsIGRlc3RydWN0b3IuCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8K
KyAgdmlydHVhbCB+Qnl0ZVNpbmsoKSB7IH0KKworICAvKioKKyAgICogQXBwZW5kICJieXRlc1sw
LG4tMV0iIHRvIHRoaXMuCisgICAqIEBwYXJhbSBieXRlcyB0aGUgcG9pbnRlciB0byB0aGUgYnl0
ZXMKKyAgICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBieXRlczsgbXVzdCBiZSBub24tbmVnYXRp
dmUKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2aXJ0dWFsIHZvaWQgQXBwZW5kKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQzMl90IG4pID0gMDsKKworICAvKioKKyAgICogUmV0dXJucyBh
IHdyaXRhYmxlIGJ1ZmZlciBmb3IgYXBwZW5kaW5nIGFuZCB3cml0ZXMgdGhlIGJ1ZmZlcidzIGNh
cGFjaXR5IHRvCisgICAqICpyZXN1bHRfY2FwYWNpdHkuIEd1YXJhbnRlZXMgKnJlc3VsdF9jYXBh
Y2l0eT49bWluX2NhcGFjaXR5LgorICAgKiBNYXkgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2Fs
bGVyLW93bmVkIHNjcmF0Y2ggYnVmZmVyIHdoaWNoIG11c3QgaGF2ZQorICAgKiBzY3JhdGNoX2Nh
cGFjaXR5Pj1taW5fY2FwYWNpdHkuCisgICAqIFRoZSByZXR1cm5lZCBidWZmZXIgaXMgb25seSB2
YWxpZCB1bnRpbCB0aGUgbmV4dCBvcGVyYXRpb24KKyAgICogb24gdGhpcyBCeXRlU2luay4KKyAg
ICoKKyAgICogQWZ0ZXIgd3JpdGluZyBhdCBtb3N0ICpyZXN1bHRfY2FwYWNpdHkgYnl0ZXMsIGNh
bGwgQXBwZW5kKCkgd2l0aCB0aGUKKyAgICogcG9pbnRlciByZXR1cm5lZCBmcm9tIHRoaXMgZnVu
Y3Rpb24gYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyAgICogTWFueSBBcHBlbmQo
KSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBhdm9pZCBjb3B5aW5nIGJ5dGVzIGlmIHRoaXMgZnVuY3Rp
b24KKyAgICogcmV0dXJuZWQgYW4gaW50ZXJuYWwgYnVmZmVyLgorICAgKgorICAgKiBQYXJ0aWFs
IHVzYWdlIGV4YW1wbGU6CisgICAqICBpbnQzMl90IGNhcGFjaXR5OworICAgKiAgY2hhciogYnVm
ZmVyID0gc2luay0+R2V0QXBwZW5kQnVmZmVyKC4uLiwgJmNhcGFjaXR5KTsKKyAgICogIC4uLiBX
cml0ZSBuIGJ5dGVzIGludG8gYnVmZmVyLCB3aXRoIG4gPD0gY2FwYWNpdHkuCisgICAqICBzaW5r
LT5BcHBlbmQoYnVmZmVyLCBuKTsKKyAgICogSW4gbWFueSBpbXBsZW1lbnRhdGlvbnMsIHRoYXQg
Y2FsbCB0byBBcHBlbmQgd2lsbCBhdm9pZCBjb3B5aW5nIGJ5dGVzLgorICAgKgorICAgKiBJZiB0
aGUgQnl0ZVNpbmsgYWxsb2NhdGVzIG9yIHJlYWxsb2NhdGVzIGFuIGludGVybmFsIGJ1ZmZlciwg
aXQgc2hvdWxkIHVzZQorICAgKiB0aGUgZGVzaXJlZF9jYXBhY2l0eV9oaW50IGlmIGFwcHJvcHJp
YXRlLgorICAgKiBJZiBhIGNhbGxlciBjYW5ub3QgcHJvdmlkZSBhIHJlYXNvbmFibGUgZ3Vlc3Mg
YXQgdGhlIGRlc2lyZWQgY2FwYWNpdHksCisgICAqIGl0IHNob3VsZCBwYXNzIGRlc2lyZWRfY2Fw
YWNpdHlfaGludD0wLgorICAgKgorICAgKiBJZiBhIG5vbi1zY3JhdGNoIGJ1ZmZlciBpcyByZXR1
cm5lZCwgdGhlIGNhbGxlciBtYXkgb25seSBwYXNzCisgICAqIGEgcHJlZml4IHRvIGl0IHRvIEFw
cGVuZCgpLgorICAgKiBUaGF0IGlzLCBpdCBpcyBub3QgY29ycmVjdCB0byBwYXNzIGFuIGludGVy
aW9yIHBvaW50ZXIgdG8gQXBwZW5kKCkuCisgICAqCisgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uIGFsd2F5cyByZXR1cm5zIHRoZSBzY3JhdGNoIGJ1ZmZlci4KKyAgICoKKyAgICogQHBh
cmFtIG1pbl9jYXBhY2l0eSByZXF1aXJlZCBtaW5pbXVtIGNhcGFjaXR5IG9mIHRoZSByZXR1cm5l
ZCBidWZmZXI7CisgICAqICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBub24tbmVnYXRpdmUK
KyAgICogQHBhcmFtIGRlc2lyZWRfY2FwYWNpdHlfaGludCBkZXNpcmVkIGNhcGFjaXR5IG9mIHRo
ZSByZXR1cm5lZCBidWZmZXI7CisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVz
dCBiZSBub24tbmVnYXRpdmUKKyAgICogQHBhcmFtIHNjcmF0Y2ggZGVmYXVsdCBjYWxsZXItb3du
ZWQgYnVmZmVyCisgICAqIEBwYXJhbSBzY3JhdGNoX2NhcGFjaXR5IGNhcGFjaXR5IG9mIHRoZSBz
Y3JhdGNoIGJ1ZmZlcgorICAgKiBAcGFyYW0gcmVzdWx0X2NhcGFjaXR5IHBvaW50ZXIgdG8gYW4g
aW50ZWdlciB3aGljaCB3aWxsIGJlIHNldCB0byB0aGUKKyAgICogICAgICAgICAgICAgICAgICAg
ICAgICBjYXBhY2l0eSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyCisgICAqIEByZXR1cm4gYSBidWZm
ZXIgd2l0aCAqcmVzdWx0X2NhcGFjaXR5Pj1taW5fY2FwYWNpdHkKKyAgICogQHN0YWJsZSBJQ1Ug
NC4yCisgICAqLworICB2aXJ0dWFsIGNoYXIqIEdldEFwcGVuZEJ1ZmZlcihpbnQzMl90IG1pbl9j
YXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkZXNpcmVk
X2NhcGFjaXR5X2hpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIHNj
cmF0Y2gsIGludDMyX3Qgc2NyYXRjaF9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCogcmVzdWx0X2NhcGFjaXR5KTsKKworICAvKioKKyAgICogRmx1c2gg
aW50ZXJuYWwgYnVmZmVycy4KKyAgICogU29tZSBieXRlIHNpbmtzIHVzZSBpbnRlcm5hbCBidWZm
ZXJzIG9yIHByb3ZpZGUgYnVmZmVyaW5nCisgICAqIGFuZCByZXF1aXJlIGNhbGxpbmcgRmx1c2go
KSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCisgICAqIFRoZSBCeXRlU2luayBzaG91bGQgYmUg
cmVhZHkgZm9yIGZ1cnRoZXIgQXBwZW5kKCkgY2FsbHMgYWZ0ZXIgRmx1c2goKS4KKyAgICogVGhl
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgRmx1c2goKSBkb2VzIG5vdGhpbmcuCisgICAqIEBz
dGFibGUgSUNVIDQuMgorICAgKi8KKyAgdmlydHVhbCB2b2lkIEZsdXNoKCk7CisKK3ByaXZhdGU6
CisgIEJ5dGVTaW5rKGNvbnN0IEJ5dGVTaW5rICYpOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG5vdCBp
bXBsZW1lbnRlZAorICBCeXRlU2luayAmb3BlcmF0b3I9KGNvbnN0IEJ5dGVTaW5rICYpOyAvLyBh
c3NpZ25tZW50IG9wZXJhdG9yIG5vdCBpbXBsZW1lbnRlZAorfTsKKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gU29t
ZSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbnMKKworLyoqIAorICogSW1wbGVtZW50YXRpb24gb2Yg
Qnl0ZVNpbmsgdGhhdCB3cml0ZXMgdG8gYSBmbGF0IGJ5dGUgYXJyYXksCisgKiB3aXRoIGJvdW5k
cy1jaGVja2luZzoKKyAqIFRoaXMgc2luayB3aWxsIG5vdCB3cml0ZSBtb3JlIHRoYW4gY2FwYWNp
dHkgYnl0ZXMgdG8gb3V0YnVmLgorICogSWYgbW9yZSB0aGFuIGNhcGFjaXR5IGJ5dGVzIGFyZSBB
cHBlbmQoKWVkLCB0aGVuIGV4Y2VzcyBieXRlcyBhcmUgaWdub3JlZCwKKyAqIGFuZCBPdmVyZmxv
d2VkKCkgd2lsbCByZXR1cm4gdHJ1ZS4KKyAqIE92ZXJmbG93IGRvZXMgbm90IGNhdXNlIGEgcnVu
dGltZSBlcnJvci4KKyAqIEBzdGFibGUgSUNVIDQuMgorICovCitjbGFzcyBVX0NPTU1PTl9BUEkg
Q2hlY2tlZEFycmF5Qnl0ZVNpbmsgOiBwdWJsaWMgQnl0ZVNpbmsgeworcHVibGljOgorICAvKioK
KyAgICogQ29uc3RydWN0cyBhIEJ5dGVTaW5rIHRoYXQgd2lsbCB3cml0ZSB0byBvdXRidWZbMC4u
Y2FwYWNpdHktMV0uCisgICAqIEBwYXJhbSBvdXRidWYgYnVmZmVyIHRvIHdyaXRlIHRvCisgICAq
IEBwYXJhbSBjYXBhY2l0eSBzaXplIG9mIHRoZSBidWZmZXIKKyAgICogQHN0YWJsZSBJQ1UgNC4y
CisgICAqLworICBDaGVja2VkQXJyYXlCeXRlU2luayhjaGFyKiBvdXRidWYsIGludDMyX3QgY2Fw
YWNpdHkpOworICAvKioKKyAgICogUmV0dXJucyB0aGUgc2luayB0byBpdHMgb3JpZ2luYWwgc3Rh
dGUsIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBidWZmZXIuCisgICAqIFVzZWZ1bCBmb3IgcmV1c2lu
ZyBib3RoIHRoZSBidWZmZXIgYW5kIHRoZSBzaW5rIGZvciBtdWx0aXBsZSBzdHJlYW1zLgorICAg
KiBSZXNldHMgdGhlIHN0YXRlIHRvIE51bWJlck9mQnl0ZXNXcml0dGVuKCk9TnVtYmVyT2ZCeXRl
c0FwcGVuZGVkKCk9MAorICAgKiBhbmQgT3ZlcmZsb3dlZCgpPUZBTFNFLgorICAgKiBAcmV0dXJu
ICp0aGlzCisgICAqIEBkcmFmdCBJQ1UgNC42CisgICAqLworICB2aXJ0dWFsIENoZWNrZWRBcnJh
eUJ5dGVTaW5rJiBSZXNldCgpOworICAvKioKKyAgICogQXBwZW5kICJieXRlc1swLG4tMV0iIHRv
IHRoaXMuCisgICAqIEBwYXJhbSBieXRlcyB0aGUgcG9pbnRlciB0byB0aGUgYnl0ZXMKKyAgICog
QHBhcmFtIG4gdGhlIG51bWJlciBvZiBieXRlczsgbXVzdCBiZSBub24tbmVnYXRpdmUKKyAgICog
QHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2aXJ0dWFsIHZvaWQgQXBwZW5kKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQzMl90IG4pOworICAvKioKKyAgICogUmV0dXJucyBhIHdyaXRhYmxlIGJ1ZmZl
ciBmb3IgYXBwZW5kaW5nIGFuZCB3cml0ZXMgdGhlIGJ1ZmZlcidzIGNhcGFjaXR5IHRvCisgICAq
ICpyZXN1bHRfY2FwYWNpdHkuIEZvciBkZXRhaWxzIHNlZSB0aGUgYmFzZSBjbGFzcyBkb2N1bWVu
dGF0aW9uLgorICAgKiBAcGFyYW0gbWluX2NhcGFjaXR5IHJlcXVpcmVkIG1pbmltdW0gY2FwYWNp
dHkgb2YgdGhlIHJldHVybmVkIGJ1ZmZlcjsKKyAgICogICAgICAgICAgICAgICAgICAgICBtdXN0
IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBAcGFyYW0gZGVzaXJlZF9jYXBhY2l0eV9oaW50IGRlc2ly
ZWQgY2FwYWNpdHkgb2YgdGhlIHJldHVybmVkIGJ1ZmZlcjsKKyAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtdXN0IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBAcGFyYW0gc2NyYXRjaCBk
ZWZhdWx0IGNhbGxlci1vd25lZCBidWZmZXIKKyAgICogQHBhcmFtIHNjcmF0Y2hfY2FwYWNpdHkg
Y2FwYWNpdHkgb2YgdGhlIHNjcmF0Y2ggYnVmZmVyCisgICAqIEBwYXJhbSByZXN1bHRfY2FwYWNp
dHkgcG9pbnRlciB0byBhbiBpbnRlZ2VyIHdoaWNoIHdpbGwgYmUgc2V0IHRvIHRoZQorICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgIGNhcGFjaXR5IG9mIHRoZSByZXR1cm5lZCBidWZmZXIKKyAg
ICogQHJldHVybiBhIGJ1ZmZlciB3aXRoICpyZXN1bHRfY2FwYWNpdHk+PW1pbl9jYXBhY2l0eQor
ICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIHZpcnR1YWwgY2hhciogR2V0QXBwZW5kQnVm
ZmVyKGludDMyX3QgbWluX2NhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IGRlc2lyZWRfY2FwYWNpdHlfaGludCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciogc2NyYXRjaCwgaW50MzJfdCBzY3JhdGNoX2NhcGFjaXR5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiByZXN1bHRfY2FwYWNpdHkpOworICAv
KioKKyAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gdG8g
dGhlIHNpbmsuCisgICAqIEByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGJ1
ZmZlcgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIGludDMyX3QgTnVtYmVyT2ZCeXRl
c1dyaXR0ZW4oKSBjb25zdCB7IHJldHVybiBzaXplXzsgfQorICAvKioKKyAgICogUmV0dXJucyB0
cnVlIGlmIGFueSBieXRlcyB3ZXJlIGRpc2NhcmRlZCwgaS5lLiwgaWYgdGhlcmUgd2FzIGFuCisg
ICAqIGF0dGVtcHQgdG8gd3JpdGUgbW9yZSB0aGFuICdjYXBhY2l0eScgYnl0ZXMuCisgICAqIEBy
ZXR1cm4gVFJVRSBpZiBtb3JlIHRoYW4gJ2NhcGFjaXR5JyBieXRlcyB3ZXJlIEFwcGVuZCgpZWQK
KyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBVQm9vbCBPdmVyZmxvd2VkKCkgY29uc3Qg
eyByZXR1cm4gb3ZlcmZsb3dlZF87IH0KKyAgLyoqCisgICAqIFJldHVybnMgdGhlIG51bWJlciBv
ZiBieXRlcyBhcHBlbmRlZCB0byB0aGUgc2luay4KKyAgICogSWYgT3ZlcmZsb3dlZCgpIHRoZW4g
TnVtYmVyT2ZCeXRlc0FwcGVuZGVkKCk+TnVtYmVyT2ZCeXRlc1dyaXR0ZW4oKQorICAgKiBlbHNl
IHRoZXkgcmV0dXJuIHRoZSBzYW1lIG51bWJlci4KKyAgICogQHJldHVybiBudW1iZXIgb2YgYnl0
ZXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyCisgICAqIEBkcmFmdCBJQ1UgNC42CisgICAqLworICBp
bnQzMl90IE51bWJlck9mQnl0ZXNBcHBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIGFwcGVuZGVkXzsg
fQorcHJpdmF0ZToKKyAgY2hhciogb3V0YnVmXzsKKyAgY29uc3QgaW50MzJfdCBjYXBhY2l0eV87
CisgIGludDMyX3Qgc2l6ZV87CisgIGludDMyX3QgYXBwZW5kZWRfOworICBVQm9vbCBvdmVyZmxv
d2VkXzsKKyAgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsoKTsgLy8vPCBkZWZhdWx0IGNvbnN0cnVjdG9y
IG5vdCBpbXBsZW1lbnRlZCAKKyAgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsoY29uc3QgQ2hlY2tlZEFy
cmF5Qnl0ZVNpbmsgJik7IC8vLzwgY29weSBjb25zdHJ1Y3RvciBub3QgaW1wbGVtZW50ZWQKKyAg
Q2hlY2tlZEFycmF5Qnl0ZVNpbmsgJm9wZXJhdG9yPShjb25zdCBDaGVja2VkQXJyYXlCeXRlU2lu
ayAmKTsgLy8vPCBhc3NpZ25tZW50IG9wZXJhdG9yIG5vdCBpbXBsZW1lbnRlZAorfTsKKworI2lm
IFVfSEFWRV9TVERfU1RSSU5HCisKKy8qKiAKKyAqIEltcGxlbWVudGF0aW9uIG9mIEJ5dGVTaW5r
IHRoYXQgd3JpdGVzIHRvIGEgInN0cmluZyIuCisgKiBUaGUgU3RyaW5nQ2xhc3MgaXMgdXN1YWxs
eSBpbnN0YW50aWF0ZWQgd2l0aCBhIHN0ZDo6c3RyaW5nLgorICogQHN0YWJsZSBJQ1UgNC4yCisg
Ki8KK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPgorY2xhc3MgU3RyaW5nQnl0ZVNpbmsg
OiBwdWJsaWMgQnl0ZVNpbmsgeworIHB1YmxpYzoKKyAgLyoqCisgICAqIENvbnN0cnVjdHMgYSBC
eXRlU2luayB0aGF0IHdpbGwgYXBwZW5kIGJ5dGVzIHRvIHRoZSBkZXN0IHN0cmluZy4KKyAgICog
QHBhcmFtIGRlc3QgcG9pbnRlciB0byBzdHJpbmcgb2JqZWN0IHRvIGFwcGVuZCB0bworICAgKiBA
c3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ0J5dGVTaW5rKFN0cmluZ0NsYXNzKiBkZXN0
KSA6IGRlc3RfKGRlc3QpIHsgfQorICAvKioKKyAgICogQXBwZW5kICJieXRlc1swLG4tMV0iIHRv
IHRoaXMuCisgICAqIEBwYXJhbSBkYXRhIHRoZSBwb2ludGVyIHRvIHRoZSBieXRlcworICAgKiBA
cGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzOyBtdXN0IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBA
c3RhYmxlIElDVSA0LjIKKyAgICovCisgIHZpcnR1YWwgdm9pZCBBcHBlbmQoY29uc3QgY2hhciog
ZGF0YSwgaW50MzJfdCBuKSB7IGRlc3RfLT5hcHBlbmQoZGF0YSwgbik7IH0KKyBwcml2YXRlOgor
ICBTdHJpbmdDbGFzcyogZGVzdF87CisgIFN0cmluZ0J5dGVTaW5rKCk7IC8vLzwgZGVmYXVsdCBj
b25zdHJ1Y3RvciBub3QgaW1wbGVtZW50ZWQgCisgIFN0cmluZ0J5dGVTaW5rKGNvbnN0IFN0cmlu
Z0J5dGVTaW5rICYpOyAvLy88IGNvcHkgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkCisgIFN0
cmluZ0J5dGVTaW5rICZvcGVyYXRvcj0oY29uc3QgU3RyaW5nQnl0ZVNpbmsgJik7IC8vLzwgYXNz
aWdubWVudCBvcGVyYXRvciBub3QgaW1wbGVtZW50ZWQKK307CisKKyNlbmRpZgorCitVX05BTUVT
UEFDRV9FTkQKKworI2VuZGlmICAvLyBfX0JZVEVTVFJFQU1fSF9fCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvcmVwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaWN1L3VuaWNvZGUvcmVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZhYjZmYTEyNzJlMGY2MGE0MTczOWM4
MzFiM2YwNmY5N2M2YTBlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pY3UvdW5pY29kZS9yZXAuaApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1h
Y2hpbmVzIENvcnBvcmF0aW9uIGFuZAorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9u
CisqICAgMTEvMTcvOTkgICAgYWxpdSAgICAgICAgQ3JlYXRpb24uICBQb3J0ZWQgZnJvbSBqYXZh
LiAgTW9kaWZpZWQgdG8KKyogICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjdXJyZW50
IFVuaWNvZGVTdHJpbmcgQVBJLiAgRm9yY2VkCisqICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG8gdXNlIG5hbWUgImhhbmRsZVJlcGxhY2VCZXR3ZWVuIiBiZWNhdXNlCisqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2YgZXhpc3RpbmcgbWV0aG9kcyBpbiBVbmljb2RlU3RyaW5nLgorKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyovCisKKyNpZm5kZWYgUkVQX0gKKyNkZWZpbmUgUkVQX0gKKworI2lu
Y2x1ZGUgInVuaWNvZGUvdW9iamVjdC5oIgorCisvKioKKyAqIFxmaWxlIAorICogXGJyaWVmIEMr
KyBBUEk6IFJlcGxhY2VhYmxlIFN0cmluZworICovCisgCitVX05BTUVTUEFDRV9CRUdJTgorCitj
bGFzcyBVbmljb2RlU3RyaW5nOworCisvKioKKyAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBp
cyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhCisgKiBzdHJpbmcgb2YgY2hh
cmFjdGVycyB0aGF0IHN1cHBvcnRzIHRoZSByZXBsYWNlbWVudCBvZiBhIHJhbmdlIG9mCisgKiBp
dHNlbGYgd2l0aCBhIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycy4gIEl0IGlzIHVzZWQgYnkgQVBJ
cyB0aGF0CisgKiBjaGFuZ2UgYSBwaWVjZSBvZiB0ZXh0IHdoaWxlIHJldGFpbmluZyBtZXRhZGF0
YS4gIE1ldGFkYXRhIGlzIGRhdGEKKyAqIG90aGVyIHRoYW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVy
cyByZXR1cm5lZCBieSBjaGFyMzJBdCgpLiAgT25lCisgKiBleGFtcGxlIG9mIG1ldGFkYXRhIGlz
IHN0eWxlIGF0dHJpYnV0ZXM7IGFub3RoZXIgaXMgYW4gZWRpdAorICogaGlzdG9yeSwgbWFya2lu
ZyBlYWNoIGNoYXJhY3RlciB3aXRoIGFuIGF1dGhvciBhbmQgcmV2aXNpb24gbnVtYmVyLgorICoK
KyAqIDxwPkFuIGltcGxpY2l0IGFzcGVjdCBvZiB0aGUgPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+
IEFQSSBpcyB0aGF0CisgKiBkdXJpbmcgYSByZXBsYWNlIG9wZXJhdGlvbiwgbmV3IGNoYXJhY3Rl
cnMgdGFrZSBvbiB0aGUgbWV0YWRhdGEgb2YKKyAqIHRoZSBvbGQgY2hhcmFjdGVycy4gIEZvciBl
eGFtcGxlLCBpZiB0aGUgc3RyaW5nICJ0aGUgPGI+Ym9sZDwvYj4KKyAqIGZvbnQiIGhhcyByYW5n
ZSAoNCwgOCkgcmVwbGFjZWQgd2l0aCAic3Ryb25nIiwgdGhlbiBpdCBiZWNvbWVzICJ0aGUKKyAq
IDxiPnN0cm9uZzwvYj4gZm9udCIuCisgKgorICogPHA+PGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+
IHNwZWNpZmllcyByYW5nZXMgdXNpbmcgYSBzdGFydAorICogb2Zmc2V0IGFuZCBhIGxpbWl0IG9m
ZnNldC4gIFRoZSByYW5nZSBvZiBjaGFyYWN0ZXJzIHRodXMgc3BlY2lmaWVkCisgKiBpbmNsdWRl
cyB0aGUgY2hhcmFjdGVycyBhdCBvZmZzZXQgc3RhcnQuLmxpbWl0LTEuICBUaGF0IGlzLCB0aGUK
KyAqIHN0YXJ0IG9mZnNldCBpcyBpbmNsdXNpdmUsIGFuZCB0aGUgbGltaXQgb2Zmc2V0IGlzIGV4
Y2x1c2l2ZS4KKyAqCisgKiA8cD48Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gYWxzbyBpbmNsdWRl
cyBBUEkgdG8gYWNjZXNzIGNoYXJhY3RlcnMKKyAqIGluIHRoZSBzdHJpbmc6IDxjb2RlPmxlbmd0
aCgpPC9jb2RlPiwgPGNvZGU+Y2hhckF0KCk8L2NvZGU+LAorICogPGNvZGU+Y2hhcjMyQXQoKTwv
Y29kZT4sIGFuZCA8Y29kZT5leHRyYWN0QmV0d2VlbigpPC9jb2RlPi4KKyAqCisgKiA8cD5Gb3Ig
YSBzdWJjbGFzcyB0byBzdXBwb3J0IG1ldGFkYXRhLCB0eXBpY2FsIGJlaGF2aW9yIG9mCisgKiA8
Y29kZT5yZXBsYWNlKCk8L2NvZGU+IGlzIHRoZSBmb2xsb3dpbmc6CisgKiA8dWw+CisgKiAgIDxs
aT5TZXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBuZXcgdGV4dCB0byB0aGUgbWV0YWRhdGEgb2YgdGhl
IGZpcnN0CisgKiAgIGNoYXJhY3RlciByZXBsYWNlZDwvbGk+CisgKiAgIDxsaT5JZiBubyBjaGFy
YWN0ZXJzIGFyZSByZXBsYWNlZCwgdXNlIHRoZSBtZXRhZGF0YSBvZiB0aGUKKyAqICAgcHJldmlv
dXMgY2hhcmFjdGVyPC9saT4KKyAqICAgPGxpPklmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGNoYXJh
Y3RlciAoaS5lLiBzdGFydCA9PSAwKSwgdXNlIHRoZQorICogICBmb2xsb3dpbmcgY2hhcmFjdGVy
PC9saT4KKyAqICAgPGxpPklmIHRoZXJlIGlzIG5vIGZvbGxvd2luZyBjaGFyYWN0ZXIgKGkuZS4g
dGhlIHJlcGxhY2VhYmxlIHdhcworICogICBlbXB0eSksIHVzZSBkZWZhdWx0IG1ldGFkYXRhLjxi
cj4KKyAqICAgPGxpPklmIHRoZSBjb2RlIHBvaW50IFUrRkZGRiBpcyBzZWVuLCBpdCBzaG91bGQg
YmUgaW50ZXJwcmV0ZWQgYXMKKyAqICAgYSBzcGVjaWFsIG1hcmtlciBoYXZpbmcgbm8gbWV0YWRh
dGE8bGk+CisgKiAgIDwvbGk+CisgKiA8L3VsPgorICogSWYgdGhpcyBpcyBub3QgdGhlIGJlaGF2
aW9yLCB0aGUgc3ViY2xhc3Mgc2hvdWxkIGRvY3VtZW50IGFueSBkaWZmZXJlbmNlcy4KKyAqIEBh
dXRob3IgQWxhbiBMaXUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitjbGFzcyBVX0NPTU1PTl9B
UEkgUmVwbGFjZWFibGUgOiBwdWJsaWMgVU9iamVjdCB7CisKK3B1YmxpYzoKKyAgICAvKioKKyAg
ICAgKiBEZXN0cnVjdG9yLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZp
cnR1YWwgflJlcGxhY2VhYmxlKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgMTYtYml0IGNvZGUgdW5pdHMgaW4gdGhlIHRleHQuCisgICAgICogQHJldHVybiBudW1i
ZXIgb2YgMTYtYml0IGNvZGUgdW5pdHMgaW4gdGV4dAorICAgICAqIEBzdGFibGUgSUNVIDEuOAor
ICAgICAqLyAKKyAgICBpbmxpbmUgaW50MzJfdCBsZW5ndGgoKSBjb25zdDsKKworICAgIC8qKgor
ICAgICAqIFJldHVybnMgdGhlIDE2LWJpdCBjb2RlIHVuaXQgYXQgdGhlIGdpdmVuIG9mZnNldCBp
bnRvIHRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gaW50ZWdlciBiZXR3ZWVuIDAg
YW5kIDxjb2RlPmxlbmd0aCgpPC9jb2RlPi0xCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJl
dHVybiAxNi1iaXQgY29kZSB1bml0IG9mIHRleHQgYXQgZ2l2ZW4gb2Zmc2V0CisgICAgICogQHN0
YWJsZSBJQ1UgMS44CisgICAgICovCisgICAgaW5saW5lIFVDaGFyIGNoYXJBdChpbnQzMl90IG9m
ZnNldCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSAzMi1iaXQgY29kZSBw
b2ludCBhdCB0aGUgZ2l2ZW4gMTYtYml0IG9mZnNldCBpbnRvCisgICAgICogdGhlIHRleHQuICBU
aGlzIGFzc3VtZXMgdGhlIHRleHQgaXMgc3RvcmVkIGFzIDE2LWJpdCBjb2RlIHVuaXRzCisgICAg
ICogd2l0aCBzdXJyb2dhdGUgcGFpcnMgaW50ZXJtaXhlZC4gIElmIHRoZSBvZmZzZXQgb2YgYSBs
ZWFkaW5nIG9yCisgICAgICogdHJhaWxpbmcgY29kZSB1bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIg
aXMgZ2l2ZW4sIHJldHVybiB0aGUKKyAgICAgKiBjb2RlIHBvaW50IG9mIHRoZSBzdXJyb2dhdGUg
cGFpci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gaW50ZWdlciBiZXR3ZWVuIDAg
YW5kIDxjb2RlPmxlbmd0aCgpPC9jb2RlPi0xCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJl
dHVybiAzMi1iaXQgY29kZSBwb2ludCBvZiB0ZXh0IGF0IGdpdmVuIG9mZnNldAorICAgICAqIEBz
dGFibGUgSUNVIDEuOAorICAgICAqLworICAgIGlubGluZSBVQ2hhcjMyIGNoYXIzMkF0KGludDMy
X3Qgb2Zmc2V0KSBjb25zdDsKKworICAgIC8qKgorICAgICAqIENvcGllcyBjaGFyYWN0ZXJzIGlu
IHRoZSByYW5nZSBbPHR0PnN0YXJ0PC90dD4sIDx0dD5saW1pdDwvdHQ+KSAKKyAgICAgKiBpbnRv
IHRoZSBVbmljb2RlU3RyaW5nIDx0dD50YXJnZXQ8L3R0Pi4KKyAgICAgKiBAcGFyYW0gc3RhcnQg
b2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgICAqIEBw
YXJhbSBsaW1pdCBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3Rl
ciB0bworICAgICAqIGJlIGNvcGllZAorICAgICAqIEBwYXJhbSB0YXJnZXQgVW5pY29kZVN0cmlu
ZyBpbnRvIHdoaWNoIHRvIGNvcHkgY2hhcmFjdGVycy4KKyAgICAgKiBAcmV0dXJuIEEgcmVmZXJl
bmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLwor
ICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0QmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiB0YXJnZXQpIGNvbnN0ID0gMDsKKworICAgIC8q
KgorICAgICAqIFJlcGxhY2VzIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhlIGdp
dmVuIHRleHQuICBJZiB0aGUKKyAgICAgKiBjaGFyYWN0ZXJzIGJlaW5nIHJlcGxhY2VkIGhhdmUg
bWV0YWRhdGEsIHRoZSBuZXcgY2hhcmFjdGVycworICAgICAqIHRoYXQgcmVwbGFjZSB0aGVtIHNo
b3VsZCBiZSBnaXZlbiB0aGUgc2FtZSBtZXRhZGF0YS4KKyAgICAgKgorICAgICAqIDxwPlN1YmNs
YXNzZXMgbXVzdCBlbnN1cmUgdGhhdCBpZiB0aGUgdGV4dCBiZXR3ZWVuIHN0YXJ0IGFuZAorICAg
ICAqIGxpbWl0IGlzIGVxdWFsIHRvIHRoZSByZXBsYWNlbWVudCB0ZXh0LCB0aGF0IHJlcGxhY2Ug
aGFzIG5vCisgICAgICogZWZmZWN0LiBUaGF0IGlzLCBhbnkgbWV0YWRhdGEKKyAgICAgKiBzaG91
bGQgYmUgdW5hZmZlY3RlZC4gSW4gYWRkaXRpb24sIHN1YmNsYXNzZXMgYXJlIGVuY291cmFnZWQg
dG8KKyAgICAgKiBjaGVjayBmb3IgaW5pdGlhbCBhbmQgdHJhaWxpbmcgaWRlbnRpY2FsIGNoYXJh
Y3RlcnMsIGFuZCBtYWtlIGEKKyAgICAgKiBzbWFsbGVyIHJlcGxhY2VtZW50IGlmIHBvc3NpYmxl
LiBUaGlzIHdpbGwgcHJlc2VydmUgYXMgbXVjaAorICAgICAqIG1ldGFkYXRhIGFzIHBvc3NpYmxl
LgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxj
b2RlPjAgPD0gc3RhcnQKKyAgICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxp
bWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAg
ICAgKiA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8g
cmVwbGFjZSBjaGFyYWN0ZXJzIDxjb2RlPnN0YXJ0PC9jb2RlPgorICAgICAqIHRvIDxjb2RlPmxp
bWl0IC0gMTwvY29kZT4gCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZVJlcGxhY2VCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpID0gMDsK
KyAgICAvLyBOb3RlOiBBbGwgb3RoZXIgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIHRha2UgdGhlIG5h
bWVzIG9mCisgICAgLy8gZXhpc3RpbmcgVW5pY29kZVN0cmluZyBtZXRob2RzLiAgVGhpcyBtZXRo
b2QgaXMgdGhlIGV4Y2VwdGlvbi4KKyAgICAvLyBJdCBpcyBuYW1lZCBkaWZmZXJlbnRseSBiZWNh
dXNlIGFsbCByZXBsYWNlIG1ldGhvZHMgb2YKKyAgICAvLyBVbmljb2RlU3RyaW5nIHJldHVybiBh
IFVuaWNvZGVTdHJpbmcmLiAgVGhlICdiZXR3ZWVuJyBpcworICAgIC8vIHJlcXVpcmVkIGluIG9y
ZGVyIHRvIGNvbmZvcm0gdG8gdGhlIFVuaWNvZGVTdHJpbmcgbmFtaW5nCisgICAgLy8gY29udmVu
dGlvbjsgQVBJIHRha2luZyBzdGFydC9sZW5ndGggYXJlIG5hbWVkIDxvcGVyYXRpb24+LCBhbmQK
KyAgICAvLyB0aG9zZSB0YWtpbmcgc3RhcnQvbGltaXQgYXJlIG5hbWVkIDxvcGVyYXRpb25CZXR3
ZWVuPi4gIFRoZQorICAgIC8vICdoYW5kbGUnIGlzIGFkZGVkIGJlY2F1c2UgJ3JlcGxhY2VCZXR3
ZWVuJyBhbmQKKyAgICAvLyAnZG9SZXBsYWNlQmV0d2VlbicgYXJlIGFscmVhZHkgdGFrZW4uCisK
KyAgICAvKioKKyAgICAgKiBDb3BpZXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBvYmplY3QsIHJldGFp
bmluZyBtZXRhZGF0YS4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBv
ciByZW9yZGVyIHN1YnN0cmluZ3MuCisgICAgICogVGhlIGRlc3RpbmF0aW9uIGluZGV4IG11c3Qg
bm90IG92ZXJsYXAgdGhlIHNvdXJjZSByYW5nZS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gc3Rh
cnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9Cisg
ICAgICogbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4
LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0IDw9CisgICAgICogbGVuZ3RoKCk8L2Nv
ZGU+LgorICAgICAqIEBwYXJhbSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBpbmRleC4gIFRoZSBjaGFy
YWN0ZXJzIGZyb20KKyAgICAgKiA8Y29kZT5zdGFydC4ubGltaXQtMTwvY29kZT4gd2lsbCBiZSBj
b3BpZWQgdG8gPGNvZGU+ZGVzdDwvY29kZT4uCisgICAgICogSW1wbGVtZW50YXRpb25zIG9mIHRo
aXMgbWV0aG9kIG1heSBhc3N1bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8CisgICAgICog
ZGVzdCA+PSBsaW1pdDwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisg
ICAgdmlydHVhbCB2b2lkIGNvcHkoaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCwgaW50MzJf
dCBkZXN0KSA9IDA7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBvYmpl
Y3QgY29udGFpbnMgbWV0YWRhdGEuICBJZiBhCisgICAgICogUmVwbGFjZWFibGUgb2JqZWN0IGhh
cyBtZXRhZGF0YSwgY2FsbHMgdG8gdGhlIFJlcGxhY2VhYmxlIEFQSQorICAgICAqIG11c3QgYmUg
bWFkZSBzbyBhcyB0byBwcmVzZXJ2ZSBtZXRhZGF0YS4gIElmIGl0IGRvZXMgbm90LCBjYWxscwor
ICAgICAqIHRvIHRoZSBSZXBsYWNlYWJsZSBBUEkgbWF5IGJlIG9wdGltaXplZCB0byBpbXByb3Zl
IHBlcmZvcm1hbmNlLgorICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMg
dHJ1ZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBvYmplY3QgY29udGFpbnMgbWV0YWRh
dGEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVCb29sIGhh
c01ldGFEYXRhKCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBDbG9uZSB0aGlzIG9iamVjdCwg
YW4gaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiBSZXBsYWNlYWJsZS4KKyAgICAgKiBDbG9uZXMg
Y2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGluIG11bHRpcGxlIHRocmVhZHMuCisgICAgICogSWYg
YSBzdWJjbGFzcyBkb2VzIG5vdCBpbXBsZW1lbnQgY2xvbmUoKSwgb3IgaWYgYW4gZXJyb3Igb2Nj
dXJzLAorICAgICAqIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4KKyAgICAgKiBUaGUgY2xvbmUgZnVu
Y3Rpb25zIGluIGFsbCBzdWJjbGFzc2VzIHJldHVybiBhIHBvaW50ZXIgdG8gYSBSZXBsYWNlYWJs
ZQorICAgICAqIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgZG8gbm90IHN1cHBvcnQgY292YXJpYW50
IChzYW1lLWFzLXRoaXMpCisgICAgICogcmV0dXJuIHR5cGVzOyBjYXN0IHRvIHRoZSBhcHByb3By
aWF0ZSBzdWJjbGFzcyBpZiBuZWNlc3NhcnkuCisgICAgICogVGhlIGNhbGxlciBtdXN0IGRlbGV0
ZSB0aGUgY2xvbmUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgY2xvbmUgb2YgdGhpcyBvYmpl
Y3QKKyAgICAgKgorICAgICAqIEBzZWUgZ2V0RHluYW1pY0NsYXNzSUQKKyAgICAgKiBAc3RhYmxl
IElDVSAyLjYKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFJlcGxhY2VhYmxlICpjbG9uZSgpIGNvbnN0
OworCitwcm90ZWN0ZWQ6CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIFJlcGxhY2VhYmxlKCk7CisKKyAg
ICAvKgorICAgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3Igbm90IGRlY2xhcmVkLiBUaGUgY29tcGls
ZXIgd2lsbCBwcm92aWRlIG9uZQorICAgICAqIHdoaWNoIGRvZXMgbm90aGluZyBzaW5jZSB0aGlz
IGNsYXNzIGRvZXMgbm90IGNvbnRhaW4gYW55IGRhdGEgbWVtYmVycy4KKyAgICAgKiBBUEkvY29k
ZSBjb3ZlcmFnZSBtYXkgc2hvdyB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBhcyBwcmVzZW50IGFu
ZAorICAgICAqIHVudGVzdGVkIC0gaWdub3JlLgorICAgICAqIFN1YmNsYXNzZXMgbmVlZCB0aGlz
IGFzc2lnbm1lbnQgb3BlcmF0b3IgaWYgdGhleSB1c2UgY29tcGlsZXItcHJvdmlkZWQKKyAgICAg
KiBhc3NpZ25tZW50IG9wZXJhdG9ycyBvZiB0aGVpciBvd24uIEFuIGFsdGVybmF0aXZlIHRvIG5v
dCBkZWNsYXJpbmcgb25lCisgICAgICogaGVyZSB3b3VsZCBiZSB0byBkZWNsYXJlIGFuZCBlbXB0
eS1pbXBsZW1lbnQgYSBwcm90ZWN0ZWQgb3IgcHVibGljIG9uZS4KKyAgICBSZXBsYWNlYWJsZSAm
UmVwbGFjZWFibGU6Om9wZXJhdG9yPShjb25zdCBSZXBsYWNlYWJsZSAmKTsKKyAgICAgKi8KKwor
ICAgIC8qKgorICAgICAqIFZpcnR1YWwgdmVyc2lvbiBvZiBsZW5ndGgoKS4KKyAgICAgKiBAc3Rh
YmxlIElDVSAyLjQKKyAgICAgKi8gCisgICAgdmlydHVhbCBpbnQzMl90IGdldExlbmd0aCgpIGNv
bnN0ID0gMDsKKworICAgIC8qKgorICAgICAqIFZpcnR1YWwgdmVyc2lvbiBvZiBjaGFyQXQoKS4K
KyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVDaGFyIGdldENo
YXJBdChpbnQzMl90IG9mZnNldCkgY29uc3QgPSAwOworCisgICAgLyoqCisgICAgICogVmlydHVh
bCB2ZXJzaW9uIG9mIGNoYXIzMkF0KCkuCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICov
CisgICAgdmlydHVhbCBVQ2hhcjMyIGdldENoYXIzMkF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCA9
IDA7Cit9OworCitpbmxpbmUgaW50MzJfdAorUmVwbGFjZWFibGU6Omxlbmd0aCgpIGNvbnN0IHsK
KyAgICByZXR1cm4gZ2V0TGVuZ3RoKCk7Cit9CisKK2lubGluZSBVQ2hhcgorUmVwbGFjZWFibGU6
OmNoYXJBdChpbnQzMl90IG9mZnNldCkgY29uc3QgeworICAgIHJldHVybiBnZXRDaGFyQXQob2Zm
c2V0KTsKK30KKworaW5saW5lIFVDaGFyMzIKK1JlcGxhY2VhYmxlOjpjaGFyMzJBdChpbnQzMl90
IG9mZnNldCkgY29uc3QgeworICAgIHJldHVybiBnZXRDaGFyMzJBdChvZmZzZXQpOworfQorCisv
LyBUaGVyZSBpcyBubyByZXAuY3BwLCBzZWUgdW5pc3RyLmNwcCBmb3IgUmVwbGFjZWFibGUgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb25zLgorCitVX05BTUVTUEFDRV9FTkQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RkX3N0cmluZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3N0ZF9zdHJpbmcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZDQzYjc0NWEwMGM1MzQ1YWU5ODExMjZmYjI5MjM2OGVlNzJiZTM1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3N0ZF9zdHJpbmcuaApAQCAt
MCwwICsxLDc4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqICAgZmlsZSBuYW1lOiAgc3RkX3N0cmluZy5oCisqICAgZW5jb2Rpbmc6
ICAgVVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlv
bjo0CisqCisqICAgY3JlYXRlZCBvbjogMjAwOWZlYjE5CisqICAgY3JlYXRlZCBieTogTWFya3Vz
IFcuIFNjaGVyZXIKKyovCisKKyNpZm5kZWYgX19TVERfU1RSSU5HX0hfXworI2RlZmluZSBfX1NU
RF9TVFJJTkdfSF9fCisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogQ2VudHJh
bCBJQ1UgaGVhZGVyIGZvciBpbmNsdWRpbmcgdGhlIEMrKyBzdGFuZGFyZCAmbHQ7c3RyaW5nJmd0
OworICogICAgICAgICAgICAgICAgIGhlYWRlciBhbmQgZm9yIHJlbGF0ZWQgZGVmaW5pdGlvbnMu
CisgKi8KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisKKy8qKgorICogXGRlZiBVX0hB
VkVfU1REX1NUUklORworICogRGVmaW5lIHdoZXRoZXIgdGhlIHN0YW5kYXJkIEMrKyAoU1RMKSAm
bHQ7c3RyaW5nJmd0OyBoZWFkZXIgaXMgYXZhaWxhYmxlLgorICogQGludGVybmFsCisgKi8KKyNp
Zm5kZWYgVV9IQVZFX1NURF9TVFJJTkcKKyNkZWZpbmUgVV9IQVZFX1NURF9TVFJJTkcgMQorI2Vu
ZGlmCisKKyNpZiBVX0hBVkVfU1REX1NUUklORworCisjaW5jbHVkZSA8c3RyaW5nPgorCisvKioK
KyAqIFxkZWYgVV9TVERfTlMKKyAqIERlZmluZSB0aGUgbmFtZXNwYWNlIHRvIHVzZSBmb3Igc3Rh
bmRhcmQgQysrIChTVEwpIGNsYXNzZXMuCisgKiBFaXRoZXIgc3RkIG9yIGVtcHR5LgorICogQGRy
YWZ0IElDVSA0LjIKKyAqLworCisvKioKKyAqIFxkZWYgVV9TVERfTlNRCisgKiBEZWZpbmUgdGhl
IG5hbWVzcGFjZSBxdWFsaWZpZXIgdG8gdXNlIGZvciBzdGFuZGFyZCBDKysgKFNUTCkgY2xhc3Nl
cy4KKyAqIEVpdGhlciBzdGQ6OiBvciBlbXB0eS4KKyAqIEZvciBleGFtcGxlLAorICogICBVX1NU
RF9OU1Egc3RyaW5nIFN0cmluZ0Zyb21Vbmljb2RlU3RyaW5nKGNvbnN0IFVuaWNvZGVTdHJpbmcg
JnVuaXN0cik7CisgKiBAZHJhZnQgSUNVIDQuMgorICovCisKKy8qKgorICogXGRlZiBVX1NURF9O
U19VU0UKKyAqIFRoaXMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHJlc3Qgb2YgdGhlIGNv
ZGUgdXNlcyB0aGUKKyAqIHN0YW5kYXJkIChTVEwpIG5hbWVzcGFjZS4KKyAqIEVpdGhlciAidXNp
bmcgbmFtZXNwYWNlIHN0ZDsiIG9yIGVtcHR5LgorICogQGRyYWZ0IElDVSA0LjIKKyAqLworI2lm
bmRlZiBVX1NURF9OU1EKKyMgICBpZiBVX0hBVkVfTkFNRVNQQUNFCisjICAgICAgIGRlZmluZSBV
X1NURF9OUyBzdGQKKyMgICAgICAgZGVmaW5lIFVfU1REX05TUSBVX1NURF9OUzo6CisjICAgICAg
IGRlZmluZSBVX1NURF9OU19VU0UgdXNpbmcgbmFtZXNwYWNlIFVfU1REX05TOworIyAgIGVsc2UK
KyMgICAgICAgZGVmaW5lIFVfU1REX05TCisjICAgICAgIGRlZmluZSBVX1NURF9OU1EKKyMgICAg
ICAgZGVmaW5lIFVfU1REX05TX1VTRQorIyAgIGVuZGlmCisjZW5kaWYKKworI2VuZGlmICAvLyBV
X0hBVkVfU1REX1NUUklORworCisjZW5kaWYgIC8vIF9fU1REX1NUUklOR19IX18KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS9zdHJlbnVtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RyZW51bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNDIxOTVh
NGYyY2IyMmMyZDM0NGNiOWY3YmRmODY3YTU3MDQzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3RyZW51bS5oCkBAIC0wLDAgKzEsMjcxIEBA
CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMjAwMi0y
MDA3LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5k
IG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisqLworCisjaWZuZGVmIFNUUkVOVU1fSAorI2RlZmluZSBTVFJFTlVNX0gKKworI2luY2x1ZGUg
InVuaWNvZGUvdW9iamVjdC5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW5pc3RyLmgiCisKKy8qKgor
ICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogU3RyaW5nIEVudW1lcmF0aW9uCisgKi8KKyAK
K1VfTkFNRVNQQUNFX0JFR0lOCisKKy8qKgorICogQmFzZSBjbGFzcyBmb3IgJ3B1cmUnIEMrKyBp
bXBsZW1lbnRhdGlvbnMgb2YgdWVudW0gYXBpLiAgQWRkcyBhCisgKiBtZXRob2QgdGhhdCByZXR1
cm5zIHRoZSBuZXh0IFVuaWNvZGVTdHJpbmcgc2luY2UgaW4gQysrIHRoaXMgY2FuCisgKiBiZSBh
IGNvbW1vbiBzdG9yYWdlIGZvcm1hdCBmb3Igc3RyaW5ncy4KKyAqCisgKiA8cD5UaGUgbW9kZWwg
aXMgdGhhdCB0aGUgZW51bWVyYXRpb24gaXMgb3ZlciBzdHJpbmdzIG1haW50YWluZWQgYnkKKyAq
IGEgJ3NlcnZpY2UuJyAgQXQgYW55IHBvaW50LCB0aGUgc2VydmljZSBtaWdodCBjaGFuZ2UsIGlu
dmFsaWRhdGluZworICogdGhlIGVudW1lcmF0b3IgKHRob3VnaCB0aGlzIGlzIGV4cGVjdGVkIHRv
IGJlIHJhcmUpLiAgVGhlIGl0ZXJhdG9yCisgKiByZXR1cm5zIGFuIGVycm9yIGlmIHRoaXMgaGFz
IG9jY3VycmVkLiAgTGFjayBvZiB0aGUgZXJyb3IgaXMgbm8KKyAqIGd1YXJhbnRlZSB0aGF0IHRo
ZSBzZXJ2aWNlIGRpZG4ndCBjaGFuZ2UgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlCisgKiBjYWxsLCBz
byB0aGUgcmV0dXJuZWQgc3RyaW5nIHN0aWxsIG1pZ2h0IG5vdCBiZSAndmFsaWQnIG9uCisgKiBz
dWJzZXF1ZW50IHVzZS48L3A+CisgKgorICogPHA+U3RyaW5ncyBtYXkgdGFrZSB0aGUgZm9ybSBv
ZiBjb25zdCBjaGFyKiwgY29uc3QgVUNoYXIqLCBvciBjb25zdAorICogVW5pY29kZVN0cmluZyou
ICBUaGUgdHlwZSB5b3UgZ2V0IGlzIGRldGVybWluZSBieSB0aGUgdmFyaWFudCBvZgorICogJ25l
eHQnIHRoYXQgeW91IGNhbGwuICBJbiBnZW5lcmFsIHRoZSBTdHJpbmdFbnVtZXJhdGlvbiBpcwor
ICogb3B0aW1pemVkIGZvciBvbmUgb2YgdGhlc2UgdHlwZXMsIGJ1dCBhbGwgU3RyaW5nRW51bWVy
YXRpb25zIGNhbgorICogcmV0dXJuIGFsbCB0eXBlcy4gIFJldHVybmVkIHN0cmluZ3MgYXJlIGVh
Y2ggdGVybWluYXRlZCB3aXRoIGEgTlVMLgorICogRGVwZW5kaW5nIG9uIHRoZSBzZXJ2aWNlIGRh
dGEsIHRoZXkgbWlnaHQgYWxzbyBpbmNsdWRlIGVtYmVkZGVkIE5VTAorICogY2hhcmFjdGVycywg
c28gQVBJIGlzIHByb3ZpZGVkIHRvIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSB0cnVlCisgKiBsZW5n
dGgsIGNvdW50aW5nIHRoZSBlbWJlZGRlZCBOVUxzIGJ1dCBub3QgY291bnRpbmcgdGhlIHRlcm1p
bmF0aW5nCisgKiBOVUwuPC9wPgorICoKKyAqIDxwPlRoZSBwb2ludGVycyByZXR1cm5lZCBieSBu
ZXh0LCB1bmV4dCwgYW5kIHNuZXh0IGJlY29tZSBpbnZhbGlkCisgKiB1cG9uIGFueSBzdWJzZXF1
ZW50IGNhbGwgdG8gdGhlIGVudW1lcmF0aW9uJ3MgZGVzdHJ1Y3RvciwgbmV4dCwKKyAqIHVuZXh0
LCBzbmV4dCwgb3IgcmVzZXQuPC9wPgorICoKKyAqIElDVSAyLjggYWRkcyBzb21lIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zIGFuZCBoZWxwZXIgZnVuY3Rpb25zCisgKiBmb3Igc3ViY2xhc3Nlcy4K
KyAqCisgKiBAc3RhYmxlIElDVSAyLjQgCisgKi8KK2NsYXNzIFVfQ09NTU9OX0FQSSBTdHJpbmdF
bnVtZXJhdGlvbiA6IHB1YmxpYyBVT2JqZWN0IHsgCitwdWJsaWM6CisgICAgLyoqCisgICAgICog
RGVzdHJ1Y3Rvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICB2aXJ0dWFs
IH5TdHJpbmdFbnVtZXJhdGlvbigpOworCisgICAgLyoqCisgICAgICogQ2xvbmUgdGhpcyBvYmpl
Y3QsIGFuIGluc3RhbmNlIG9mIGEgc3ViY2xhc3Mgb2YgU3RyaW5nRW51bWVyYXRpb24uCisgICAg
ICogQ2xvbmVzIGNhbiBiZSB1c2VkIGNvbmN1cnJlbnRseSBpbiBtdWx0aXBsZSB0aHJlYWRzLgor
ICAgICAqIElmIGEgc3ViY2xhc3MgZG9lcyBub3QgaW1wbGVtZW50IGNsb25lKCksIG9yIGlmIGFu
IGVycm9yIG9jY3VycywKKyAgICAgKiB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuCisgICAgICogVGhl
IGNsb25lIGZ1bmN0aW9ucyBpbiBhbGwgc3ViY2xhc3NlcyByZXR1cm4gYSBiYXNlIGNsYXNzIHBv
aW50ZXIKKyAgICAgKiBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIGRvIG5vdCBzdXBwb3J0IGNvdmFy
aWFudCAoc2FtZS1hcy10aGlzKQorICAgICAqIHJldHVybiB0eXBlczsgY2FzdCB0byB0aGUgYXBw
cm9wcmlhdGUgc3ViY2xhc3MgaWYgbmVjZXNzYXJ5LgorICAgICAqIFRoZSBjYWxsZXIgbXVzdCBk
ZWxldGUgdGhlIGNsb25lLgorICAgICAqCisgICAgICogQHJldHVybiBhIGNsb25lIG9mIHRoaXMg
b2JqZWN0CisgICAgICoKKyAgICAgKiBAc2VlIGdldER5bmFtaWNDbGFzc0lECisgICAgICogQHN0
YWJsZSBJQ1UgMi44CisgICAgICovCisgICAgdmlydHVhbCBTdHJpbmdFbnVtZXJhdGlvbiAqY2xv
bmUoKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIDxwPlJldHVybiB0aGUgbnVtYmVyIG9mIGVs
ZW1lbnRzIHRoYXQgdGhlIGl0ZXJhdG9yIHRyYXZlcnNlcy4gIElmCisgICAgICogdGhlIGl0ZXJh
dG9yIGlzIG91dCBvZiBzeW5jIHdpdGggaXRzIHNlcnZpY2UsIHN0YXR1cyBpcyBzZXQgdG8KKyAg
ICAgKiBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHpl
cm8uPC9wPgorICAgICAqCisgICAgICogPHA+VGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBjaGFu
Z2UgZXhjZXB0IHBvc3NpYmx5IGFzIGEgcmVzdWx0IG9mCisgICAgICogYSBzdWJzZXF1ZW50IGNh
bGwgdG8gcmVzZXQsIG9yIGlmIHRoZSBpdGVyYXRvciBiZWNvbWVzIG91dCBvZiBzeW5jLjwvcD4K
KyAgICAgKgorICAgICAqIDxwPlRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbi4gSXQgY2Fu
IGVuZCB1cCBiZWluZyB2ZXJ5CisgICAgICogZXhwZW5zaXZlIGFzIGFsbCB0aGUgaXRlbXMgbWln
aHQgaGF2ZSB0byBiZSBwcmUtZmV0Y2hlZAorICAgICAqIChkZXBlbmRpbmcgb24gdGhlIHN0b3Jh
Z2UgZm9ybWF0IG9mIHRoZSBkYXRhIGJlaW5nCisgICAgICogdHJhdmVyc2VkKS48L3A+CisgICAg
ICoKKyAgICAgKiBAcGFyYW0gc3RhdHVzIHRoZSBlcnJvciBjb2RlLgorICAgICAqIEByZXR1cm4g
bnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBpdGVyYXRvci4KKyAgICAgKgorICAgICAqIEBzdGFi
bGUgSUNVIDIuNCAqLworICAgIHZpcnR1YWwgaW50MzJfdCBjb3VudChVRXJyb3JDb2RlJiBzdGF0
dXMpIGNvbnN0ID0gMDsKKworICAgIC8qKgorICAgICAqIDxwPlJldHVybnMgdGhlIG5leHQgZWxl
bWVudCBhcyBhIE5VTC10ZXJtaW5hdGVkIGNoYXIqLiAgSWYgdGhlcmUKKyAgICAgKiBhcmUgbm8g
bW9yZSBlbGVtZW50cywgcmV0dXJucyBOVUxMLiAgSWYgdGhlIHJlc3VsdExlbmd0aCBwb2ludGVy
CisgICAgICogaXMgbm90IE5VTEwsIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAobm90IGNvdW50
aW5nIHRoZQorICAgICAqIHRlcm1pbmF0aW5nIE5VTCkgaXMgcmV0dXJuZWQgYXQgdGhhdCBhZGRy
ZXNzLiAgSWYgYW4gZXJyb3IKKyAgICAgKiBzdGF0dXMgaXMgcmV0dXJuZWQsIHRoZSB2YWx1ZSBh
dCByZXN1bHRMZW5ndGggaXMgdW5kZWZpbmVkLjwvcD4KKyAgICAgKgorICAgICAqIDxwPlRoZSBy
ZXR1cm5lZCBwb2ludGVyIGlzIG93bmVkIGJ5IHRoaXMgaXRlcmF0b3IgYW5kIG11c3Qgbm90IGJl
CisgICAgICogZGVsZXRlZCBieSB0aGUgY2FsbGVyLiAgVGhlIHBvaW50ZXIgaXMgdmFsaWQgdW50
aWwgdGhlIG5leHQgY2FsbAorICAgICAqIHRvIG5leHQsIHVuZXh0LCBzbmV4dCwgcmVzZXQsIG9y
IHRoZSBlbnVtZXJhdG9yJ3MgZGVzdHJ1Y3Rvci48L3A+CisgICAgICoKKyAgICAgKiA8cD5JZiB0
aGUgaXRlcmF0b3IgaXMgb3V0IG9mIHN5bmMgd2l0aCBpdHMgc2VydmljZSwgc3RhdHVzIGlzIHNl
dAorICAgICAqIHRvIFVfRU5VTV9PVVRfT0ZfU1lOQ19FUlJPUiBhbmQgTlVMTCBpcyByZXR1cm5l
ZC48L3A+CisgICAgICoKKyAgICAgKiA8cD5JZiB0aGUgbmF0aXZlIHNlcnZpY2Ugc3RyaW5nIGlz
IGEgVUNoYXIqIHN0cmluZywgaXQgaXMKKyAgICAgKiBjb252ZXJ0ZWQgdG8gY2hhciogd2l0aCB0
aGUgaW52YXJpYW50IGNvbnZlcnRlci4gIElmIHRoZQorICAgICAqIGNvbnZlcnNpb24gZmFpbHMg
KGJlY2F1c2UgYSBjaGFyYWN0ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCkgdGhlbgorICAgICAqIHN0
YXR1cyBpcyBzZXQgdG8gVV9JTlZBUklBTlRfQ09OVkVSU0lPTl9FUlJPUiBhbmQgdGhlIHJldHVy
bgorICAgICAqIHZhbHVlIGlzIHVuZGVmaW5lZCAodGhvdWdoIG5vdCBOVUxMKS48L3A+CisgICAg
ICoKKyAgICAgKiBTdGFydGluZyB3aXRoIElDVSAyLjgsIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0
aW9uIGNhbGxzIHNuZXh0KCkKKyAgICAgKiBhbmQgaGFuZGxlcyB0aGUgY29udmVyc2lvbi4KKyAg
ICAgKgorICAgICAqIEBwYXJhbSBzdGF0dXMgdGhlIGVycm9yIGNvZGUuCisgICAgICogQHBhcmFt
IHJlc3VsdExlbmd0aCBhIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgbGVuZ3RoLCBjYW4gYmUgTlVM
TC4KKyAgICAgKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLCBvciBOVUxMLgorICAg
ICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi40IAorICAgICAqLworICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogbmV4dChpbnQzMl90ICpyZXN1bHRMZW5ndGgsIFVFcnJvckNvZGUmIHN0YXR1cyk7CisK
KyAgICAvKioKKyAgICAgKiA8cD5SZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgYXMgYSBOVUwtdGVy
bWluYXRlZCBVQ2hhciouICBJZiB0aGVyZQorICAgICAqIGFyZSBubyBtb3JlIGVsZW1lbnRzLCBy
ZXR1cm5zIE5VTEwuICBJZiB0aGUgcmVzdWx0TGVuZ3RoIHBvaW50ZXIKKyAgICAgKiBpcyBub3Qg
TlVMTCwgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIChub3QgY291bnRpbmcgdGhlCisgICAgICog
dGVybWluYXRpbmcgTlVMKSBpcyByZXR1cm5lZCBhdCB0aGF0IGFkZHJlc3MuICBJZiBhbiBlcnJv
cgorICAgICAqIHN0YXR1cyBpcyByZXR1cm5lZCwgdGhlIHZhbHVlIGF0IHJlc3VsdExlbmd0aCBp
cyB1bmRlZmluZWQuPC9wPgorICAgICAqCisgICAgICogPHA+VGhlIHJldHVybmVkIHBvaW50ZXIg
aXMgb3duZWQgYnkgdGhpcyBpdGVyYXRvciBhbmQgbXVzdCBub3QgYmUKKyAgICAgKiBkZWxldGVk
IGJ5IHRoZSBjYWxsZXIuICBUaGUgcG9pbnRlciBpcyB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxs
CisgICAgICogdG8gbmV4dCwgdW5leHQsIHNuZXh0LCByZXNldCwgb3IgdGhlIGVudW1lcmF0b3In
cyBkZXN0cnVjdG9yLjwvcD4KKyAgICAgKgorICAgICAqIDxwPklmIHRoZSBpdGVyYXRvciBpcyBv
dXQgb2Ygc3luYyB3aXRoIGl0cyBzZXJ2aWNlLCBzdGF0dXMgaXMgc2V0CisgICAgICogdG8gVV9F
TlVNX09VVF9PRl9TWU5DX0VSUk9SIGFuZCBOVUxMIGlzIHJldHVybmVkLjwvcD4KKyAgICAgKgor
ICAgICAqIFN0YXJ0aW5nIHdpdGggSUNVIDIuOCwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24g
Y2FsbHMgc25leHQoKQorICAgICAqIGFuZCBoYW5kbGVzIHRoZSBjb252ZXJzaW9uLgorICAgICAq
CisgICAgICogQHBhcmFtIHN0YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKiBAcGFyYW0gcmVz
dWx0TGVuZ3RoIGEgcG9udGVyIHRvIHJlY2VpdmUgdGhlIGxlbmd0aCwgY2FuIGJlIE5VTEwuCisg
ICAgICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZywgb3IgTlVMTC4KKyAgICAgKgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNCAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIGNvbnN0IFVDaGFy
KiB1bmV4dChpbnQzMl90ICpyZXN1bHRMZW5ndGgsIFVFcnJvckNvZGUmIHN0YXR1cyk7CisKKyAg
ICAvKioKKyAgICAgKiA8cD5SZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgYSBVbmljb2RlU3RyaW5n
Ki4gIElmIHRoZXJlIGFyZSBubworICAgICAqIG1vcmUgZWxlbWVudHMsIHJldHVybnMgTlVMTC48
L3A+CisgICAgICoKKyAgICAgKiA8cD5UaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBvd25lZCBieSB0
aGlzIGl0ZXJhdG9yIGFuZCBtdXN0IG5vdCBiZQorICAgICAqIGRlbGV0ZWQgYnkgdGhlIGNhbGxl
ci4gIFRoZSBwb2ludGVyIGlzIHZhbGlkIHVudGlsIHRoZSBuZXh0IGNhbGwKKyAgICAgKiB0byBu
ZXh0LCB1bmV4dCwgc25leHQsIHJlc2V0LCBvciB0aGUgZW51bWVyYXRvcidzIGRlc3RydWN0b3Iu
PC9wPgorICAgICAqCisgICAgICogPHA+SWYgdGhlIGl0ZXJhdG9yIGlzIG91dCBvZiBzeW5jIHdp
dGggaXRzIHNlcnZpY2UsIHN0YXR1cyBpcyBzZXQKKyAgICAgKiB0byBVX0VOVU1fT1VUX09GX1NZ
TkNfRVJST1IgYW5kIE5VTEwgaXMgcmV0dXJuZWQuPC9wPgorICAgICAqCisgICAgICogQHBhcmFt
IHN0YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUg
c3RyaW5nLCBvciBOVUxMLgorICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi40IAorICAgICAq
LworICAgIHZpcnR1YWwgY29uc3QgVW5pY29kZVN0cmluZyogc25leHQoVUVycm9yQ29kZSYgc3Rh
dHVzKSA9IDA7CisKKyAgICAvKioKKyAgICAgKiA8cD5SZXNldHMgdGhlIGl0ZXJhdG9yLiAgVGhp
cyByZS1lc3RhYmxpc2hlcyBzeW5jIHdpdGggdGhlCisgICAgICogc2VydmljZSBhbmQgcmV3aW5k
cyB0aGUgaXRlcmF0b3IgdG8gc3RhcnQgYXQgdGhlIGZpcnN0CisgICAgICogZWxlbWVudC48L3A+
CisgICAgICoKKyAgICAgKiA8cD5QcmV2aW91cyBwb2ludGVycyByZXR1cm5lZCBieSBuZXh0LCB1
bmV4dCwgb3Igc25leHQgYmVjb21lCisgICAgICogaW52YWxpZCwgYW5kIHRoZSB2YWx1ZSByZXR1
cm5lZCBieSBjb3VudCBtaWdodCBjaGFuZ2UuPC9wPgorICAgICAqCisgICAgICogQHBhcmFtIHN0
YXR1cyB0aGUgZXJyb3IgY29kZS4KKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDIuNCAKKyAg
ICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoVUVycm9yQ29kZSYgc3RhdHVzKSA9IDA7CisK
KyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0aGlzIGVudW1lcmF0aW9uIHRvIG90aGVyIHRvIGNo
ZWNrIGlmIGJvdGggYXJlIGVxdWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3Ro
ZXIgc3RyaW5nIGVudW1lcmF0aW9uIHRvIGNvbXBhcmUgdGhpcyBvYmplY3QgdG8KKyAgICAgKiBA
cmV0dXJuIFRSVUUgaWYgdGhlIGVudW1lcmF0aW9ucyBhcmUgZXF1YWwuIEZBTFNFIGlmIG5vdC4K
KyAgICAgKiBAc3RhYmxlIElDVSAzLjYgCisgICAgICovCisgICAgdmlydHVhbCBVQm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0cmluZ0VudW1lcmF0aW9uJiB0aGF0KWNvbnN0OworICAgIC8qKgorICAg
ICAqIENvbXBhcmVzIHRoaXMgZW51bWVyYXRpb24gdG8gb3RoZXIgdG8gY2hlY2sgaWYgYm90aCBh
cmUgbm90IGVxdWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3RoZXIgc3RyaW5n
IGVudW1lcmF0aW9uIHRvIGNvbXBhcmUgdGhpcyBvYmplY3QgdG8KKyAgICAgKiBAcmV0dXJuIFRS
VUUgaWYgdGhlIGVudW1lcmF0aW9ucyBhcmUgZXF1YWwuIEZBTFNFIGlmIG5vdC4KKyAgICAgKiBA
c3RhYmxlIElDVSAzLjYgCisgICAgICovCisgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0cmluZ0VudW1lcmF0aW9uJiB0aGF0KWNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgLyoq
CisgICAgICogVW5pY29kZVN0cmluZyBmaWVsZCBmb3IgdXNlIHdpdGggZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbnMgYW5kIHN1YmNsYXNzZXMuCisgICAgICogQHN0YWJsZSBJQ1UgMi44CisgICAgICov
CisgICAgVW5pY29kZVN0cmluZyB1bmlzdHI7CisgICAgLyoqCisgICAgICogY2hhciAqIGRlZmF1
bHQgYnVmZmVyIGZvciB1c2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBhbmQgc3ViY2xh
c3Nlcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8KKyAgICBjaGFyIGNoYXJzQnVm
ZmVyWzMyXTsKKyAgICAvKioKKyAgICAgKiBjaGFyICogYnVmZmVyIGZvciB1c2Ugd2l0aCBkZWZh
dWx0IGltcGxlbWVudGF0aW9ucyBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgKiBBbGxvY2F0ZWQgaW4g
Y29uc3RydWN0b3IgYW5kIGluIGVuc3VyZUNoYXJzQ2FwYWNpdHkoKS4KKyAgICAgKiBAc3RhYmxl
IElDVSAyLjgKKyAgICAgKi8KKyAgICBjaGFyICpjaGFyczsKKyAgICAvKioKKyAgICAgKiBDYXBh
Y2l0eSBvZiBjaGFycywgZm9yIHVzZSB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGFuZCBz
dWJjbGFzc2VzLgorICAgICAqIEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIGludDMyX3Qg
Y2hhcnNDYXBhY2l0eTsKKworICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IgZm9y
IHVzZSB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGFuZCBzdWJjbGFzc2VzLgorICAgICAq
IEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIFN0cmluZ0VudW1lcmF0aW9uKCk7CisKKyAg
ICAvKioKKyAgICAgKiBFbnN1cmVzIHRoYXQgY2hhcnMgaXMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMg
dGhlIHJlcXVlc3RlZCBjYXBhY2l0eS4KKyAgICAgKiBGb3IgdXNlIHdpdGggZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbnMgYW5kIHN1YmNsYXNzZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2FwYWNp
dHkgUmVxdWVzdGVkIGNhcGFjaXR5LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGluL291dCBl
cnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDIuOAorICAgICAqLworICAgIHZvaWQgZW5z
dXJlQ2hhcnNDYXBhY2l0eShpbnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICZzdGF0dXMpOwor
CisgICAgLyoqCisgICAgICogQ29udmVydHMgcyB0byBVbmljb2RlIGFuZCBzZXRzIHVuaXN0ciB0
byB0aGUgcmVzdWx0LgorICAgICAqIEZvciB1c2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9u
cyBhbmQgc3ViY2xhc3NlcywKKyAgICAgKiBlc3BlY2lhbGx5IGZvciBpbXBsZW1lbnRhdGlvbnMg
b2Ygc25leHQoKSBpbiB0ZXJtcyBvZiBuZXh0KCkuCisgICAgICogVGhpcyBpcyBwcm92aWRlZCB3
aXRoIGEgaGVscGVyIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9u
CisgICAgICogb2Ygc25leHQoKSB0byBhdm9pZCBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcHMgYmV0
d2VlbiBuZXh0KCkgYW5kIHNuZXh0KCkuCisgICAgICoKKyAgICAgKiBGb3IgZXhhbXBsZToKKyAg
ICAgKiBcY29kZQorICAgICAqIGNvbnN0IFVuaWNvZGVTdHJpbmcqIHNuZXh0KFVFcnJvckNvZGUm
IHN0YXR1cykgeworICAgICAqICAgaW50MzJfdCByZXN1bHRMZW5ndGg9MDsKKyAgICAgKiAgIGNv
bnN0IGNoYXIgKnM9bmV4dCgmcmVzdWx0TGVuZ3RoLCBzdGF0dXMpOworICAgICAqICAgcmV0dXJu
IHNldENoYXJzKHMsIHJlc3VsdExlbmd0aCwgc3RhdHVzKTsKKyAgICAgKiB9CisgICAgICogXGVu
ZGNvZGUKKyAgICAgKgorICAgICAqIEBwYXJhbSBzIFN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8g
VW5pY29kZS4KKyAgICAgKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiB0aGUgc3RyaW5nLgorICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGluL291dCBlcnJvciBjb2RlLgorICAgICAqIEByZXR1cm4g
QSBwb2ludGVyIHRvIHVuaXN0ci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjgKKyAgICAgKi8KKyAg
ICBVbmljb2RlU3RyaW5nICpzZXRDaGFycyhjb25zdCBjaGFyICpzLCBpbnQzMl90IGxlbmd0aCwg
VUVycm9yQ29kZSAmc3RhdHVzKTsKK307CisKK1VfTkFNRVNQQUNFX0VORAorCisvKiBTVFJFTlVN
X0ggKi8KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmlj
b2RlL3N0cmluZ3BpZWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvc3Ry
aW5ncGllY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWQ1YTA1MGVjNzQ3NWU5YmRkZmNjNWEwYTk1MmM5NmYy
M2UyOGJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmlj
b2RlL3N0cmluZ3BpZWNlLmgKQEAgLTAsMCArMSwyMjQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx
MCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworLy8gQ29ycG9yYXRpb24gYW5kIG90
aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBDb3B5cmlnaHQgMjAwMSBhbmQgb253
YXJkcyBHb29nbGUgSW5jLgorLy8gQXV0aG9yOiBTYW5qYXkgR2hlbWF3YXQKKworLy8gVGhpcyBj
b2RlIGlzIGEgY29udHJpYnV0aW9uIG9mIEdvb2dsZSBjb2RlLCBhbmQgdGhlIHN0eWxlIHVzZWQg
aGVyZSBpcworLy8gYSBjb21wcm9taXNlIGJldHdlZW4gdGhlIG9yaWdpbmFsIEdvb2dsZSBjb2Rl
IGFuZCB0aGUgSUNVIGNvZGluZyBndWlkZWxpbmVzLgorLy8gRm9yIGV4YW1wbGUsIGRhdGEgdHlw
ZXMgYXJlIElDVS1pZmllZCAoc2l6ZV90LGludC0+aW50MzJfdCksCisvLyBhbmQgQVBJIGNvbW1l
bnRzIGRveHlnZW4taWZpZWQsIGJ1dCBmdW5jdGlvbiBuYW1lcyBhbmQgYmVoYXZpb3IgYXJlCisv
LyBhcyBpbiB0aGUgb3JpZ2luYWwsIGlmIHBvc3NpYmxlLgorLy8gQXNzZXJ0aW9uLXN0eWxlIGVy
cm9yIGhhbmRsaW5nLCBub3QgYXZhaWxhYmxlIGluIElDVSwgd2FzIGNoYW5nZWQgdG8KKy8vIHBh
cmFtZXRlciAicGlubmluZyIgc2ltaWxhciB0byBVbmljb2RlU3RyaW5nLgorLy8KKy8vIEluIGFk
ZGl0aW9uLCB0aGlzIGlzIG9ubHkgYSBwYXJ0aWFsIHBvcnQgb2YgdGhlIG9yaWdpbmFsIEdvb2ds
ZSBjb2RlLAorLy8gbGltaXRlZCB0byB3aGF0IHdhcyBuZWVkZWQgc28gZmFyLiBUaGUgKG5lYXJs
eSkgY29tcGxldGUgb3JpZ2luYWwgY29kZQorLy8gaXMgaW4gdGhlIElDVSBzdm4gcmVwb3NpdG9y
eSBhdCBpY3VodG1sL3RydW5rL2Rlc2lnbi9zdHJpbmdzL2NvbnRyaWIKKy8vIChzZWUgSUNVIHRp
Y2tldCA2NzY1LCByMjU1MTcpLgorCisjaWZuZGVmIF9fU1RSSU5HUElFQ0VfSF9fCisjZGVmaW5l
IF9fU1RSSU5HUElFQ0VfSF9fCisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTog
U3RyaW5nUGllY2U6IFJlYWQtb25seSBieXRlIHN0cmluZyB3cmFwcGVyIGNsYXNzLgorICovCisK
KyNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5o
IgorI2luY2x1ZGUgInVuaWNvZGUvc3RkX3N0cmluZy5oIgorCisvLyBBcmdoaCEgIEkgd2lzaCBD
KysgbGl0ZXJhbHMgd2VyZSAic3RyaW5nIi4KKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisg
KiBBIHN0cmluZy1saWtlIG9iamVjdCB0aGF0IHBvaW50cyB0byBhIHNpemVkIHBpZWNlIG9mIG1l
bW9yeS4KKyAqCisgKiBXZSBwcm92aWRlIG5vbi1leHBsaWNpdCBzaW5nbGV0b24gY29uc3RydWN0
b3JzIHNvIHVzZXJzIGNhbiBwYXNzCisgKiBpbiBhICJjb25zdCBjaGFyKiIgb3IgYSAic3RyaW5n
IiB3aGVyZXZlciBhICJTdHJpbmdQaWVjZSIgaXMKKyAqIGV4cGVjdGVkLgorICoKKyAqIEZ1bmN0
aW9ucyBvciBtZXRob2RzIG1heSB1c2UgY29uc3QgU3RyaW5nUGllY2UmIHBhcmFtZXRlcnMgdG8g
YWNjZXB0IGVpdGhlcgorICogYSAiY29uc3QgY2hhcioiIG9yIGEgInN0cmluZyIgdmFsdWUgdGhh
dCB3aWxsIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvCisgKiBhIFN0cmluZ1BpZWNlLgorICoK
KyAqIFN5c3RlbWF0aWMgdXNhZ2Ugb2YgU3RyaW5nUGllY2UgaXMgZW5jb3VyYWdlZCBhcyBpdCB3
aWxsIHJlZHVjZSB1bm5lY2Vzc2FyeQorICogY29udmVyc2lvbnMgZnJvbSAiY29uc3QgY2hhcioi
IHRvICJzdHJpbmciIGFuZCBiYWNrIGFnYWluLgorICoKKyAqIEBzdGFibGUgSUNVIDQuMgorICov
CitjbGFzcyBVX0NPTU1PTl9BUEkgU3RyaW5nUGllY2UgOiBwdWJsaWMgVU1lbW9yeSB7CisgcHJp
dmF0ZToKKyAgY29uc3QgY2hhciogICBwdHJfOworICBpbnQzMl90ICAgICAgIGxlbmd0aF87CisK
KyBwdWJsaWM6CisgIC8qKgorICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLCBjcmVhdGVzIGFuIGVt
cHR5IFN0cmluZ1BpZWNlLgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1Bp
ZWNlKCkgOiBwdHJfKE5VTEwpLCBsZW5ndGhfKDApIHsgfQorICAvKioKKyAgICogQ29uc3RydWN0
cyBmcm9tIGEgTlVMLXRlcm1pbmF0ZWQgY29uc3QgY2hhciAqIHBvaW50ZXIuCisgICAqIEBwYXJh
bSBzdHIgYSBOVUwtdGVybWluYXRlZCBjb25zdCBjaGFyICogcG9pbnRlcgorICAgKiBAc3RhYmxl
IElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IGNoYXIqIHN0cik7CisjaWYgVV9I
QVZFX1NURF9TVFJJTkcKKyAgLyoqCisgICAqIENvbnN0cnVjdHMgZnJvbSBhIHN0ZDo6c3RyaW5n
LgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IFVfU1RE
X05TUSBzdHJpbmcmIHN0cikKKyAgICA6IHB0cl8oc3RyLmRhdGEoKSksIGxlbmd0aF8oc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc3RyLnNpemUoKSkpIHsgfQorI2VuZGlmCisgIC8qKgorICAgKiBDb25z
dHJ1Y3RzIGZyb20gYSBjb25zdCBjaGFyICogcG9pbnRlciBhbmQgYSBzcGVjaWZpZWQgbGVuZ3Ro
LgorICAgKiBAcGFyYW0gb2Zmc2V0IGEgY29uc3QgY2hhciAqIHBvaW50ZXIgKG5lZWQgbm90IGJl
IHRlcm1pbmF0ZWQpCisgICAqIEBwYXJhbSBsZW4gdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nOyBt
dXN0IGJlIG5vbi1uZWdhdGl2ZQorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIFN0cmlu
Z1BpZWNlKGNvbnN0IGNoYXIqIG9mZnNldCwgaW50MzJfdCBsZW4pIDogcHRyXyhvZmZzZXQpLCBs
ZW5ndGhfKGxlbikgeyB9CisgIC8qKgorICAgKiBTdWJzdHJpbmcgb2YgYW5vdGhlciBTdHJpbmdQ
aWVjZS4KKyAgICogQHBhcmFtIHggdGhlIG90aGVyIFN0cmluZ1BpZWNlCisgICAqIEBwYXJhbSBw
b3Mgc3RhcnQgcG9zaXRpb24gaW4geDsgbXVzdCBiZSBub24tbmVnYXRpdmUgYW5kIDw9IHgubGVu
Z3RoKCkuCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgU3RyaW5nUGllY2UoY29uc3Qg
U3RyaW5nUGllY2UmIHgsIGludDMyX3QgcG9zKTsKKyAgLyoqCisgICAqIFN1YnN0cmluZyBvZiBh
bm90aGVyIFN0cmluZ1BpZWNlLgorICAgKiBAcGFyYW0geCB0aGUgb3RoZXIgU3RyaW5nUGllY2UK
KyAgICogQHBhcmFtIHBvcyBzdGFydCBwb3NpdGlvbiBpbiB4OyBtdXN0IGJlIG5vbi1uZWdhdGl2
ZSBhbmQgPD0geC5sZW5ndGgoKS4KKyAgICogQHBhcmFtIGxlbiBsZW5ndGggb2YgdGhlIHN1YnN0
cmluZzsKKyAgICogICAgICAgICAgICBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgd2lsbCBiZSBw
aW5uZWQgdG8gYXQgbW9zdCB4Lmxlbmd0aCgpIC0gcG9zLgorICAgKiBAc3RhYmxlIElDVSA0LjIK
KyAgICovCisgIFN0cmluZ1BpZWNlKGNvbnN0IFN0cmluZ1BpZWNlJiB4LCBpbnQzMl90IHBvcywg
aW50MzJfdCBsZW4pOworCisgIC8qKgorICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcG9pbnRlci4g
TWF5IGJlIE5VTEwgaWYgaXQgaXMgZW1wdHkuCisgICAqCisgICAqIGRhdGEoKSBtYXkgcmV0dXJu
IGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aXRoIGVtYmVkZGVkIE5VTHMsIGFuZCB0aGUKKyAgICog
cmV0dXJuZWQgYnVmZmVyIG1heSBvciBtYXkgbm90IGJlIG51bGwgdGVybWluYXRlZC4gIFRoZXJl
Zm9yZSBpdCBpcworICAgKiB0eXBpY2FsbHkgYSBtaXN0YWtlIHRvIHBhc3MgZGF0YSgpIHRvIGEg
cm91dGluZSB0aGF0IGV4cGVjdHMgYSBOVUwKKyAgICogdGVybWluYXRlZCBzdHJpbmcuCisgICAq
IEByZXR1cm4gdGhlIHN0cmluZyBwb2ludGVyCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8K
KyAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHB0cl87IH0KKyAgLyoqCisgICAq
IFJldHVybnMgdGhlIHN0cmluZyBsZW5ndGguIFNhbWUgYXMgbGVuZ3RoKCkuCisgICAqIEByZXR1
cm4gdGhlIHN0cmluZyBsZW5ndGgKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBpbnQz
Ml90IHNpemUoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9CisgIC8qKgorICAgKiBSZXR1cm5z
IHRoZSBzdHJpbmcgbGVuZ3RoLiBTYW1lIGFzIHNpemUoKS4KKyAgICogQHJldHVybiB0aGUgc3Ry
aW5nIGxlbmd0aAorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICovCisgIGludDMyX3QgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQorICAvKioKKyAgICogUmV0dXJucyB3aGV0aGVy
IHRoZSBzdHJpbmcgaXMgZW1wdHkuCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgc3RyaW5nIGlz
IGVtcHR5CisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgVUJvb2wgZW1wdHkoKSBjb25z
dCB7IHJldHVybiBsZW5ndGhfID09IDA7IH0KKworICAvKioKKyAgICogU2V0cyB0byBhbiBlbXB0
eSBzdHJpbmcuCisgICAqIEBzdGFibGUgSUNVIDQuMgorICAgKi8KKyAgdm9pZCBjbGVhcigpIHsg
cHRyXyA9IE5VTEw7IGxlbmd0aF8gPSAwOyB9CisKKyAgLyoqCisgICAqIFJlc2V0IHRoZSBzdHJp
bmdwaWVjZSB0byByZWZlciB0byBuZXcgZGF0YS4KKyAgICogQHBhcmFtIGRhdGEgcG9pbnRlciB0
aGUgbmV3IHN0cmluZyBkYXRhLiAgTmVlZCBub3QgYmUgbnVsIHRlcm1pbmF0ZWQuCisgICAqIEBw
YXJhbSBsZW4gdGhlIGxlbmd0aCBvZiB0aGUgbmV3IGRhdGEKKyAgICogQGludGVybmFsCisgICAq
LworICB2b2lkIHNldChjb25zdCBjaGFyKiBkYXRhLCBpbnQzMl90IGxlbikgeyBwdHJfID0gZGF0
YTsgbGVuZ3RoXyA9IGxlbjsgfQorCisgIC8qKgorICAgKiBSZXNldCB0aGUgc3RyaW5ncGllY2Ug
dG8gcmVmZXIgdG8gbmV3IGRhdGEuCisgICAqIEBwYXJhbSBzdHIgYSBwb2ludGVyIHRvIGEgTlVM
LXRlcm1pbmF0ZWQgc3RyaW5nLiAKKyAgICogQGludGVybmFsCisgICAqLworICB2b2lkIHNldChj
b25zdCBjaGFyKiBzdHIpOworCisgIC8qKgorICAgKiBSZW1vdmVzIHRoZSBmaXJzdCBuIHN0cmlu
ZyB1bml0cy4KKyAgICogQHBhcmFtIG4gcHJlZml4IGxlbmd0aCwgbXVzdCBiZSBub24tbmVnYXRp
dmUgYW5kIDw9bGVuZ3RoKCkKKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICB2b2lkIHJl
bW92ZV9wcmVmaXgoaW50MzJfdCBuKSB7CisgICAgaWYgKG4gPj0gMCkgeworICAgICAgaWYgKG4g
PiBsZW5ndGhfKSB7CisgICAgICAgIG4gPSBsZW5ndGhfOworICAgICAgfQorICAgICAgcHRyXyAr
PSBuOworICAgICAgbGVuZ3RoXyAtPSBuOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBSZW1v
dmVzIHRoZSBsYXN0IG4gc3RyaW5nIHVuaXRzLgorICAgKiBAcGFyYW0gbiBzdWZmaXggbGVuZ3Ro
LCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgPD1sZW5ndGgoKQorICAgKiBAc3RhYmxlIElDVSA0
LjIKKyAgICovCisgIHZvaWQgcmVtb3ZlX3N1ZmZpeChpbnQzMl90IG4pIHsKKyAgICBpZiAobiA+
PSAwKSB7CisgICAgICBpZiAobiA8PSBsZW5ndGhfKSB7CisgICAgICAgIGxlbmd0aF8gLT0gbjsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIGxlbmd0aF8gPSAwOworICAgICAgfQorICAgIH0KKyAg
fQorCisgIC8qKgorICAgKiBNYXhpbXVtIGludGVnZXIsIHVzZWQgYXMgYSBkZWZhdWx0IHZhbHVl
IGZvciBzdWJzdHJpbmcgbWV0aG9kcy4KKyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqLworICBz
dGF0aWMgY29uc3QgaW50MzJfdCBucG9zID0gMHg3ZmZmZmZmZjsKKworICAvKioKKyAgICogUmV0
dXJucyBhIHN1YnN0cmluZyBvZiB0aGlzIFN0cmluZ1BpZWNlLgorICAgKiBAcGFyYW0gcG9zIHN0
YXJ0IHBvc2l0aW9uOyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgPD0gbGVuZ3RoKCkuCisgICAq
IEBwYXJhbSBsZW4gbGVuZ3RoIG9mIHRoZSBzdWJzdHJpbmc7CisgICAqICAgICAgICAgICAgbXVz
dCBiZSBub24tbmVnYXRpdmUgYW5kIHdpbGwgYmUgcGlubmVkIHRvIGF0IG1vc3QgbGVuZ3RoKCkg
LSBwb3MuCisgICAqIEByZXR1cm4gdGhlIHN1YnN0cmluZyBTdHJpbmdQaWVjZQorICAgKiBAc3Rh
YmxlIElDVSA0LjIKKyAgICovCisgIFN0cmluZ1BpZWNlIHN1YnN0cihpbnQzMl90IHBvcywgaW50
MzJfdCBsZW4gPSBucG9zKSBjb25zdCB7CisgICAgcmV0dXJuIFN0cmluZ1BpZWNlKCp0aGlzLCBw
b3MsIGxlbik7CisgIH0KK307CisKKy8qKgorICogR2xvYmFsIG9wZXJhdG9yID09IGZvciBTdHJp
bmdQaWVjZQorICogQHBhcmFtIHggVGhlIGZpcnN0IFN0cmluZ1BpZWNlIHRvIGNvbXBhcmUuCisg
KiBAcGFyYW0geSBUaGUgc2Vjb25kIFN0cmluZ1BpZWNlIHRvIGNvbXBhcmUuCisgKiBAcmV0dXJu
IFRSVUUgaWYgdGhlIHN0cmluZyBkYXRhIGlzIGVxdWFsCisgKiBAaW50ZXJuYWwKKyAqLworVV9F
WFBPUlQgVUJvb2wgVV9FWFBPUlQyIAorb3BlcmF0b3I9PShjb25zdCBTdHJpbmdQaWVjZSYgeCwg
Y29uc3QgU3RyaW5nUGllY2UmIHkpOworCisvKioKKyAqIEdsb2JhbCBvcGVyYXRvciAhPSBmb3Ig
U3RyaW5nUGllY2UKKyAqIEBwYXJhbSB4IFRoZSBmaXJzdCBTdHJpbmdQaWVjZSB0byBjb21wYXJl
LgorICogQHBhcmFtIHkgVGhlIHNlY29uZCBTdHJpbmdQaWVjZSB0byBjb21wYXJlLgorICogQHJl
dHVybiBUUlVFIGlmIHRoZSBzdHJpbmcgZGF0YSBpcyBub3QgZXF1YWwKKyAqIEBpbnRlcm5hbAor
ICovCitpbmxpbmUgVUJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmdQaWVjZSYgeCwgY29uc3Qg
U3RyaW5nUGllY2UmIHkpIHsKKyAgcmV0dXJuICEoeCA9PSB5KTsKK30KKworVV9OQU1FU1BBQ0Vf
RU5ECisKKyNlbmRpZiAgLy8gX19TVFJJTkdQSUVDRV9IX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bWlzYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ljdS91bmljb2RlL3VtaXNjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg1NDUxZmM3NjdjMDU4MzVmNmMxNWY1
NjZmMzU2MmUyZDRhZjgzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pY3UvdW5pY29kZS91bWlzYy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisqICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFj
aGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyogICBmaWxlIG5hbWU6ICB1bWlzYy5oCisqICAgZW5jb2Rpbmc6ICAg
VVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0
CisqCisqICAgY3JlYXRlZCBvbjogMTk5OW9jdDE1CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcu
IFNjaGVyZXIKKyovCisKKyNpZm5kZWYgVU1JU0NfSAorI2RlZmluZSBVTUlTQ19ICisKKyNpbmNs
dWRlICJ1bmljb2RlL3V0eXBlcy5oIgorCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgIEMgQVBJ
Om1pc2MgZGVmaW5pdGlvbnMgCisgKgorICogIFRoaXMgZmlsZSBjb250YWlucyBtaXNjZWxsYW5l
b3VzIGRlZmluaXRpb25zIGZvciB0aGUgQyBBUElzLiAKKyAqLworCitVX0NERUNMX0JFR0lOCisK
Ky8qKiBBIHN0cnVjdCByZXByZXNlbnRpbmcgYSByYW5nZSBvZiB0ZXh0IGNvbnRhaW5pbmcgYSBz
cGVjaWZpYyBmaWVsZCAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBzdHJ1Y3Qg
VUZpZWxkUG9zaXRpb24geworICAvKioKKyAgICogVGhlIGZpZWxkIAorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGludDMyX3QgZmllbGQ7CisgIC8qKgorICAgKiBUaGUgc3RhcnQgb2Yg
dGhlIHRleHQgcmFuZ2UgY29udGFpbmluZyBmaWVsZCAKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisg
ICAqLworICBpbnQzMl90IGJlZ2luSW5kZXg7CisgIC8qKiAKKyAgICogVGhlIGxpbWl0IG9mIHRo
ZSB0ZXh0IHJhbmdlIGNvbnRhaW5pbmcgZmllbGQgCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW50MzJfdCBlbmRJbmRleDsKK30gVUZpZWxkUG9zaXRpb247CisKKyNpZiAhVUNPTkZJ
R19OT19TRVJWSUNFCisvKioKKyAqIE9wYXF1ZSB0eXBlIHJldHVybmVkIGJ5IHJlZ2lzdGVySW5z
dGFuY2UsIHJlZ2lzdGVyRmFjdG9yeSBhbmQgdW5yZWdpc3RlciBmb3Igc2VydmljZSByZWdpc3Ry
YXRpb24uCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLwordHlwZWRlZiBjb25zdCB2b2lkKiBVUmVn
aXN0cnlLZXk7CisjZW5kaWYKKworVV9DREVDTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW5pc3RyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1L3VuaWNvZGUvdW5pc3RyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZjMTgwZjM2MjM1ZTZm
MzA5OWQyMTg1MTBkMDExOWI3MGQzYTE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bmlzdHIuaApAQCAtMCwwICsxLDQ0NDYgQEAKKy8qCisq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMTAsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogRmlsZSB1bmlzdHIuaAorKgorKiBNb2Rp
ZmljYXRpb24gSGlzdG9yeToKKyoKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlw
dGlvbgorKiAgIDA5LzI1Lzk4ICAgIHN0ZXBoZW4gICAgIENyZWF0aW9uLgorKiAgIDExLzExLzk4
ICAgIHN0ZXBoZW4gICAgIENoYW5nZWQgcGVyIDExLzkgY29kZSByZXZpZXcuCisqICAgMDQvMjAv
OTkgICAgc3RlcGhlbiAgICAgT3ZlcmhhdWxlZCBwZXIgNC8xNiBjb2RlIHJldmlldy4KKyogICAx
MS8xOC85OSAgICBhbGl1ICAgICAgICBNYWRlIHRvIGluaGVyaXQgZnJvbSBSZXBsYWNlYWJsZS4g
IEFkZGVkIG1ldGhvZAorKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2VC
ZXR3ZWVuKCk7IG90aGVyIG1ldGhvZHMgdW5jaGFuZ2VkLgorKiAgIDA2LzI1LzAxICAgIGdyaG90
ZW4gICAgIFJlbW92ZSBkZXBlbmRlbmN5IG9uIGlvc3RyZWFtLgorKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisqLworCisjaWZuZGVmIFVOSVNUUl9ICisjZGVmaW5lIFVOSVNUUl9ICisKKy8qKgorICog
XGZpbGUgCisgKiBcYnJpZWYgQysrIEFQSTogVW5pY29kZSBTdHJpbmcgCisgKi8KKworI2luY2x1
ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisjaW5jbHVkZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRl
ICJ1bmljb2RlL3N0ZF9zdHJpbmcuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmluZ3BpZWNlLmgi
CisjaW5jbHVkZSAidW5pY29kZS9ieXRlc3RyZWFtLmgiCisKK3N0cnVjdCBVQ29udmVydGVyOyAg
ICAgICAgICAvLyB1bmljb2RlL3VjbnYuaAorY2xhc3MgIFN0cmluZ1RocmVhZFRlc3Q7CisKKyNp
Zm5kZWYgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKy8qIHNlZSBhbHNvIHVzdHJpbmcuaCBh
bmQgdW5vcm0uaCAqLworLyoqCisgKiBPcHRpb24gYml0IGZvciB1X3N0ckNhc2VDb21wYXJlLCB1
X3N0cmNhc2VjbXAsIHVub3JtX2NvbXBhcmUsIGV0YzoKKyAqIENvbXBhcmUgc3RyaW5ncyBpbiBj
b2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyLgorICogQHN0YWJsZSBJ
Q1UgMi4yCisgKi8KKyNkZWZpbmUgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIgIDB4ODAwMAor
I2VuZGlmCisKKyNpZm5kZWYgVVNUUklOR19ICisvKioKKyAqIFxpbmdyb3VwIHVzdHJpbmdfdXN0
cmxlbgorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9zdHJsZW4oY29uc3QgVUNo
YXIgKnMpOworI2VuZGlmCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKK2NsYXNzIExvY2FsZTsgICAg
ICAgICAgICAgICAvLyB1bmljb2RlL2xvY2lkLmgKK2NsYXNzIFN0cmluZ0NoYXJhY3Rlckl0ZXJh
dG9yOworY2xhc3MgQnJlYWtJdGVyYXRvcjsgICAgICAgIC8vIHVuaWNvZGUvYnJraXRlci5oCisK
Ky8qIFRoZSA8aW9zdHJlYW0+IGluY2x1ZGUgaGFzIGJlZW4gbW92ZWQgdG8gdW5pY29kZS91c3Ry
ZWFtLmggKi8KKworLyoqCisgKiBDb25zdGFudCB0byBiZSB1c2VkIGluIHRoZSBVbmljb2RlU3Ry
aW5nKGNoYXIgKiwgaW50MzJfdCwgRUludmFyaWFudCkgY29uc3RydWN0b3IKKyAqIHdoaWNoIGNv
bnN0cnVjdHMgYSBVbmljb2RlIHN0cmluZyBmcm9tIGFuIGludmFyaWFudC1jaGFyYWN0ZXIgY2hh
ciAqIHN0cmluZy4KKyAqIEFib3V0IGludmFyaWFudCBjaGFyYWN0ZXJzIHNlZSB1dHlwZXMuaC4K
KyAqIFRoaXMgY29uc3RydWN0b3IgaGFzIG5vIHJ1bnRpbWUgZGVwZW5kZW5jeSBvbiBjb252ZXJz
aW9uIGNvZGUgYW5kIGlzCisgKiB0aGVyZWZvcmUgcmVjb21tZW5kZWQgb3ZlciBvbmVzIHRha2lu
ZyBhIGNoYXJzZXQgbmFtZSBzdHJpbmcKKyAqICh3aGVyZSB0aGUgZW1wdHkgc3RyaW5nICIiIGlu
ZGljYXRlcyBpbnZhcmlhbnQtY2hhcmFjdGVyIGNvbnZlcnNpb24pLgorICoKKyAqIEBzdGFibGUg
SUNVIDMuMgorICovCisjZGVmaW5lIFVTX0lOViBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29k
ZVN0cmluZzo6a0ludmFyaWFudAorCisvKioKKyAqIFVuaWNvZGUgU3RyaW5nIGxpdGVyYWxzIGlu
IEMrKy4KKyAqIERlcGVuZGVudCBvbiB0aGUgcGxhdGZvcm0gcHJvcGVydGllcywgZGlmZmVyZW50
IFVuaWNvZGVTdHJpbmcKKyAqIGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUg
YSBVbmljb2RlU3RyaW5nIG9iamVjdCBmcm9tCisgKiBhIHN0cmluZyBsaXRlcmFsLgorICogVGhl
IG1hY3JvcyBhcmUgZGVmaW5lZCBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZS4KKyAqIFRoZXkgd29y
ayBvbmx5IGZvciBzdHJpbmdzIHRoYXQgY29udGFpbiAiaW52YXJpYW50IGNoYXJhY3RlcnMiLCBp
LmUuLAorICogb25seSBsYXRpbiBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9u
LgorICogU2VlIHV0eXBlcy5oIGZvciBkZXRhaWxzLgorICoKKyAqIFRoZSBzdHJpbmcgcGFyYW1l
dGVyIG11c3QgYmUgYSBDIHN0cmluZyBsaXRlcmFsLgorICogVGhlIGxlbmd0aCBvZiB0aGUgc3Ry
aW5nLCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZworICogPGNvZGU+TlVMPC9jb2RlPiwg
bXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBjb25zdGFudC4KKyAqIFRoZSBVX1NUUklOR19ERUNMIG1h
Y3JvIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBmb3Igb25lCisgKiBzdWNoIHN0cmlu
ZyB2YXJpYWJsZSBiZWZvcmUgaXQgaXMgdXNlZC4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisj
aWYgZGVmaW5lZChVX0RFQ0xBUkVfVVRGMTYpCisjICAgZGVmaW5lIFVOSUNPREVfU1RSSU5HKGNz
LCBfbGVuZ3RoKSBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyhUUlVFLCAoY29u
c3QgVUNoYXIgKilVX0RFQ0xBUkVfVVRGMTYoY3MpLCBfbGVuZ3RoKQorI2VsaWYgVV9TSVpFT0Zf
V0NIQVJfVD09VV9TSVpFT0ZfVUNIQVIgJiYgKFVfQ0hBUlNFVF9GQU1JTFk9PVVfQVNDSUlfRkFN
SUxZIHx8IChVX1NJWkVPRl9VQ0hBUiA9PSAyICYmIGRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikp
KQorIyAgIGRlZmluZSBVTklDT0RFX1NUUklORyhjcywgX2xlbmd0aCkgVV9OQU1FU1BBQ0VfUVVB
TElGSUVSIFVuaWNvZGVTdHJpbmcoVFJVRSwgKGNvbnN0IFVDaGFyICopTCAjIyBjcywgX2xlbmd0
aCkKKyNlbGlmIFVfU0laRU9GX1VDSEFSPT0xICYmIFVfQ0hBUlNFVF9GQU1JTFk9PVVfQVNDSUlf
RkFNSUxZCisjICAgZGVmaW5lIFVOSUNPREVfU1RSSU5HKGNzLCBfbGVuZ3RoKSBVX05BTUVTUEFD
RV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyhUUlVFLCAoY29uc3QgVUNoYXIgKiljcywgX2xlbmd0
aCkKKyNlbHNlCisjICAgZGVmaW5lIFVOSUNPREVfU1RSSU5HKGNzLCBfbGVuZ3RoKSBVX05BTUVT
UEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyhjcywgX2xlbmd0aCwgVVNfSU5WKQorI2VuZGlm
CisKKy8qKgorICogVW5pY29kZSBTdHJpbmcgbGl0ZXJhbHMgaW4gQysrLgorICogRGVwZW5kZW50
IG9uIHRoZSBwbGF0Zm9ybSBwcm9wZXJ0aWVzLCBkaWZmZXJlbnQgVW5pY29kZVN0cmluZworICog
Y29uc3RydWN0b3JzIHNob3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIFVuaWNvZGVTdHJpbmcgb2Jq
ZWN0IGZyb20KKyAqIGEgc3RyaW5nIGxpdGVyYWwuCisgKiBUaGUgbWFjcm9zIGFyZSBkZWZpbmVk
IGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZS4KKyAqIFRoZXkgd29yayBvbmx5IGZvciBzdHJpbmdz
IHRoYXQgY29udGFpbiAiaW52YXJpYW50IGNoYXJhY3RlcnMiLCBpLmUuLAorICogb25seSBsYXRp
biBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogU2VlIHV0eXBlcy5o
IGZvciBkZXRhaWxzLgorICoKKyAqIFRoZSBzdHJpbmcgcGFyYW1ldGVyIG11c3QgYmUgYSBDIHN0
cmluZyBsaXRlcmFsLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVU5JQ09ERV9T
VFJJTkdfU0lNUExFKGNzKSBVTklDT0RFX1NUUklORyhjcywgLTEpCisKKy8qKgorICogVW5pY29k
ZVN0cmluZyBpcyBhIHN0cmluZyBjbGFzcyB0aGF0IHN0b3JlcyBVbmljb2RlIGNoYXJhY3RlcnMg
ZGlyZWN0bHkgYW5kIHByb3ZpZGVzCisgKiBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgYXMgdGhlIEph
dmEgU3RyaW5nIGFuZCBTdHJpbmdCdWZmZXIgY2xhc3Nlcy4KKyAqIEl0IGlzIGEgY29uY3JldGUg
aW1wbGVtZW50YXRpb24gb2YgdGhlIGFic3RyYWN0IGNsYXNzIFJlcGxhY2VhYmxlIChmb3IgdHJh
bnNsaXRlcmF0aW9uKS4KKyAqCisgKiBUaGUgVW5pY29kZVN0cmluZyBjbGFzcyBpcyBub3Qgc3Vp
dGFibGUgZm9yIHN1YmNsYXNzaW5nLgorICoKKyAqIDxwPkZvciBhbiBvdmVydmlldyBvZiBVbmlj
b2RlIHN0cmluZ3MgaW4gQyBhbmQgQysrIHNlZSB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6Ly9pY3Ut
cHJvamVjdC5vcmcvdXNlcmd1aWRlL3N0cmluZ3MuaHRtbCI+VXNlciBHdWlkZSBTdHJpbmdzIGNo
YXB0ZXI8L2E+LjwvcD4KKyAqCisgKiA8cD5JbiBJQ1UsIGEgVW5pY29kZSBzdHJpbmcgY29uc2lz
dHMgb2YgMTYtYml0IFVuaWNvZGUgPGVtPmNvZGUgdW5pdHM8L2VtPi4KKyAqIEEgVW5pY29kZSBj
aGFyYWN0ZXIgbWF5IGJlIHN0b3JlZCB3aXRoIGVpdGhlciBvbmUgY29kZSB1bml0CisgKiAodGhl
IG1vc3QgY29tbW9uIGNhc2UpIG9yIHdpdGggYSBtYXRjaGVkIHBhaXIgb2Ygc3BlY2lhbCBjb2Rl
IHVuaXRzCisgKiAoInN1cnJvZ2F0ZXMiKS4gVGhlIGRhdGEgdHlwZSBmb3IgY29kZSB1bml0cyBp
cyBVQ2hhci4gCisgKiBGb3Igc2luZ2xlLWNoYXJhY3RlciBoYW5kbGluZywgYSBVbmljb2RlIGNo
YXJhY3RlciBjb2RlIDxlbT5wb2ludDwvZW0+IGlzIGEgdmFsdWUKKyAqIGluIHRoZSByYW5nZSAw
Li4weDEwZmZmZi4gSUNVIHVzZXMgdGhlIFVDaGFyMzIgdHlwZSBmb3IgY29kZSBwb2ludHMuPC9w
PgorICoKKyAqIDxwPkluZGV4ZXMgYW5kIG9mZnNldHMgaW50byBhbmQgbGVuZ3RocyBvZiBzdHJp
bmdzIGFsd2F5cyBjb3VudCBjb2RlIHVuaXRzLCBub3QgY29kZSBwb2ludHMuCisgKiBUaGlzIGlz
IHRoZSBzYW1lIGFzIHdpdGggbXVsdGktYnl0ZSBjaGFyKiBzdHJpbmdzIGluIHRyYWRpdGlvbmFs
IHN0cmluZyBoYW5kbGluZy4KKyAqIE9wZXJhdGlvbnMgb24gcGFydGlhbCBzdHJpbmdzIHR5cGlj
YWxseSBkbyBub3QgdGVzdCBmb3IgY29kZSBwb2ludCBib3VuZGFyaWVzLgorICogSWYgbmVjZXNz
YXJ5LCB0aGUgdXNlciBuZWVkcyB0byB0YWtlIGNhcmUgb2Ygc3VjaCBib3VuZGFyaWVzIGJ5IHRl
c3RpbmcgZm9yIHRoZSBjb2RlIHVuaXQKKyAqIHZhbHVlcyBvciBieSB1c2luZyBmdW5jdGlvbnMg
bGlrZQorICogVW5pY29kZVN0cmluZzo6Z2V0Q2hhcjMyU3RhcnQoKSBhbmQgVW5pY29kZVN0cmlu
Zzo6Z2V0Q2hhcjMyTGltaXQoKQorICogKG9yLCBpbiBDLCB0aGUgZXF1aXZhbGVudCBtYWNyb3Mg
VTE2X1NFVF9DUF9TVEFSVCgpIGFuZCBVMTZfU0VUX0NQX0xJTUlUKCksIHNlZSB1dGYuaCkuPC9w
PgorICoKKyAqIFVuaWNvZGVTdHJpbmcgbWV0aG9kcyBhcmUgbW9yZSBsZW5pZW50IHdpdGggcmVn
YXJkIHRvIGlucHV0IHBhcmFtZXRlciB2YWx1ZXMKKyAqIHRoYW4gb3RoZXIgSUNVIEFQSXMuIElu
IHBhcnRpY3VsYXI6CisgKiAtIElmIGluZGV4ZXMgYXJlIG91dCBvZiBib3VuZHMgZm9yIGEgVW5p
Y29kZVN0cmluZyBvYmplY3QKKyAqICAgKDwwIG9yID5sZW5ndGgoKSkgdGhlbiB0aGV5IGFyZSAi
cGlubmVkIiB0byB0aGUgbmVhcmVzdCBib3VuZGFyeS4KKyAqIC0gSWYgcHJpbWl0aXZlIHN0cmlu
ZyBwb2ludGVyIHZhbHVlcyAoZS5nLiwgY29uc3QgVUNoYXIgKiBvciBjaGFyICopCisgKiAgIGZv
ciBpbnB1dCBzdHJpbmdzIGFyZSBOVUxMLCB0aGVuIHRob3NlIGlucHV0IHN0cmluZyBwYXJhbWV0
ZXJzIGFyZSB0cmVhdGVkCisgKiAgIGFzIGlmIHRoZXkgcG9pbnRlZCB0byBhbiBlbXB0eSBzdHJp
bmcuCisgKiAgIEhvd2V2ZXIsIHRoaXMgaXMgPGVtPm5vdDwvZW0+IHRoZSBjYXNlIGZvciBjaGFy
ICogcGFyYW1ldGVycyBmb3IgY2hhcnNldCBuYW1lcworICogICBvciBvdGhlciBJRHMuCisgKiAt
IE1vc3QgVW5pY29kZVN0cmluZyBtZXRob2RzIGRvIG5vdCB0YWtlIGEgVUVycm9yQ29kZSBwYXJh
bWV0ZXIgYmVjYXVzZQorICogICB0aGVyZSBhcmUgdXN1YWxseSB2ZXJ5IGZldyBvcHBvcnR1bml0
aWVzIGZvciBmYWlsdXJlIG90aGVyIHRoYW4gYSBzaG9ydGFnZQorICogICBvZiBtZW1vcnksIGVy
cm9yIGNvZGVzIGluIGxvdy1sZXZlbCBDKysgc3RyaW5nIG1ldGhvZHMgd291bGQgYmUgaW5jb252
ZW5pZW50LAorICogICBhbmQgdGhlIGVycm9yIGNvZGUgYXMgdGhlIGxhc3QgcGFyYW1ldGVyIChJ
Q1UgY29udmVudGlvbikgd291bGQgcHJldmVudAorICogICB0aGUgdXNlIG9mIGRlZmF1bHQgcGFy
YW1ldGVyIHZhbHVlcy4KKyAqICAgSW5zdGVhZCwgc3VjaCBtZXRob2RzIHNldCB0aGUgVW5pY29k
ZVN0cmluZyBpbnRvIGEgImJvZ3VzIiBzdGF0ZQorICogICAoc2VlIGlzQm9ndXMoKSkgaWYgYW4g
ZXJyb3Igb2NjdXJzLgorICoKKyAqIEluIHN0cmluZyBjb21wYXJpc29ucywgdHdvIFVuaWNvZGVT
dHJpbmcgb2JqZWN0cyB0aGF0IGFyZSBib3RoICJib2d1cyIKKyAqIGNvbXBhcmUgZXF1YWwgKHRv
IGJlIHRyYW5zaXRpdmUgYW5kIHByZXZlbnQgZW5kbGVzcyBsb29wcyBpbiBzb3J0aW5nKSwKKyAq
IGFuZCBhICJib2d1cyIgc3RyaW5nIGNvbXBhcmVzIGxlc3MgdGhhbiBhbnkgbm9uLSJib2d1cyIg
b25lLgorICoKKyAqIENvbnN0IFVuaWNvZGVTdHJpbmcgbWV0aG9kcyBhcmUgdGhyZWFkLXNhZmUu
IE11bHRpcGxlIHRocmVhZHMgY2FuIHVzZQorICogY29uc3QgbWV0aG9kcyBvbiB0aGUgc2FtZSBV
bmljb2RlU3RyaW5nIG9iamVjdCBzaW11bHRhbmVvdXNseSwKKyAqIGJ1dCBub24tY29uc3QgbWV0
aG9kcyBtdXN0IG5vdCBiZSBjYWxsZWQgY29uY3VycmVudGx5IChpbiBtdWx0aXBsZSB0aHJlYWRz
KQorICogd2l0aCBhbnkgb3RoZXIgKGNvbnN0IG9yIG5vbi1jb25zdCkgbWV0aG9kcy4KKyAqCisg
KiBTaW1pbGFybHksIGNvbnN0IFVuaWNvZGVTdHJpbmcgJiBwYXJhbWV0ZXJzIGFyZSB0aHJlYWQt
c2FmZS4KKyAqIE9uZSBvYmplY3QgbWF5IGJlIHBhc3NlZCBpbiBhcyBzdWNoIGEgcGFyYW1ldGVy
IGNvbmN1cnJlbnRseSBpbiBtdWx0aXBsZSB0aHJlYWRzLgorICogVGhpcyBpbmNsdWRlcyB0aGUg
Y29uc3QgVW5pY29kZVN0cmluZyAmIHBhcmFtZXRlcnMgZm9yCisgKiBjb3B5IGNvbnN0cnVjdGlv
biwgYXNzaWdubWVudCwgYW5kIGNsb25pbmcuCisgKgorICogPHA+VW5pY29kZVN0cmluZyB1c2Vz
IHNldmVyYWwgc3RvcmFnZSBtZXRob2RzLgorICogU3RyaW5nIGNvbnRlbnRzIGNhbiBiZSBzdG9y
ZWQgaW5zaWRlIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCBpdHNlbGYsCisgKiBpbiBhbiBhbGxv
Y2F0ZWQgYW5kIHNoYXJlZCBidWZmZXIsIG9yIGluIGFuIG91dHNpZGUgYnVmZmVyIHRoYXQgaXMg
ImFsaWFzZWQiLgorICogTW9zdCBvZiB0aGlzIGlzIGRvbmUgdHJhbnNwYXJlbnRseSwgYnV0IGNh
cmVmdWwgYWxpYXNpbmcgaW4gcGFydGljdWxhciBwcm92aWRlcworICogc2lnbmlmaWNhbnQgcGVy
Zm9ybWFuY2UgaW1wcm92ZW1lbnRzLgorICogQWxzbywgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBh
Y2Nlc3NpYmxlIHZpYSBzcGVjaWFsIGZ1bmN0aW9ucy4KKyAqIEZvciBkZXRhaWxzIHNlZSB0aGUK
KyAqIDxhIGhyZWY9Imh0dHA6Ly9pY3UtcHJvamVjdC5vcmcvdXNlcmd1aWRlL3N0cmluZ3MuaHRt
bCI+VXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXI8L2E+LjwvcD4KKyAqCisgKiBAc2VlIHV0Zi5o
CisgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworY2xh
c3MgVV9DT01NT05fQVBJIFVuaWNvZGVTdHJpbmcgOiBwdWJsaWMgUmVwbGFjZWFibGUKK3sKK3B1
YmxpYzoKKworICAvKioKKyAgICogQ29uc3RhbnQgdG8gYmUgdXNlZCBpbiB0aGUgVW5pY29kZVN0
cmluZyhjaGFyICosIGludDMyX3QsIEVJbnZhcmlhbnQpIGNvbnN0cnVjdG9yCisgICAqIHdoaWNo
IGNvbnN0cnVjdHMgYSBVbmljb2RlIHN0cmluZyBmcm9tIGFuIGludmFyaWFudC1jaGFyYWN0ZXIg
Y2hhciAqIHN0cmluZy4KKyAgICogVXNlIHRoZSBtYWNybyBVU19JTlYgaW5zdGVhZCBvZiB0aGUg
ZnVsbCBxdWFsaWZpY2F0aW9uIGZvciB0aGlzIHZhbHVlLgorICAgKgorICAgKiBAc2VlIFVTX0lO
VgorICAgKiBAc3RhYmxlIElDVSAzLjIKKyAgICovCisgIGVudW0gRUludmFyaWFudCB7CisgICAg
LyoqCisgICAgICogQHNlZSBFSW52YXJpYW50CisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAg
ICovCisgICAga0ludmFyaWFudAorICB9OworCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorICAvLyBSZWFkLW9ubHkgb3BlcmF0aW9ucworICAvLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAvKiBDb21wYXJpc29uIC0gYml0
d2lzZSBvbmx5IC0gZm9yIGludGVybmF0aW9uYWwgY29tcGFyaXNvbiB1c2UgY29sbGF0aW9uICov
CisKKyAgLyoqCisgICAqIEVxdWFsaXR5IG9wZXJhdG9yLiBQZXJmb3JtcyBvbmx5IGJpdHdpc2Ug
Y29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHRleHQgVGhlIFVuaWNvZGVTdHJpbmcgdG8gY29tcGFy
ZSB0byB0aGlzIG9uZS4KKyAgICogQHJldHVybiBUUlVFIGlmIDxUVD50ZXh0PC9UVD4gY29udGFp
bnMgdGhlIHNhbWUgY2hhcmFjdGVycyBhcyB0aGlzIG9uZSwKKyAgICogRkFMU0Ugb3RoZXJ3aXNl
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBvcGVyYXRvcj09
IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogSW5lcXVh
bGl0eSBvcGVyYXRvci4gUGVyZm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBw
YXJhbSB0ZXh0IFRoZSBVbmljb2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAq
IEByZXR1cm4gRkFMU0UgaWYgPFRUPnRleHQ8L1RUPiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0
ZXJzIGFzIHRoaXMgb25lLAorICAgKiBUUlVFIG90aGVyd2lzZS4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgb3BlcmF0b3IhPSAoY29uc3QgVW5pY29kZVN0cmlu
ZyYgdGV4dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIEdyZWF0ZXIgdGhhbiBvcGVyYXRvci4gUGVy
Zm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBVbmlj
b2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gVFJVRSBpZiB0
aGUgY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlCisgICAqIGdyZWF0ZXIgdGhhbiB0aGUg
Y2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIG9wZXJhdG9yPiAoY29uc3QgVW5p
Y29kZVN0cmluZyYgdGV4dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExlc3MgdGhhbiBvcGVyYXRv
ci4gUGVyZm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRo
ZSBVbmljb2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisgICAqIEByZXR1cm4gVFJV
RSBpZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlCisgICAqIGxlc3MgdGhhbiB0
aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIG9wZXJhdG9yPCAoY29uc3Qg
VW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIEdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCBvcGVyYXRvci4gUGVyZm9ybXMgb25seSBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAq
IEBwYXJhbSB0ZXh0IFRoZSBVbmljb2RlU3RyaW5nIHRvIGNvbXBhcmUgdG8gdGhpcyBvbmUuCisg
ICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlCisg
ICAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0
PC9jb2RlPiwgRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAg
aW5saW5lIFVCb29sIG9wZXJhdG9yPj0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0
OworCisgIC8qKgorICAgKiBMZXNzIHRoYW4gb3IgZXF1YWwgb3BlcmF0b3IuIFBlcmZvcm1zIG9u
bHkgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gdGV4dCBUaGUgVW5pY29kZVN0cmlu
ZyB0byBjb21wYXJlIHRvIHRoaXMgb25lLgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNoYXJh
Y3RlcnMgaW4gdGhpcyBhcmUgYml0d2lzZQorICAgKiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhl
IGNoYXJhY3RlcnMgaW4gPGNvZGU+dGV4dDwvY29kZT4sIEZBTFNFIG90aGVyd2lzZQorICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBvcGVyYXRvcjw9IChjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hh
cmFjdGVycyBiaXR3aXNlIGluIHRoaXMgVW5pY29kZVN0cmluZyB0bworICAgKiB0aGUgY2hhcmFj
dGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPi4KKyAgICogQHBhcmFtIHRleHQgVGhlIFVuaWNvZGVT
dHJpbmcgdG8gY29tcGFyZSB0byB0aGlzIG9uZS4KKyAgICogQHJldHVybiBUaGUgcmVzdWx0IG9m
IGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBhcmlzb246IDAgaWYgdGhpcworICAgKiBjb250YWlucyB0
aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxjb2RlPnRleHQ8L2NvZGU+LCAtMSBpZiB0aGUgY2hhcmFj
dGVycyBpbgorICAgKiB0aGlzIGFyZSBiaXR3aXNlIGxlc3MgdGhhbiB0aGUgY2hhcmFjdGVycyBp
biA8Y29kZT50ZXh0PC9jb2RlPiwgKzEgaWYgdGhlCisgICAqIGNoYXJhY3RlcnMgaW4gdGhpcyBh
cmUgYml0d2lzZSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPGNvZGU+dGV4
dDwvY29kZT4uCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBj
b21wYXJlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAgKiBD
b21wYXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3Rh
cnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyAg
ICogaW4gPFRUPnRleHQ8L1RUPgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGlj
aCB0aGUgY29tcGFyZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHRleHQgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHRleHQg
dGhlIG90aGVyIHRleHQgdG8gYmUgY29tcGFyZWQgYWdhaW5zdCB0aGlzIHN0cmluZy4KKyAgICog
QHJldHVybiBUaGUgcmVzdWx0IG9mIGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBhcmlzb246IDAgaWYg
dGhpcworICAgKiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxjb2RlPnRleHQ8L2Nv
ZGU+LCAtMSBpZiB0aGUgY2hhcmFjdGVycyBpbgorICAgKiB0aGlzIGFyZSBiaXR3aXNlIGxlc3Mg
dGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiwgKzEgaWYgdGhlCisgICAq
IGNoYXJhY3RlcnMgaW4gdGhpcyBhcmUgYml0d2lzZSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3Rl
cnMKKyAgICogaW4gPGNvZGU+dGV4dDwvY29kZT4uCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQz
Ml90IGxlbmd0aCwKKyAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Owor
CisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdl
CisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhl
IGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICog
WzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikuCisgICAq
IEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBi
ZWdpbnMKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhp
cyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgdGV4dCB0byBiZSBjb21wYXJl
ZAorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4g
dG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2Yg
Y2hhcmFjdGVycyBpbiA8VFQ+c3JjPC9UVD4gdG8gY29tcGFyZQorICAgKiBAcmV0dXJuIFRoZSBy
ZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29tcGFyaXNvbjogMCBpZiB0aGlzCisgICAqIGNv
bnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgPGNvZGU+c3JjVGV4dDwvY29kZT4sIC0xIGlm
IHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIHRoaXMgYXJlIGJpdHdpc2UgbGVzcyB0aGFuIHRoZSBj
aGFyYWN0ZXJzIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+LCArMSBpZiB0aGUKKyAgICogY2hhcmFj
dGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0ZXIgdGhhbiB0aGUgY2hhcmFjdGVycworICAg
KiBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPi4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICAgaW5saW5lIGludDhfdCBjb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQzMl90
IGxlbmd0aCwKKyAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAg
ICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Owor
CisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBjaGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhpcyBVbmlj
b2RlU3RyaW5nIHdpdGggdGhlIGZpcnN0CisgICAqIDxUVD5zcmNMZW5ndGg8L1RUPiBjaGFyYWN0
ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIGNoYXJh
Y3RlcnMgdG8gY29tcGFyZSB0byB0aGlzIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSBzcmNM
ZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IHRvIGNv
bXBhcmUKKyAgICogQHJldHVybiBUaGUgcmVzdWx0IG9mIGJpdHdpc2UgY2hhcmFjdGVyIGNvbXBh
cmlzb246IDAgaWYgdGhpcworICAgKiBjb250YWlucyB0aGUgc2FtZSBjaGFyYWN0ZXJzIGFzIDxj
b2RlPnNyY0NoYXJzPC9jb2RlPiwgLTEgaWYgdGhlIGNoYXJhY3RlcnMgaW4KKyAgICogdGhpcyBh
cmUgYml0d2lzZSBsZXNzIHRoYW4gdGhlIGNoYXJhY3RlcnMgaW4gPGNvZGU+c3JjQ2hhcnM8L2Nv
ZGU+LCArMSBpZiB0aGUKKyAgICogY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0
ZXIgdGhhbiB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8Y29kZT5zcmNDaGFyczwvY29kZT4uCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlKGNvbnN0
IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKKwor
ICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hhcmFjdGVycyBiaXR3aXNlIGluIHRoZSByYW5nZQor
ICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBm
aXJzdAorICAgKiA8VFQ+bGVuZ3RoPC9UVD4gY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RU
PgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVy
YXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IHRvIGNvbXBhcmUuCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUgY2hhcmFjdGVycyB0byBiZSBj
b21wYXJlZAorICAgKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29t
cGFyaXNvbjogMCBpZiB0aGlzCisgICAqIGNvbnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMg
PGNvZGU+c3JjQ2hhcnM8L2NvZGU+LCAtMSBpZiB0aGUgY2hhcmFjdGVycyBpbgorICAgKiB0aGlz
IGFyZSBiaXR3aXNlIGxlc3MgdGhhbiB0aGUgY2hhcmFjdGVycyBpbiA8Y29kZT5zcmNDaGFyczwv
Y29kZT4sICsxIGlmIHRoZQorICAgKiBjaGFyYWN0ZXJzIGluIHRoaXMgYXJlIGJpdHdpc2UgZ3Jl
YXRlciB0aGFuIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxjb2RlPnNyY0NoYXJzPC9jb2RlPi4K
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBhcmUoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVUNo
YXIgKnNyY0NoYXJzKSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0aGUgY2hhcmFjdGVy
cyBiaXR3aXNlIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCAr
IGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD5zcmNDaGFyczwv
VFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCAr
IHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2gg
dGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiB0aGlzIHRvIGNvbXBhcmUKKyAgICogQHBhcmFtIHNyY0NoYXJz
IHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGNvbXBhcmVkCisgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUg
b2Zmc2V0IGludG8gPFRUPnNyY0NoYXJzPC9UVD4gdG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBA
cGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8
L1RUPiB0byBjb21wYXJlCisgICAqIEByZXR1cm4gVGhlIHJlc3VsdCBvZiBiaXR3aXNlIGNoYXJh
Y3RlciBjb21wYXJpc29uOiAwIGlmIHRoaXMKKyAgICogY29udGFpbnMgdGhlIHNhbWUgY2hhcmFj
dGVycyBhcyA8Y29kZT5zcmNDaGFyczwvY29kZT4sIC0xIGlmIHRoZSBjaGFyYWN0ZXJzIGluCisg
ICAqIHRoaXMgYXJlIGJpdHdpc2UgbGVzcyB0aGFuIHRoZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnNy
Y0NoYXJzPC9jb2RlPiwgKzEgaWYgdGhlCisgICAqIGNoYXJhY3RlcnMgaW4gdGhpcyBhcmUgYml0
d2lzZSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPGNvZGU+c3JjQ2hhcnM8
L2NvZGU+LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29t
cGFyZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICBj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHRoZSBj
aGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRU
PmxpbWl0PC9UVD4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RU
PiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjTGltaXQ8L1RU
PikuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9w
ZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkg
Zm9sbG93aW5nIHRoZSBjb21wYXJlIG9wZXJhdGlvbgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUg
dGV4dCB0byBiZSBjb21wYXJlZAorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRv
IDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQgY29tcGFyaXNvbgorICAgKiBAcGFyYW0gc3JjTGlt
aXQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gbGltaXQgY29tcGFyaXNvbgor
ICAgKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgYml0d2lzZSBjaGFyYWN0ZXIgY29tcGFyaXNvbjog
MCBpZiB0aGlzCisgICAqIGNvbnRhaW5zIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgPGNvZGU+c3Jj
VGV4dDwvY29kZT4sIC0xIGlmIHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIHRoaXMgYXJlIGJpdHdp
c2UgbGVzcyB0aGFuIHRoZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+LCArMSBp
ZiB0aGUKKyAgICogY2hhcmFjdGVycyBpbiB0aGlzIGFyZSBiaXR3aXNlIGdyZWF0ZXIgdGhhbiB0
aGUgY2hhcmFjdGVycworICAgKiBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPi4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBhcmVCZXR3ZWVuKGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgY29uc3QgVW5p
Y29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAg
ICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0
d28gVW5pY29kZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIuCisgICAqIFRoZSByZXN1bHQg
bWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSByZXN1bHRzIG9mIGNvbXBhcmUoKSwgb3BlcmF0b3I8
LCBldGMuCisgICAqIGlmIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBhcmUgcHJlc2VudDoKKyAg
ICoKKyAgICogSW4gVVRGLTE2LCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgKHdpdGggY29kZSBw
b2ludHMgVSsxMDAwMCBhbmQgYWJvdmUpIGFyZQorICAgKiBzdG9yZWQgd2l0aCBwYWlycyBvZiBz
dXJyb2dhdGUgY29kZSB1bml0cy4gVGhlc2UgaGF2ZSB2YWx1ZXMgZnJvbSAweGQ4MDAgdG8gMHhk
ZmZmLAorICAgKiB3aGljaCBtZWFucyB0aGF0IHRoZXkgY29tcGFyZSBhcyBsZXNzIHRoYW4gc29t
ZSBvdGhlciBCTVAgY2hhcmFjdGVycyBsaWtlIFUrZmVmZi4KKyAgICogVGhpcyBmdW5jdGlvbiBj
b21wYXJlcyBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogSWYgZWl0
aGVyIG9mIHRoZSBVVEYtMTYgc3RyaW5ncyBpcyBtYWxmb3JtZWQgKGkuZS4sIGl0IGNvbnRhaW5z
IHVucGFpcmVkIHN1cnJvZ2F0ZXMpLCB0aGVuIHRoZSByZXN1bHQgaXMgbm90IGRlZmluZWQuCisg
ICAqCisgICAqIEBwYXJhbSB0ZXh0IEFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUg
dG8uCisgICAqIEByZXR1cm4gYSBuZWdhdGl2ZS96ZXJvL3Bvc2l0aXZlIGludGVnZXIgY29ycmVz
cG9uZGluZyB0byB3aGV0aGVyCisgICAqIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbi9lcXVhbCB0
by9ncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvbmUKKyAgICogaW4gY29kZSBwb2ludCBvcmRlcgor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQ
b2ludE9yZGVyKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0OworCisgIC8qKgorICAg
KiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAgICog
VGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgp
LCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBw
cmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAo
d2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRo
IHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4
ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxl
c3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlz
IGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgor
ICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwg
aXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3Qg
ZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhp
cyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBh
cmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0byBj
b21wYXJlLgorICAgKiBAcGFyYW0gc3JjVGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRo
aXMgb25lIHRvLgorICAgKiBAcmV0dXJuIGEgbmVnYXRpdmUvemVyby9wb3NpdGl2ZSBpbnRlZ2Vy
IGNvcnJlc3BvbmRpbmcgdG8gd2hldGhlcgorICAgKiB0aGlzIHN0cmluZyBpcyBsZXNzIHRoYW4v
ZXF1YWwgdG8vZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQgb25lCisgICAqIGluIGNvZGUgcG9pbnQg
b3JkZXIKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90IGNvbXBh
cmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkgY29uc3Q7CisKKyAgLyoq
CisgICAqIENvbXBhcmUgdHdvIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgor
ICAgKiBUaGUgcmVzdWx0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcmVzdWx0cyBvZiBjb21w
YXJlKCksIG9wZXJhdG9yPCwgZXRjLgorICAgKiBpZiBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMg
YXJlIHByZXNlbnQ6CisgICAqCisgICAqIEluIFVURi0xNiwgc3VwcGxlbWVudGFyeSBjaGFyYWN0
ZXJzICh3aXRoIGNvZGUgcG9pbnRzIFUrMTAwMDAgYW5kIGFib3ZlKSBhcmUKKyAgICogc3RvcmVk
IHdpdGggcGFpcnMgb2Ygc3Vycm9nYXRlIGNvZGUgdW5pdHMuIFRoZXNlIGhhdmUgdmFsdWVzIGZy
b20gMHhkODAwIHRvIDB4ZGZmZiwKKyAgICogd2hpY2ggbWVhbnMgdGhhdCB0aGV5IGNvbXBhcmUg
YXMgbGVzcyB0aGFuIHNvbWUgb3RoZXIgQk1QIGNoYXJhY3RlcnMgbGlrZSBVK2ZlZmYuCisgICAq
IFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgVW5pY29kZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3Jk
ZXIuCisgICAqIElmIGVpdGhlciBvZiB0aGUgVVRGLTE2IHN0cmluZ3MgaXMgbWFsZm9ybWVkIChp
LmUuLCBpdCBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzKSwgdGhlbiB0aGUgcmVzdWx0IGlz
IG5vdCBkZWZpbmVkLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IG9mZnNldCBp
biB0aGlzIHN0cmluZyBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVyYXRpb24gYmVnaW5zLgorICAg
KiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY29kZSB1bml0cyBmcm9tIHRoaXMgc3RyaW5n
IHRvIGNvbXBhcmUuCisgICAqIEBwYXJhbSBzcmNUZXh0IEFub3RoZXIgc3RyaW5nIHRvIGNvbXBh
cmUgdGhpcyBvbmUgdG8uCisgICAqIEBwYXJhbSBzcmNTdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGlu
IHRoYXQgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAq
IEBwYXJhbSBzcmNMZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhhdCBzdHJp
bmcgdG8gY29tcGFyZS4KKyAgICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50
ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIKKyAgICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0
aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICAgKiBpbiBjb2RlIHBv
aW50IG9yZGVyCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgIGlubGluZSBpbnQ4X3Qg
Y29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0
OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2lu
dCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3Vs
dHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBj
aGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRh
cnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisg
ICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZl
IHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhl
eSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStm
ZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2Rl
IHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1h
bGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhl
IHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9p
bnRlciB0byBhbm90aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFy
YW0gc3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY29kZSB1bml0cyBmcm9tIHRoYXQgc3RyaW5nIHRv
IGNvbXBhcmUuCisgICAqIEByZXR1cm4gYSBuZWdhdGl2ZS96ZXJvL3Bvc2l0aXZlIGludGVnZXIg
Y29ycmVzcG9uZGluZyB0byB3aGV0aGVyCisgICAqIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbi9l
cXVhbCB0by9ncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvbmUKKyAgICogaW4gY29kZSBwb2ludCBv
cmRlcgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQ4X3QgY29tcGFy
ZUNvZGVQb2ludE9yZGVyKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgor
ICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KKyAg
ICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3VsdHMgb2YgY29tcGFy
ZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFy
ZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVy
cyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisgICAqIHN0b3JlZCB3
aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9t
IDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjb21wYXJlIGFz
IGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStmZWZmLgorICAgKiBU
aGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVy
LgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5l
LiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhlIHJlc3VsdCBpcyBu
b3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4g
dGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICog
QHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmluZyB0
byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgQSBwb2ludGVyIHRvIGFub3RoZXIgc3Ry
aW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8uCisgICAqIEByZXR1cm4gYSBuZWdhdGl2ZS96ZXJv
L3Bvc2l0aXZlIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB3aGV0aGVyCisgICAqIHRoaXMgc3Ry
aW5nIGlzIGxlc3MgdGhhbi9lcXVhbCB0by9ncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvbmUKKyAg
ICogaW4gY29kZSBwb2ludCBvcmRlcgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlu
bGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMpIGNvbnN0
OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2lu
dCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHJlc3Vs
dHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3VwcGxlbWVudGFyeSBj
aGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYsIHN1cHBsZW1lbnRh
cnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBhYm92ZSkgYXJlCisg
ICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzLiBUaGVzZSBoYXZl
IHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1lYW5zIHRoYXQgdGhl
eSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0ZXJzIGxpa2UgVStm
ZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2Rl
IHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBzdHJpbmdzIGlzIG1h
bGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gdGhl
IHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFy
dCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJl
Z2lucy4KKyAgICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0
aGlzIHN0cmluZyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgQSBwb2ludGVyIHRv
IGFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8uCisgICAqIEBwYXJhbSBzcmNT
dGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoYXQgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJl
IG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIG51bWJlciBvZiBj
b2RlIHVuaXRzIGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHJldHVybiBhIG5l
Z2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIKKyAg
ICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhhbiB0aGUgc2Vj
b25kIG9uZQorICAgKiBpbiBjb2RlIHBvaW50IG9yZGVyCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmND
aGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3Mg
aW4gY29kZSBwb2ludCBvcmRlci4KKyAgICogVGhlIHJlc3VsdCBtYXkgYmUgZGlmZmVyZW50IGZy
b20gdGhlIHJlc3VsdHMgb2YgY29tcGFyZSgpLCBvcGVyYXRvcjwsIGV0Yy4KKyAgICogaWYgc3Vw
cGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBwcmVzZW50OgorICAgKgorICAgKiBJbiBVVEYtMTYs
IHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAod2l0aCBjb2RlIHBvaW50cyBVKzEwMDAwIGFuZCBh
Ym92ZSkgYXJlCisgICAqIHN0b3JlZCB3aXRoIHBhaXJzIG9mIHN1cnJvZ2F0ZSBjb2RlIHVuaXRz
LiBUaGVzZSBoYXZlIHZhbHVlcyBmcm9tIDB4ZDgwMCB0byAweGRmZmYsCisgICAqIHdoaWNoIG1l
YW5zIHRoYXQgdGhleSBjb21wYXJlIGFzIGxlc3MgdGhhbiBzb21lIG90aGVyIEJNUCBjaGFyYWN0
ZXJzIGxpa2UgVStmZWZmLgorICAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIFVuaWNvZGUgc3Ry
aW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICAgKiBJZiBlaXRoZXIgb2YgdGhlIFVURi0xNiBz
dHJpbmdzIGlzIG1hbGZvcm1lZCAoaS5lLiwgaXQgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRl
cyksIHRoZW4gdGhlIHJlc3VsdCBpcyBub3QgZGVmaW5lZC4KKyAgICoKKyAgICogQHBhcmFtIHN0
YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUg
b3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIGxpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIgdGhl
IGxhc3QgY29kZSB1bml0IGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFt
IHNyY1RleHQgQW5vdGhlciBzdHJpbmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICogQHBh
cmFtIHNyY1N0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2ggdGhl
IGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIHNyY0xpbWl0IFRoZSBvZmZz
ZXQgYWZ0ZXIgdGhlIGxhc3QgY29kZSB1bml0IGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFyZS4K
KyAgICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25k
aW5nIHRvIHdoZXRoZXIKKyAgICogdGhpcyBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dy
ZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICAgKiBpbiBjb2RlIHBvaW50IG9yZGVyCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjb21wYXJlQ29kZVBvaW50
T3JkZXJCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNy
Y0xpbWl0KSBjb25zdDsKKworICAvKioKKyAgICogQ29tcGFyZSB0d28gc3RyaW5ncyBjYXNlLWlu
c2Vuc2l0aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRpbmcuCisgICAqIFRoaXMgaXMgZXF1aXZh
bGVudCB0byB0aGlzLT5mb2xkQ2FzZShvcHRpb25zKS5jb21wYXJlKHRleHQuZm9sZENhc2Uob3B0
aW9ucykpLgorICAgKgorICAgKiBAcGFyYW0gdGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21wYXJl
IHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9uczoK
KyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9w
dGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRlZmF1
bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRfT1JE
RVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNv
ZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgor
ICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAgICog
QHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcg
dGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlu
bGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwgdWludDMy
X3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2Fz
ZS1pbnNlbnNpdGl2ZWx5IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlzIGVx
dWl2YWxlbnQgdG8gdGhpcy0+Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNUZXh0LmZvbGRD
YXNlKG9wdGlvbnMpKS4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQg
aW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAg
ICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJvbSB0aGlzIHN0cmlu
ZyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gc3JjVGV4dCBBbm90aGVyIHN0cmluZyB0byBjb21w
YXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9u
czoKKyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0
IG9wdGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRl
ZmF1bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRf
T1JERVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9m
IGNvZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMp
LgorICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAg
ICogQHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRp
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAg
ICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21wYXJlIHR3byBz
dHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAgICog
VGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoaXMtPmZvbGRDYXNlKG9wdGlvbnMpLmNvbXBhcmUoc3Jj
VGV4dC5mb2xkQ2FzZShvcHRpb25zKSkuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3Rh
cnQgb2Zmc2V0IGluIHRoaXMgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBi
ZWdpbnMuCisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20g
dGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHNyY1RleHQgQW5vdGhlciBzdHJp
bmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IFRoZSBzdGFy
dCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJl
Z2lucy4KKyAgICogQHBhcmFtIHNyY0xlbmd0aCBUaGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgZnJv
bSB0aGF0IHN0cmluZyB0byBjb21wYXJlLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQg
b2Ygb3B0aW9uczoKKyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZv
ciBkZWZhdWx0IG9wdGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRl
ciB3aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NP
REVfUE9JTlRfT1JERVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBp
bnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9y
IGRldGFpbHMpLgorICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kK
KyAgICoKKyAgICogQHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2Vy
IGluZGljYXRpbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4
dCwKKyAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCwKKyAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBDb21w
YXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGlu
Zy4KKyAgICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoaXMtPmZvbGRDYXNlKG9wdGlvbnMpLmNv
bXBhcmUoc3JjQ2hhcnMuZm9sZENhc2Uob3B0aW9ucykpLgorICAgKgorICAgKiBAcGFyYW0gc3Jj
Q2hhcnMgQSBwb2ludGVyIHRvIGFub3RoZXIgc3RyaW5nIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8u
CisgICAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhh
dCBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9mIG9w
dGlvbnM6CisgICAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVm
YXVsdCBvcHRpb25zOgorICAgKiAgICAgQ29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIgd2l0
aCBkZWZhdWx0IGNhc2UgZm9sZGluZy4KKyAgICoKKyAgICogICAtIFVfQ09NUEFSRV9DT0RFX1BP
SU5UX09SREVSCisgICAqICAgICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVh
ZCBvZiBjb2RlIHVuaXQgb3JkZXIKKyAgICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRh
aWxzKS4KKyAgICoKKyAgICogICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgICAq
CisgICAqIEByZXR1cm4gQSBuZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRp
Y2F0aW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgaW50OF90IGNhc2VDb21wYXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29u
c3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5
IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhp
cy0+Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNDaGFycy5mb2xkQ2FzZShvcHRpb25zKSku
CisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoaXMgc3RyaW5n
IGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMuCisgICAqIEBwYXJhbSBsZW5n
dGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4K
KyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9pbnRlciB0byBhbm90aGVyIHN0cmluZyB0byBjb21w
YXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9u
czoKKyAgICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0
IG9wdGlvbnM6CisgICAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRoIGRl
ZmF1bHQgY2FzZSBmb2xkaW5nLgorICAgKgorICAgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRf
T1JERVIKKyAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9m
IGNvZGUgdW5pdCBvcmRlcgorICAgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMp
LgorICAgKgorICAgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICoKKyAg
ICogQHJldHVybiBBIG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRp
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAorICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgdWlu
dDMyX3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgLyoqCisgICAqIENvbXBhcmUgdHdvIHN0cmluZ3Mg
Y2FzZS1pbnNlbnNpdGl2ZWx5IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgorICAgKiBUaGlzIGlz
IGVxdWl2YWxlbnQgdG8gdGhpcy0+Zm9sZENhc2Uob3B0aW9ucykuY29tcGFyZShzcmNDaGFycy5m
b2xkQ2FzZShvcHRpb25zKSkuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2Zm
c2V0IGluIHRoaXMgc3RyaW5nIGF0IHdoaWNoIHRoZSBjb21wYXJlIG9wZXJhdGlvbiBiZWdpbnMu
CisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIGZyb20gdGhpcyBz
dHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBhcmFtIHNyY0NoYXJzIEEgcG9pbnRlciB0byBhbm90
aGVyIHN0cmluZyB0byBjb21wYXJlIHRoaXMgb25lIHRvLgorICAgKiBAcGFyYW0gc3JjU3RhcnQg
VGhlIHN0YXJ0IG9mZnNldCBpbiB0aGF0IHN0cmluZyBhdCB3aGljaCB0aGUgY29tcGFyZSBvcGVy
YXRpb24gYmVnaW5zLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY29kZSB1
bml0cyBmcm9tIHRoYXQgc3RyaW5nIHRvIGNvbXBhcmUuCisgICAqIEBwYXJhbSBvcHRpb25zIEEg
Yml0IHNldCBvZiBvcHRpb25zOgorICAgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlz
IHVzZWQgZm9yIGRlZmF1bHQgb3B0aW9uczoKKyAgICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1
bml0IG9yZGVyIHdpdGggZGVmYXVsdCBjYXNlIGZvbGRpbmcuCisgICAqCisgICAqICAgLSBVX0NP
TVBBUkVfQ09ERV9QT0lOVF9PUkRFUgorICAgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50
IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyCisgICAqICAgICAoc2VlIHVfc3RyQ29t
cGFyZSBmb3IgZGV0YWlscykuCisgICAqCisgICAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQ
RUNJQUxfSQorICAgKgorICAgKiBAcmV0dXJuIEEgbmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZl
IGludGVnZXIgaW5kaWNhdGluZyB0aGUgY29tcGFyaXNvbiByZXN1bHQuCisgICAqIEBzdGFibGUg
SUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDhfdCBjYXNlQ29tcGFyZShpbnQzMl90IHN0YXJ0
LAorICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgsCisgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdDsKKworICAvKioKKyAgICogQ29t
cGFyZSB0d28gc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRp
bmcuCisgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGlzLT5mb2xkQ2FzZShvcHRpb25zKS5j
b21wYXJlQmV0d2Vlbih0ZXh0LmZvbGRDYXNlKG9wdGlvbnMpKS4KKyAgICoKKyAgICogQHBhcmFt
IHN0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhpcyBzdHJpbmcgYXQgd2hpY2ggdGhlIGNvbXBh
cmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIGxpbWl0IFRoZSBvZmZzZXQgYWZ0ZXIg
dGhlIGxhc3QgY29kZSB1bml0IGZyb20gdGhpcyBzdHJpbmcgdG8gY29tcGFyZS4KKyAgICogQHBh
cmFtIHNyY1RleHQgQW5vdGhlciBzdHJpbmcgdG8gY29tcGFyZSB0aGlzIG9uZSB0by4KKyAgICog
QHBhcmFtIHNyY1N0YXJ0IFRoZSBzdGFydCBvZmZzZXQgaW4gdGhhdCBzdHJpbmcgYXQgd2hpY2gg
dGhlIGNvbXBhcmUgb3BlcmF0aW9uIGJlZ2lucy4KKyAgICogQHBhcmFtIHNyY0xpbWl0IFRoZSBv
ZmZzZXQgYWZ0ZXIgdGhlIGxhc3QgY29kZSB1bml0IGZyb20gdGhhdCBzdHJpbmcgdG8gY29tcGFy
ZS4KKyAgICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9mIG9wdGlvbnM6CisgICAqICAgLSBV
X0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVmYXVsdCBvcHRpb25zOgorICAg
KiAgICAgQ29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIgd2l0aCBkZWZhdWx0IGNhc2UgZm9s
ZGluZy4KKyAgICoKKyAgICogICAtIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisgICAqICAg
ICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3Jk
ZXIKKyAgICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxzKS4KKyAgICoKKyAgICog
ICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgICAqCisgICAqIEByZXR1cm4gQSBu
ZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50OF90
IGNhc2VDb21wYXJlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBs
aW1pdCwKKyAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAg
ICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMaW1pdCwKKyAg
ICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1p
bmUgaWYgdGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+Cisg
ICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIG1hdGNoLgorICAgKiBAcmV0dXJuIFRSVUUgaWYg
dGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBG
QUxTRSBvdGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJv
b2wgc3RhcnRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioK
KyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgc3RhcnRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRU
PnNyY1RleHQ8L1RUPgorICAgKiBpbiB0aGUgcmFuZ2UgWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+
c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikuCisgICAqIEBwYXJhbSBzcmNUZXh0IFRoZSB0ZXh0
IHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNU
ZXh0PC9UVD4gdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVt
YmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiB0byBtYXRjaAorICAgKiBAcmV0
dXJuIFRSVUUgaWYgdGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwv
VFQ+LAorICAgKiBGQUxTRSBvdGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBpbmxpbmUgVUJvb2wgc3RhcnRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAor
ICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoKSBjb25zdDsKKworICAvKioKKyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgc3RhcnRzIHdpdGgg
dGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogQHBhcmFtIHNyY0NoYXJz
IFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPgorICAgKiBAcmV0dXJuIFRSVUUg
aWYgdGhpcyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiwK
KyAgICogRkFMU0Ugb3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5s
aW5lIFVCb29sIHN0YXJ0c1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhp
cyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4g
dGhlIHJhbmdlICBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwv
VFQ+KS4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgorICAg
KiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gc3Rh
cnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gKKyAgICogQHJldHVybiBUUlVFIGlmIHRo
aXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LCBGQUxTRSBv
dGhlcndpc2UKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgc3Rh
cnRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAg
KiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnRleHQ8
L1RUPgorICAgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBtYXRjaC4KKyAgICogQHJldHVybiBU
UlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4sCisg
ICAqIEZBTFNFIG90aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBVQm9vbCBlbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAv
KioKKyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxU
VD5zcmNUZXh0PC9UVD4KKyAgICogaW4gdGhlIHJhbmdlIFs8VFQ+c3JjU3RhcnQ8L1RUPiwgPFRU
PnNyY1N0YXJ0ICsgc3JjTGVuZ3RoPC9UVD4pLgorICAgKiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4
dCB0byBtYXRjaC4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3Jj
VGV4dDwvVFQ+IHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gdG8gbWF0Y2gKKyAgICogQHJl
dHVybiBUUlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9U
VD4sCisgICAqIEZBTFNFIG90aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisg
IGlubGluZSBVQm9vbCBlbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNv
bnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhlIGNoYXJh
Y3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSBjaGFy
YWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhpcyBl
bmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIEZBTFNF
IG90aGVyd2lzZQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVQm9vbCBl
bmRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpIGNvbnN0OworCisgIC8qKgorICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbmRzIHdpdGggdGhl
IGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4gdGhlIHJhbmdlICBbPFRU
PnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogQHBh
cmFtIHNyY0NoYXJzIFRoZSBjaGFyYWN0ZXJzIHRvIG1hdGNoLgorICAgKiBAcGFyYW0gc3JjU3Rh
cnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gdG8gc3RhcnQgbWF0Y2hpbmcKKyAg
ICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0No
YXJzPC9UVD4gdG8gbWF0Y2gKKyAgICogQHJldHVybiBUUlVFIGlmIHRoaXMgZW5kcyB3aXRoIHRo
ZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LAorICAgKiBGQUxTRSBvdGhlcndpc2UK
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVUJvb2wgZW5kc1dpdGgoY29u
c3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OworCisKKyAgLyogU2VhcmNoaW5nIC0gYml0d2lz
ZSBvbmx5ICovCisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJl
bmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4sCisgICAqIHVzaW5nIGJpdHdp
c2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4K
KyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRl
eHQ8L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIGlubGluZSBpbnQzMl90IGluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4
dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJl
bmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD50ZXh0PC9UVD4KKyAgICogc3RhcnRpbmcgYXQg
b2Zmc2V0IDxUVD5zdGFydDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBw
YXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUg
b2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBv
ZmZzZXQgaW50byB0aGlzIG9mIHRoZSBzdGFydCBvZiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBvciAt
MSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGlu
dDMyX3QgaW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0KSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGZp
cnN0IG9jY3VycmVuY2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0
YXJ0ICsgbGVuZ3RoPC9UVD4pIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD50ZXh0PC9U
VD4sIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHRleHQgVGhlIHRleHQg
dG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHN0YXJ0IFRoZSBvZmZzZXQgYXQgd2hpY2ggc2Vh
cmNoaW5nIHdpbGwgc3RhcnQuCisgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIHRvIHNlYXJjaAorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIHRo
ZSBzdGFydCBvZiA8VFQ+dGV4dDwvVFQ+LAorICAgKiBvciAtMSBpZiBub3QgZm91bmQuCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0
aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0PC9U
VD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSBvZiB0aGUgY2hhcmFjdGVycworICAgKiAgaW4g
PFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8
VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPiksCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFy
aXNvbi4KKyAgICogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICog
QHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IGF0IHdoaWNo
CisgICAqIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJl
ciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gdG8gbWF0Y2gKKyAgICogQHBhcmFt
IHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisg
ICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gc2Vh
cmNoCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxU
VD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0
aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXJzIGluCisgICAqIDxUVD5z
cmNDaGFyczwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNp
bmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIHRleHQgdG8g
c2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gKKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBv
ZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEByZXR1cm4g
VGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAq
IG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxp
bmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0Owor
CisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBpbiB0aGUg
cmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgb2Yg
dGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY0NoYXJzPC9UVD4sIHVzaW5nIGJpdHdpc2Ug
Y29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3Iu
CisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5z
cmNDaGFyczwvVFQ+CisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNlYXJj
aGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUg
c3RhcnQgb2YgPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKGNvbnN0
IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAg
ICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBj
b25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGZpcnN0IG9jY3VycmVuY2Ug
aW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9U
VD4pIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSBy
YW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwv
VFQ+KSwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3JjQ2hh
cnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZz
ZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiBhdCB3aGljaAorICAgKiB0byBzdGFydCBtYXRjaGlu
ZworICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+
c3JjQ2hhcnM8L1RUPiB0byBtYXRjaAorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBpbnRv
IHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUg
b2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3Ig
LTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGludDMyX3Qg
aW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAg
LyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBCTVAg
Y29kZSBwb2ludCA8Y29kZT5jPC9jb2RlPiwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29u
LgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0IHRvIHNlYXJjaCBmb3IuCisgICAqIEByZXR1
cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5k
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGluZGV4T2Yo
VUNoYXIgYykgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBv
Y2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4sCisgICAqIHVzaW5nIGJpdHdp
c2UgY29tcGFyaXNvbi4KKyAgICoKKyAgICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gc2Vh
cmNoIGZvci4KKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+
LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5s
aW5lIGludDMyX3QgaW5kZXhPZihVQ2hhcjMyIGMpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2Nh
dGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUgcG9pbnQgPGNv
ZGU+YzwvY29kZT4sCisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNp
bmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0IHRvIHNl
YXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGlu
ZyB3aWxsIHN0YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIDxUVD5j
PC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLwor
ICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKFVDaGFyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2Nj
dXJyZW5jZSBvZiB0aGUgY29kZSBwb2ludCA8VFQ+YzwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9m
ZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKgorICAg
KiBAcGFyYW0gYyBUaGUgY29kZSBwb2ludCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3Rh
cnQgVGhlIG9mZnNldCBhdCB3aGljaCBzZWFyY2hpbmcgd2lsbCBzdGFydC4KKyAgICogQHJldHVy
biBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQu
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihV
Q2hhcjMyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgor
ICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUg
cG9pbnQgPGNvZGU+YzwvY29kZT4KKyAgICogaW4gdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwg
PFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLAorICAgKiB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24u
CisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHVuaXQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFt
IHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNoaW5nCisg
ICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gc2Vh
cmNoCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3Ig
LTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBp
bnQzMl90IGluZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUg
aW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29kZSBwb2ludCA8VFQ+YzwvVFQ+
CisgICAqIGluIHRoZSByYW5nZSBbPFRUPnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwv
VFQ+KSwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKgorICAgKiBAcGFyYW0g
YyBUaGUgY29kZSBwb2ludCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9m
ZnNldCBpbnRvIHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxl
bmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJl
dHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91
bmQuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgaW5kZXhP
ZihVQ2hhcjMyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAg
IGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhl
IGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+LAorICAg
KiB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRv
IHNlYXJjaCBmb3IuCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0
YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMg
dGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+Cisg
ICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21w
YXJpc29uLgorICAgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBzZWFyY2ggZm9yLgorICAgKiBA
cGFyYW0gc3RhcnQgVGhlIG9mZnNldCBhdCB3aGljaCBzZWFyY2hpbmcgd2lsbCBzdGFydC4KKyAg
ICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8
L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRl
eHQsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBM
b2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIGluIHRoZSByYW5nZQorICAgKiBbPFRU
PnN0YXJ0PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSBvZiB0aGUgY2hhcmFjdGVycwor
ICAgKiBpbiA8VFQ+dGV4dDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqIEBw
YXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUg
b2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3Ro
IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zm
c2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnRleHQ8L1RUPiwKKyAgICogb3IgLTEg
aWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQz
Ml90IGxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAg
IGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKwor
ICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBpbiB0aGUgcmFu
Z2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgb2YgdGhl
IGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICog
WzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPiksCisgICAq
IHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQg
dG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+
c3JjVGV4dDwvVFQ+IGF0IHdoaWNoCisgICAqIHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJh
bSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4g
dG8gbWF0Y2gKKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNo
IHRvIHN0YXJ0IG1hdGNoaW5nCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIHRoaXMgdG8gc2VhcmNoCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRo
aXMgb2YgdGhlIHN0YXJ0IG9mIDxUVD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3Vu
ZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5k
ZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAg
ICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0Owor
CisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBj
aGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+CisgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8
VFQ+c3RhcnQ8L1RUPiwgdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gc3Jj
Q2hhcnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4gdG8gbWF0Y2gKKyAgICog
QHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGlzIGF0IHdoaWNoIHRvIHN0YXJ0IG1hdGNo
aW5nCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgdGhlIHN0YXJ0IG9mIDxU
VD50ZXh0PC9UVD4sCisgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0KSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxh
c3Qgb2NjdXJyZW5jZSBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3Rh
cnQgKyBsZW5ndGg8L1RUPikgb2YgdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY0NoYXJz
PC9UVD4sIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIHNyY0NoYXJzIFRo
ZSB0ZXh0IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+CisgICAqIEBwYXJhbSBzdGFydCBUaGUg
b2Zmc2V0IGF0IHdoaWNoIHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcGFyYW0gbGVuZ3Ro
IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBzZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zm
c2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2YgPFRUPnNyY0NoYXJzPC9UVD4sCisgICAqIG9y
IC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUg
aW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgLyoqCisgICAqIExvY2F0ZSBpbiB0
aGlzIHRoZSBsYXN0IG9jY3VycmVuY2UgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RU
PiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAqIGluIDxU
VD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxU
VD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KSwKKyAgICogdXNpbmcgYml0d2lzZSBjb21wYXJp
c29uLgorICAgKiBAcGFyYW0gc3JjQ2hhcnMgVGhlIHRleHQgdG8gc2VhcmNoIGZvci4KKyAgICog
QHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiBhdCB3aGlj
aAorICAgKiB0byBzdGFydCBtYXRjaGluZworICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiB0byBtYXRjaAorICAgKiBAcGFy
YW0gc3RhcnQgdGhlIG9mZnNldCBpbnRvIHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcK
KyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBz
ZWFyY2gKKyAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiB0aGUgc3RhcnQgb2Yg
PFRUPnRleHQ8L1RUPiwKKyAgICogb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGludDMyX3QgbGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
aW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUg
bGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBCTVAgY29kZSBwb2ludCA8Y29kZT5jPC9jb2RlPiwKKyAg
ICogdXNpbmcgYml0d2lzZSBjb21wYXJpc29uLgorICAgKiBAcGFyYW0gYyBUaGUgY29kZSB1bml0
IHRvIHNlYXJjaCBmb3IuCisgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRU
PmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5kLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKFVDaGFyIGMpIGNvbnN0OworCisgIC8qKgor
ICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50
IDxUVD5jPC9UVD4sCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICoKKyAgICog
QHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gc2VhcmNoIGZvci4KKyAgICogQHJldHVybiBUaGUg
b2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoVUNo
YXIzMiBjKSBjb25zdDsKKworICAvKioKKyAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qgb2Nj
dXJyZW5jZSBvZiB0aGUgQk1QIGNvZGUgcG9pbnQgPGNvZGU+YzwvY29kZT4KKyAgICogc3RhcnRp
bmcgYXQgb2Zmc2V0IDxUVD5zdGFydDwvVFQ+LCB1c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisg
ICAqIEBwYXJhbSBjIFRoZSBjb2RlIHVuaXQgdG8gc2VhcmNoIGZvci4KKyAgICogQHBhcmFtIHN0
YXJ0IFRoZSBvZmZzZXQgYXQgd2hpY2ggc2VhcmNoaW5nIHdpbGwgc3RhcnQuCisgICAqIEByZXR1
cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5k
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGxhc3RJbmRl
eE9mKFVDaGFyIGMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8q
KgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBv
aW50IDxUVD5jPC9UVD4KKyAgICogc3RhcnRpbmcgYXQgb2Zmc2V0IDxUVD5zdGFydDwvVFQ+LCB1
c2luZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqCisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHBv
aW50IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCBUaGUgb2Zmc2V0IGF0IHdoaWNo
IHNlYXJjaGluZyB3aWxsIHN0YXJ0LgorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlz
IG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhcjMyIGMsCisgICAgICAg
ICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhp
cyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBCTVAgY29kZSBwb2ludCA8Y29kZT5jPC9jb2Rl
PgorICAgKiBpbiB0aGUgcmFuZ2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8
L1RUPiksCisgICAqIHVzaW5nIGJpdHdpc2UgY29tcGFyaXNvbi4KKyAgICogQHBhcmFtIGMgVGhl
IGNvZGUgdW5pdCB0byBzZWFyY2ggZm9yLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBp
bnRvIHRoaXMgYXQgd2hpY2ggdG8gc3RhcnQgbWF0Y2hpbmcKKyAgICogQHBhcmFtIGxlbmd0aCB0
aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBzZWFyY2gKKyAgICogQHJldHVybiBU
aGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2Yo
VUNoYXIgYywKKyAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50
MzJfdCBsZW5ndGgpIGNvbnN0OworCisgIC8qKgorICAgKiBMb2NhdGUgaW4gdGhpcyB0aGUgbGFz
dCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4KKyAgICogaW4gdGhlIHJh
bmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLAorICAgKiB1c2lu
ZyBiaXR3aXNlIGNvbXBhcmlzb24uCisgICAqCisgICAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50
IHRvIHNlYXJjaCBmb3IuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGludG8gdGhpcyBh
dCB3aGljaCB0byBzdGFydCBtYXRjaGluZworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyBpbiB0aGlzIHRvIHNlYXJjaAorICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQg
aW50byB0aGlzIG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhcjMyIGMs
CisgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoKSBjb25zdDsKKworCisgIC8qIENoYXJhY3RlciBhY2Nlc3MgKi8KKworICAvKioKKyAgICog
UmV0dXJuIHRoZSBjb2RlIHVuaXQgYXQgb2Zmc2V0IDx0dD5vZmZzZXQ8L3R0Pi4KKyAgICogSWYg
dGhlIG9mZnNldCBpcyBub3QgdmFsaWQgKDAuLmxlbmd0aCgpLTEpIHRoZW4gVStmZmZmIGlzIHJl
dHVybmVkLgorICAgKiBAcGFyYW0gb2Zmc2V0IGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQK
KyAgICogQHJldHVybiB0aGUgY29kZSB1bml0IGF0IG9mZnNldCA8dHQ+b2Zmc2V0PC90dD4KKyAg
ICogICAgICAgICBvciAweGZmZmYgaWYgdGhlIG9mZnNldCBpcyBub3QgdmFsaWQgZm9yIHRoaXMg
c3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVDaGFyIGNoYXJB
dChpbnQzMl90IG9mZnNldCkgY29uc3Q7CisKKyAgLyoqCisgICAqIFJldHVybiB0aGUgY29kZSB1
bml0IGF0IG9mZnNldCA8dHQ+b2Zmc2V0PC90dD4uCisgICAqIElmIHRoZSBvZmZzZXQgaXMgbm90
IHZhbGlkICgwLi5sZW5ndGgoKS0xKSB0aGVuIFUrZmZmZiBpcyByZXR1cm5lZC4KKyAgICogQHBh
cmFtIG9mZnNldCBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisgICAqIEByZXR1cm4gdGhl
IGNvZGUgdW5pdCBhdCBvZmZzZXQgPHR0Pm9mZnNldDwvdHQ+CisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIFVDaGFyIG9wZXJhdG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25z
dDsKKworICAvKioKKyAgICogUmV0dXJuIHRoZSBjb2RlIHBvaW50IHRoYXQgY29udGFpbnMgdGhl
IGNvZGUgdW5pdAorICAgKiBhdCBvZmZzZXQgPHR0Pm9mZnNldDwvdHQ+LgorICAgKiBJZiB0aGUg
b2Zmc2V0IGlzIG5vdCB2YWxpZCAoMC4ubGVuZ3RoKCktMSkgdGhlbiBVK2ZmZmYgaXMgcmV0dXJu
ZWQuCisgICAqIEBwYXJhbSBvZmZzZXQgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorICAg
KiB0aGF0IGluZGljYXRlcyB0aGUgdGV4dCBvZmZzZXQgb2YgYW55IG9mIHRoZSBjb2RlIHVuaXRz
CisgICAqIHRoYXQgd2lsbCBiZSBhc3NlbWJsZWQgaW50byBhIGNvZGUgcG9pbnQgKDIxLWJpdCB2
YWx1ZSkgYW5kIHJldHVybmVkCisgICAqIEByZXR1cm4gdGhlIGNvZGUgcG9pbnQgb2YgdGV4dCBh
dCA8dHQ+b2Zmc2V0PC90dD4KKyAgICogICAgICAgICBvciAweGZmZmYgaWYgdGhlIG9mZnNldCBp
cyBub3QgdmFsaWQgZm9yIHRoaXMgc3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8K
KyAgaW5saW5lIFVDaGFyMzIgY2hhcjMyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0OworCisgIC8q
KgorICAgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNldCBzbyB0aGF0CisgICAqIGl0IHBv
aW50cyB0byB0aGUgYmVnaW5uaW5nIG9mIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAqIFRoZSBv
ZmZzZXQgdGhhdCBpcyBwYXNzZWQgaW4gcG9pbnRzIHRvCisgICAqIGFueSBjb2RlIHVuaXQgb2Yg
YSBjb2RlIHBvaW50LAorICAgKiB3aGlsZSB0aGUgcmV0dXJuZWQgb2Zmc2V0IHdpbGwgcG9pbnQg
dG8gdGhlIGZpcnN0IGNvZGUgdW5pdAorICAgKiBvZiB0aGUgc2FtZSBjb2RlIHBvaW50LgorICAg
KiBJbiBVVEYtMTYsIGlmIHRoZSBpbnB1dCBvZmZzZXQgcG9pbnRzIHRvIGEgc2Vjb25kIHN1cnJv
Z2F0ZQorICAgKiBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCB0aGVuIHRoZSByZXR1cm5lZCBvZmZzZXQg
d2lsbCBwb2ludAorICAgKiB0byB0aGUgZmlyc3Qgc3Vycm9nYXRlLgorICAgKiBAcGFyYW0gb2Zm
c2V0IGEgdmFsaWQgb2Zmc2V0IGludG8gb25lIGNvZGUgcG9pbnQgb2YgdGhlIHRleHQKKyAgICog
QHJldHVybiBvZmZzZXQgb2YgdGhlIGZpcnN0IGNvZGUgdW5pdCBvZiB0aGUgc2FtZSBjb2RlIHBv
aW50CisgICAqIEBzZWUgVTE2X1NFVF9DUF9TVEFSVAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBpbnQzMl90IGdldENoYXIzMlN0YXJ0KGludDMyX3Qgb2Zmc2V0KSBjb25z
dDsKKworICAvKioKKyAgICogQWRqdXN0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQgc28gdGhhdAor
ICAgKiBpdCBwb2ludHMgYmVoaW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAqIFRoZSBvZmZz
ZXQgdGhhdCBpcyBwYXNzZWQgaW4gcG9pbnRzIGJlaGluZAorICAgKiBhbnkgY29kZSB1bml0IG9m
IGEgY29kZSBwb2ludCwKKyAgICogd2hpbGUgdGhlIHJldHVybmVkIG9mZnNldCB3aWxsIHBvaW50
IGJlaGluZCB0aGUgbGFzdCBjb2RlIHVuaXQKKyAgICogb2YgdGhlIHNhbWUgY29kZSBwb2ludC4K
KyAgICogSW4gVVRGLTE2LCBpZiB0aGUgaW5wdXQgb2Zmc2V0IHBvaW50cyBiZWhpbmQgdGhlIGZp
cnN0IHN1cnJvZ2F0ZQorICAgKiAoaS5lLiwgdG8gdGhlIHNlY29uZCBzdXJyb2dhdGUpCisgICAq
IG9mIGEgc3Vycm9nYXRlIHBhaXIsIHRoZW4gdGhlIHJldHVybmVkIG9mZnNldCB3aWxsIHBvaW50
CisgICAqIGJlaGluZCB0aGUgc2Vjb25kIHN1cnJvZ2F0ZSAoaS5lLiwgdG8gdGhlIGZpcnN0IHN1
cnJvZ2F0ZSkuCisgICAqIEBwYXJhbSBvZmZzZXQgYSB2YWxpZCBvZmZzZXQgYWZ0ZXIgYW55IGNv
ZGUgdW5pdCBvZiBhIGNvZGUgcG9pbnQgb2YgdGhlIHRleHQKKyAgICogQHJldHVybiBvZmZzZXQg
b2YgdGhlIGZpcnN0IGNvZGUgdW5pdCBhZnRlciB0aGUgc2FtZSBjb2RlIHBvaW50CisgICAqIEBz
ZWUgVTE2X1NFVF9DUF9MSU1JVAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBpbnQzMl90IGdldENoYXIzMkxpbWl0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKworICAvKioK
KyAgICogTW92ZSB0aGUgY29kZSB1bml0IGluZGV4IGFsb25nIHRoZSBzdHJpbmcgYnkgZGVsdGEg
Y29kZSBwb2ludHMuCisgICAqIEludGVycHJldCB0aGUgaW5wdXQgaW5kZXggYXMgYSBjb2RlIHVu
aXQtYmFzZWQgb2Zmc2V0IGludG8gdGhlIHN0cmluZywKKyAgICogbW92ZSB0aGUgaW5kZXggZm9y
d2FyZCBvciBiYWNrd2FyZCBieSBkZWx0YSBjb2RlIHBvaW50cywgYW5kCisgICAqIHJldHVybiB0
aGUgcmVzdWx0aW5nIGluZGV4LgorICAgKiBUaGUgaW5wdXQgaW5kZXggc2hvdWxkIHBvaW50IHRv
IHRoZSBmaXJzdCBjb2RlIHVuaXQgb2YgYSBjb2RlIHBvaW50LAorICAgKiBpZiB0aGVyZSBpcyBt
b3JlIHRoYW4gb25lLgorICAgKgorICAgKiBCb3RoIGlucHV0IGFuZCBvdXRwdXQgaW5kZXhlcyBh
cmUgY29kZSB1bml0LWJhc2VkIGFzIGZvciBhbGwKKyAgICogc3RyaW5nIGluZGV4ZXMvb2Zmc2V0
cyBpbiBJQ1UgKGFuZCBvdGhlciBsaWJyYXJpZXMsIGxpa2UgTUJDUyBjaGFyKikuCisgICAqIElm
IGRlbHRhPDAgdGhlbiB0aGUgaW5kZXggaXMgbW92ZWQgYmFja3dhcmQgKHRvd2FyZCB0aGUgc3Rh
cnQgb2YgdGhlIHN0cmluZykuCisgICAqIElmIGRlbHRhPjAgdGhlbiB0aGUgaW5kZXggaXMgbW92
ZWQgZm9yd2FyZCAodG93YXJkIHRoZSBlbmQgb2YgdGhlIHN0cmluZykuCisgICAqCisgICAqIFRo
aXMgYmVoYXZlcyBsaWtlIENoYXJhY3Rlckl0ZXJhdG9yOjptb3ZlMzIoZGVsdGEsIGtDdXJyZW50
KS4KKyAgICoKKyAgICogQmVoYXZpb3IgZm9yIG91dC1vZi1ib3VuZHMgaW5kZXhlczoKKyAgICog
PGNvZGU+bW92ZUluZGV4MzI8L2NvZGU+IHBpbnMgdGhlIGlucHV0IGluZGV4IHRvIDAuLmxlbmd0
aCgpLCBpLmUuLAorICAgKiBpZiB0aGUgaW5wdXQgaW5kZXg8MCB0aGVuIGl0IGlzIHBpbm5lZCB0
byAwOworICAgKiBpZiBpdCBpcyBpbmRleD5sZW5ndGgoKSB0aGVuIGl0IGlzIHBpbm5lZCB0byBs
ZW5ndGgoKS4KKyAgICogQWZ0ZXJ3YXJkcywgdGhlIGluZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRl
bHRhPC9jb2RlPiBjb2RlIHBvaW50cworICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkLAorICAgKiBi
dXQgbm8gZnVydGhlciBiYWNrd2FyZCB0aGFuIHRvIDAgYW5kIG5vIGZ1cnRoZXIgZm9yd2FyZCB0
aGFuIHRvIGxlbmd0aCgpLgorICAgKiBUaGUgcmVzdWx0aW5nIGluZGV4IHJldHVybiB2YWx1ZSB3
aWxsIGJlIGluIGJldHdlZW4gMCBhbmQgbGVuZ3RoKCksIGluY2x1c2l2ZWx5LgorICAgKgorICAg
KiBFeGFtcGxlczoKKyAgICogPHByZT4KKyAgICogLy8gcyBoYXMgY29kZSBwb2ludHMgJ2EnIFUr
MTAwMDAgJ2InIFUrMTBmZmZmIFUrMjAyOQorICAgKiBVbmljb2RlU3RyaW5nIHM9VU5JQ09ERV9T
VFJJTkcoImFcXFUwMDAxMDAwMGJcXFUwMDEwZmZmZlxcdTIwMjkiLCAzMSkudW5lc2NhcGUoKTsK
KyAgICoKKyAgICogLy8gaW5pdGlhbCBpbmRleDogcG9zaXRpb24gb2YgVSsxMDAwMAorICAgKiBp
bnQzMl90IGluZGV4PTE7CisgICAqCisgICAqIC8vIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgd2ls
bCBhbGwgcmVzdWx0IGluIGluZGV4PT00LCBwb3NpdGlvbiBvZiBVKzEwZmZmZgorICAgKgorICAg
KiAvLyBza2lwIDIgY29kZSBwb2ludHMgZnJvbSBzb21lIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcK
KyAgICogaW5kZXg9cy5tb3ZlSW5kZXgzMihpbmRleCwgMik7IC8vIHNraXBzIFUrMTAwMDAgYW5k
ICdiJworICAgKgorICAgKiAvLyBnbyB0byB0aGUgM3JkIGNvZGUgcG9pbnQgZnJvbSB0aGUgc3Rh
cnQgb2YgcyAoMC1iYXNlZCkKKyAgICogaW5kZXg9cy5tb3ZlSW5kZXgzMigwLCAzKTsgLy8gc2tp
cHMgJ2EnLCBVKzEwMDAwLCBhbmQgJ2InCisgICAqCisgICAqIC8vIGdvIHRvIHRoZSBuZXh0LXRv
LWxhc3QgY29kZSBwb2ludCBvZiBzCisgICAqIGluZGV4PXMubW92ZUluZGV4MzIocy5sZW5ndGgo
KSwgLTIpOyAvLyBiYWNrd2FyZC1za2lwcyBVKzIwMjkgYW5kIFUrMTBmZmZmCisgICAqIDwvcHJl
PgorICAgKgorICAgKiBAcGFyYW0gaW5kZXggaW5wdXQgY29kZSB1bml0IGluZGV4CisgICAqIEBw
YXJhbSBkZWx0YSAoc2lnbmVkKSBjb2RlIHBvaW50IGNvdW50IHRvIG1vdmUgdGhlIGluZGV4IGZv
cndhcmQgb3IgYmFja3dhcmQKKyAgICogICAgICAgIGluIHRoZSBzdHJpbmcKKyAgICogQHJldHVy
biB0aGUgcmVzdWx0aW5nIGNvZGUgdW5pdCBpbmRleAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGludDMyX3QgbW92ZUluZGV4MzIoaW50MzJfdCBpbmRleCwgaW50MzJfdCBkZWx0YSkg
Y29uc3Q7CisKKyAgLyogU3Vic3RyaW5nIGV4dHJhY3Rpb24gKi8KKworICAvKioKKyAgICogQ29w
eSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFydDwvdHQ+LCA8dHQ+
c3RhcnQgKyBsZW5ndGg8L3R0PikgaW50byB0aGUgYXJyYXkgPHR0PmRzdDwvdHQ+LAorICAgKiBi
ZWdpbm5pbmcgYXQgPHR0PmRzdFN0YXJ0PC90dD4uCisgICAqIElmIHRoZSBzdHJpbmcgYWxpYXNl
cyB0byA8Y29kZT5kc3Q8L2NvZGU+IGl0c2VsZiBhcyBhbiBleHRlcm5hbCBidWZmZXIsCisgICAq
IHRoZW4gZXh0cmFjdCgpIHdpbGwgbm90IGNvcHkgdGhlIGNvbnRlbnRzLgorICAgKgorICAgKiBA
cGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGll
ZCBpbnRvIHRoZSBhcnJheQorICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyB0byBleHRyYWN0CisgICAqIEBwYXJhbSBkc3QgYXJyYXkgaW4gd2hpY2ggdG8gY29weSBj
aGFyYWN0ZXJzLiAgVGhlIGxlbmd0aCBvZiA8dHQ+ZHN0PC90dD4KKyAgICogbXVzdCBiZSBhdCBs
ZWFzdCAoPHR0PmRzdFN0YXJ0ICsgbGVuZ3RoPC90dD4pLgorICAgKiBAcGFyYW0gZHN0U3RhcnQg
dGhlIG9mZnNldCBpbiA8VFQ+ZHN0PC9UVD4gd2hlcmUgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAg
KiB3aWxsIGJlIGV4dHJhY3RlZAorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSB2b2lkIGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
CisgICAgICAgICAgIFVDaGFyICpkc3QsCisgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQgPSAw
KSBjb25zdDsKKworICAvKioKKyAgICogQ29weSB0aGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBp
bnRvIGRlc3QuCisgICAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0CisgICAq
IGNoZWNrcyBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gZGVzdCwKKyAgICogZXh0cmFjdHMg
dGhlIGVudGlyZSBzdHJpbmcgaWYgcG9zc2libGUsCisgICAqIGFuZCBOVUwtdGVybWluYXRlcyBk
ZXN0IGlmIHBvc3NpYmxlLgorICAgKgorICAgKiBJZiB0aGUgc3RyaW5nIGZpdHMgaW50byBkZXN0
IGJ1dCBjYW5ub3QgYmUgTlVMLXRlcm1pbmF0ZWQKKyAgICogKGxlbmd0aCgpPT1kZXN0Q2FwYWNp
dHkpIHRoZW4gdGhlIGVycm9yIGNvZGUgaXMgc2V0IHRvIFVfU1RSSU5HX05PVF9URVJNSU5BVEVE
X1dBUk5JTkcuCisgICAqIElmIHRoZSBzdHJpbmcgaXRzZWxmIGRvZXMgbm90IGZpdCBpbnRvIGRl
c3QKKyAgICogKGxlbmd0aCgpPmRlc3RDYXBhY2l0eSkgdGhlbiB0aGUgZXJyb3IgY29kZSBpcyBz
ZXQgdG8gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IuCisgICAqCisgICAqIElmIHRoZSBzdHJpbmcg
YWxpYXNlcyB0byA8Y29kZT5kZXN0PC9jb2RlPiBpdHNlbGYgYXMgYW4gZXh0ZXJuYWwgYnVmZmVy
LAorICAgKiB0aGVuIGV4dHJhY3QoKSB3aWxsIG5vdCBjb3B5IHRoZSBjb250ZW50cy4KKyAgICoK
KyAgICogQHBhcmFtIGRlc3QgRGVzdGluYXRpb24gc3RyaW5nIGJ1ZmZlci4KKyAgICogQHBhcmFt
IGRlc3RDYXBhY2l0eSBOdW1iZXIgb2YgVUNoYXJzIGF2YWlsYWJsZSBhdCBkZXN0LgorICAgKiBA
cGFyYW0gZXJyb3JDb2RlIElDVSBlcnJvciBjb2RlLgorICAgKiBAcmV0dXJuIGxlbmd0aCgpCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdAorICBleHRyYWN0KFVDaGFyICpk
ZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNv
ZGUpIGNvbnN0OworCisgIC8qKgorICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5n
ZQorICAgKiBbPHR0PnN0YXJ0PC90dD4sIDx0dD5zdGFydCArIGxlbmd0aDwvdHQ+KSBpbnRvIHRo
ZSAgVW5pY29kZVN0cmluZworICAgKiA8dHQ+dGFyZ2V0PC90dD4uCisgICAqIEBwYXJhbSBzdGFy
dCBvZmZzZXQgb2YgZmlyc3QgY2hhcmFjdGVyIHdoaWNoIHdpbGwgYmUgY29waWVkCisgICAqIEBw
YXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBh
cmFtIHRhcmdldCBVbmljb2RlU3RyaW5nIGludG8gd2hpY2ggdG8gY29weSBjaGFyYWN0ZXJzLgor
ICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICovCisgIGlubGluZSB2b2lkIGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHRhcmdl
dCkgY29uc3Q7CisKKyAgLyoqCisgICAqIENvcHkgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdl
IFs8dHQ+c3RhcnQ8L3R0PiwgPHR0PmxpbWl0PC90dD4pCisgICAqIGludG8gdGhlIGFycmF5IDx0
dD5kc3Q8L3R0PiwgYmVnaW5uaW5nIGF0IDx0dD5kc3RTdGFydDwvdHQ+LgorICAgKiBAcGFyYW0g
c3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRv
IHRoZSBhcnJheQorICAgKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2lu
ZyB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkCisgICAqIEBwYXJhbSBkc3QgYXJyYXkg
aW4gd2hpY2ggdG8gY29weSBjaGFyYWN0ZXJzLiAgVGhlIGxlbmd0aCBvZiA8dHQ+ZHN0PC90dD4K
KyAgICogbXVzdCBiZSBhdCBsZWFzdCAoPHR0PmRzdFN0YXJ0ICsgKGxpbWl0IC0gc3RhcnQpPC90
dD4pLgorICAgKiBAcGFyYW0gZHN0U3RhcnQgdGhlIG9mZnNldCBpbiA8VFQ+ZHN0PC9UVD4gd2hl
cmUgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAgKiB3aWxsIGJlIGV4dHJhY3RlZAorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSB2b2lkIGV4dHJhY3RCZXR3ZWVuKGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgIFVDaGFy
ICpkc3QsCisgICAgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQgPSAwKSBjb25zdDsKKworICAv
KioKKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzx0dD5zdGFydDwvdHQ+
LCA8dHQ+bGltaXQ8L3R0PikKKyAgICogaW50byB0aGUgVW5pY29kZVN0cmluZyA8dHQ+dGFyZ2V0
PC90dD4uICBSZXBsYWNlYWJsZSBBUEkuCisgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmly
c3QgY2hhcmFjdGVyIHdoaWNoIHdpbGwgYmUgY29waWVkCisgICAqIEBwYXJhbSBsaW1pdCBvZmZz
ZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQK
KyAgICogQHBhcmFtIHRhcmdldCBVbmljb2RlU3RyaW5nIGludG8gd2hpY2ggdG8gY29weSBjaGFy
YWN0ZXJzLgorICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIDxUVD50YXJnZXQ8L1RUPgorICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZpcnR1YWwgdm9pZCBleHRyYWN0QmV0d2Vlbihp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAg
ICBVbmljb2RlU3RyaW5nJiB0YXJnZXQpIGNvbnN0OworCisgIC8qKgorICAgKiBDb3B5IHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSByYW5nZSAKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3RhcnQg
KyBsZW5ndGg8L1RUPikgaW50byBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLgorICAgKiBBbGwgY2hh
cmFjdGVycyBtdXN0IGJlIGludmFyaWFudCAoc2VlIHV0eXBlcy5oKS4KKyAgICogVXNlIFVTX0lO
ViBhcyB0aGUgbGFzdCwgc2lnbmF0dXJlLWRpc3Rpbmd1aXNoaW5nIHBhcmFtZXRlci4KKyAgICoK
KyAgICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB3cml0ZSBhbnkgbW9yZSB0aGFuIDxjb2RlPnRh
cmdldExlbmd0aDwvY29kZT4KKyAgICogY2hhcmFjdGVycyBidXQgcmV0dXJucyB0aGUgbGVuZ3Ro
IG9mIHRoZSBlbnRpcmUgb3V0cHV0IHN0cmluZworICAgKiBzbyB0aGF0IG9uZSBjYW4gYWxsb2Nh
dGUgYSBsYXJnZXIgYnVmZmVyIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiBhZ2FpbgorICAgKiBpZiBu
ZWNlc3NhcnkuCisgICAqIFRoZSBvdXRwdXQgc3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkIGlmIHBv
c3NpYmxlLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3Rl
ciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgKiBAcGFyYW0gc3RhcnRMZW5ndGggdGhlIG51bWJl
ciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0
IGJ1ZmZlciBmb3IgZXh0cmFjdGlvbiwgY2FuIGJlIE5VTEwKKyAgICogICAgICAgICAgICAgICBp
ZiB0YXJnZXRMZW5ndGggaXMgMAorICAgKiBAcGFyYW0gdGFyZ2V0Q2FwYWNpdHkgdGhlIGxlbmd0
aCBvZiB0aGUgdGFyZ2V0IGJ1ZmZlcgorICAgKiBAcGFyYW0gaW52IFNpZ25hdHVyZS1kaXN0aW5n
dWlzaGluZyBwYXJhbWF0ZXIsIHVzZSBVU19JTlYuCisgICAqIEByZXR1cm4gdGhlIG91dHB1dCBz
dHJpbmcgbGVuZ3RoLCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBOVUwKKyAgICogQHN0
YWJsZSBJQ1UgMy4yCisgICAqLworICBpbnQzMl90IGV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgaW50MzJfdCBzdGFydExlbmd0aCwKKyAgICAgICAgICAgY2hhciAqdGFyZ2V0LAor
ICAgICAgICAgICBpbnQzMl90IHRhcmdldENhcGFjaXR5LAorICAgICAgICAgICBlbnVtIEVJbnZh
cmlhbnQgaW52KSBjb25zdDsKKworI2lmIFVfQ0hBUlNFVF9JU19VVEY4IHx8ICFVQ09ORklHX05P
X0NPTlZFUlNJT04KKworICAvKioKKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFu
Z2UKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgaW50byBh
biBhcnJheSBvZiBjaGFyYWN0ZXJzCisgICAqIGluIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY29k
ZXBhZ2UuCisgICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd3JpdGUgYW55IG1vcmUgdGhhbiA8
Y29kZT50YXJnZXRMZW5ndGg8L2NvZGU+CisgICAqIGNoYXJhY3RlcnMgYnV0IHJldHVybnMgdGhl
IGxlbmd0aCBvZiB0aGUgZW50aXJlIG91dHB1dCBzdHJpbmcKKyAgICogc28gdGhhdCBvbmUgY2Fu
IGFsbG9jYXRlIGEgbGFyZ2VyIGJ1ZmZlciBhbmQgY2FsbCB0aGUgZnVuY3Rpb24gYWdhaW4KKyAg
ICogaWYgbmVjZXNzYXJ5LgorICAgKiBUaGUgb3V0cHV0IHN0cmluZyBpcyBOVUwtdGVybWluYXRl
ZCBpZiBwb3NzaWJsZS4KKyAgICoKKyAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBmaXJzdCBj
aGFyYWN0ZXIgd2hpY2ggd2lsbCBiZSBjb3BpZWQKKyAgICogQHBhcmFtIHN0YXJ0TGVuZ3RoIHRo
ZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBleHRyYWN0CisgICAqIEBwYXJhbSB0YXJnZXQgdGhl
IHRhcmdldCBidWZmZXIgZm9yIGV4dHJhY3Rpb24KKyAgICogQHBhcmFtIHRhcmdldExlbmd0aCB0
aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgYnVmZmVyCisgICAqIElmIDxUVD50YXJnZXQ8L1RUPiBp
cyBOVUxMLCB0aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgZm9yCisgICAqIDxUVD50
YXJnZXQ8L1RUPiBpcyByZXR1cm5lZC4KKyAgICogQHJldHVybiB0aGUgb3V0cHV0IHN0cmluZyBs
ZW5ndGgsIG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTAorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIGludDMyX3QgZXh0cmFjdChpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICBpbnQzMl90IHN0YXJ0TGVuZ3RoLAorICAgICAgICAgICBjaGFyICp0YXJnZXQsCisgICAgICAg
ICAgIHVpbnQzMl90IHRhcmdldExlbmd0aCkgY29uc3Q7CisKKyNlbmRpZgorCisjaWYgIVVDT05G
SUdfTk9fQ09OVkVSU0lPTgorCisgIC8qKgorICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRo
ZSByYW5nZQorICAgKiBbPHR0PnN0YXJ0PC9UVD4sIDx0dD5zdGFydCArIGxlbmd0aDwvVFQ+KSBp
bnRvIGFuIGFycmF5IG9mIGNoYXJhY3RlcnMKKyAgICogaW4gYSBzcGVjaWZpZWQgY29kZXBhZ2Uu
CisgICAqIFRoZSBvdXRwdXQgc3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkLgorICAgKgorICAgKiBS
ZWNvbW1lbmRhdGlvbjogRm9yIGludmFyaWFudC1jaGFyYWN0ZXIgc3RyaW5ncyB1c2UKKyAgICog
ZXh0cmFjdChpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGxlbmd0aCwgY2hhciAqdGFyZ2V0LCBpbnQz
Ml90IHRhcmdldENhcGFjaXR5LCBlbnVtIEVJbnZhcmlhbnQgaW52KSBjb25zdAorICAgKiBiZWNh
dXNlIGl0IGF2b2lkcyBvYmplY3QgY29kZSBkZXBlbmRlbmNpZXMgb2YgVW5pY29kZVN0cmluZyBv
bgorICAgKiB0aGUgY29udmVyc2lvbiBjb2RlLgorICAgKgorICAgKiBAcGFyYW0gc3RhcnQgb2Zm
c2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZAorICAgKiBAcGFyYW0g
c3RhcnRMZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGV4dHJhY3QKKyAgICogQHBh
cmFtIHRhcmdldCB0aGUgdGFyZ2V0IGJ1ZmZlciBmb3IgZXh0cmFjdGlvbgorICAgKiBAcGFyYW0g
Y29kZXBhZ2UgdGhlIGRlc2lyZWQgY29kZXBhZ2UgZm9yIHRoZSBjaGFyYWN0ZXJzLiAgMCBoYXMK
KyAgICogdGhlIHNwZWNpYWwgbWVhbmluZyBvZiB0aGUgZGVmYXVsdCBjb2RlcGFnZQorICAgKiBJ
ZiA8Y29kZT5jb2RlcGFnZTwvY29kZT4gaXMgYW4gZW1wdHkgc3RyaW5nICg8Y29kZT4iIjwvY29k
ZT4pLAorICAgKiB0aGVuIGEgc2ltcGxlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBj
b2RlcGFnZS1pbnZhcmlhbnQKKyAgICogc3Vic2V0ICgiaW52YXJpYW50IGNoYXJhY3RlcnMiKSBv
ZiB0aGUgcGxhdGZvcm0gZW5jb2RpbmcuIFNlZSB1dHlwZXMuaC4KKyAgICogSWYgPFRUPnRhcmdl
dDwvVFQ+IGlzIE5VTEwsIHRoZW4gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBmb3IKKyAg
ICogPFRUPnRhcmdldDwvVFQ+IGlzIHJldHVybmVkLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHRh
cmdldCBpcyBiaWcgZW5vdWdoCisgICAqIHRvIGZpdCBhbGwgb2YgdGhlIGNoYXJhY3RlcnMuCisg
ICAqIEByZXR1cm4gdGhlIG91dHB1dCBzdHJpbmcgbGVuZ3RoLCBub3QgaW5jbHVkaW5nIHRoZSB0
ZXJtaW5hdGluZyBOVUwKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgaW50
MzJfdCBleHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgIGludDMyX3Qgc3Rh
cnRMZW5ndGgsCisgICAgICAgICAgICAgICAgIGNoYXIgKnRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqY29kZXBhZ2UgPSAwKSBjb25zdDsKKworICAvKioKKyAgICogQ29weSB0
aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3Rh
cnQgKyBsZW5ndGg8L1RUPikgaW50byBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzCisgICAqIGluIGEg
c3BlY2lmaWVkIGNvZGVwYWdlLgorICAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdyaXRlIGFu
eSBtb3JlIHRoYW4gPGNvZGU+dGFyZ2V0TGVuZ3RoPC9jb2RlPgorICAgKiBjaGFyYWN0ZXJzIGJ1
dCByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGVudGlyZSBvdXRwdXQgc3RyaW5nCisgICAqIHNv
IHRoYXQgb25lIGNhbiBhbGxvY2F0ZSBhIGxhcmdlciBidWZmZXIgYW5kIGNhbGwgdGhlIGZ1bmN0
aW9uIGFnYWluCisgICAqIGlmIG5lY2Vzc2FyeS4KKyAgICogVGhlIG91dHB1dCBzdHJpbmcgaXMg
TlVMLXRlcm1pbmF0ZWQgaWYgcG9zc2libGUuCisgICAqCisgICAqIFJlY29tbWVuZGF0aW9uOiBG
b3IgaW52YXJpYW50LWNoYXJhY3RlciBzdHJpbmdzIHVzZQorICAgKiBleHRyYWN0KGludDMyX3Qg
c3RhcnQsIGludDMyX3QgbGVuZ3RoLCBjaGFyICp0YXJnZXQsIGludDMyX3QgdGFyZ2V0Q2FwYWNp
dHksIGVudW0gRUludmFyaWFudCBpbnYpIGNvbnN0CisgICAqIGJlY2F1c2UgaXQgYXZvaWRzIG9i
amVjdCBjb2RlIGRlcGVuZGVuY2llcyBvZiBVbmljb2RlU3RyaW5nIG9uCisgICAqIHRoZSBjb252
ZXJzaW9uIGNvZGUuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmlyc3QgY2hh
cmFjdGVyIHdoaWNoIHdpbGwgYmUgY29waWVkCisgICAqIEBwYXJhbSBzdGFydExlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gZXh0cmFjdAorICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSB0
YXJnZXQgYnVmZmVyIGZvciBleHRyYWN0aW9uCisgICAqIEBwYXJhbSB0YXJnZXRMZW5ndGggdGhl
IGxlbmd0aCBvZiB0aGUgdGFyZ2V0IGJ1ZmZlcgorICAgKiBAcGFyYW0gY29kZXBhZ2UgdGhlIGRl
c2lyZWQgY29kZXBhZ2UgZm9yIHRoZSBjaGFyYWN0ZXJzLiAgMCBoYXMKKyAgICogdGhlIHNwZWNp
YWwgbWVhbmluZyBvZiB0aGUgZGVmYXVsdCBjb2RlcGFnZQorICAgKiBJZiA8Y29kZT5jb2RlcGFn
ZTwvY29kZT4gaXMgYW4gZW1wdHkgc3RyaW5nICg8Y29kZT4iIjwvY29kZT4pLAorICAgKiB0aGVu
IGEgc2ltcGxlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBjb2RlcGFnZS1pbnZhcmlh
bnQKKyAgICogc3Vic2V0ICgiaW52YXJpYW50IGNoYXJhY3RlcnMiKSBvZiB0aGUgcGxhdGZvcm0g
ZW5jb2RpbmcuIFNlZSB1dHlwZXMuaC4KKyAgICogSWYgPFRUPnRhcmdldDwvVFQ+IGlzIE5VTEws
IHRoZW4gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBmb3IKKyAgICogPFRUPnRhcmdldDwv
VFQ+IGlzIHJldHVybmVkLgorICAgKiBAcmV0dXJuIHRoZSBvdXRwdXQgc3RyaW5nIGxlbmd0aCwg
bm90IGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgTlVMCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgaW50MzJfdCBleHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgIGludDMy
X3Qgc3RhcnRMZW5ndGgsCisgICAgICAgICAgIGNoYXIgKnRhcmdldCwKKyAgICAgICAgICAgdWlu
dDMyX3QgdGFyZ2V0TGVuZ3RoLAorICAgICAgICAgICBjb25zdCBjaGFyICpjb2RlcGFnZSkgY29u
c3Q7CisKKyAgLyoqCisgICAqIENvbnZlcnQgdGhlIFVuaWNvZGVTdHJpbmcgaW50byBhIGNvZGVw
YWdlIHN0cmluZyB1c2luZyBhbiBleGlzdGluZyBVQ29udmVydGVyLgorICAgKiBUaGUgb3V0cHV0
IHN0cmluZyBpcyBOVUwtdGVybWluYXRlZCBpZiBwb3NzaWJsZS4KKyAgICoKKyAgICogVGhpcyBm
dW5jdGlvbiBhdm9pZHMgdGhlIG92ZXJoZWFkIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBjb252
ZXJ0ZXIgaWYKKyAgICogbXVsdGlwbGUgc3RyaW5ncyBhcmUgZXh0cmFjdGVkLgorICAgKgorICAg
KiBAcGFyYW0gZGVzdCBkZXN0aW5hdGlvbiBzdHJpbmcgYnVmZmVyLCBjYW4gYmUgTlVMTCBpZiBk
ZXN0Q2FwYWNpdHk9PTAKKyAgICogQHBhcmFtIGRlc3RDYXBhY2l0eSB0aGUgbnVtYmVyIG9mIGNo
YXJzIGF2YWlsYWJsZSBhdCBkZXN0CisgICAqIEBwYXJhbSBjbnYgdGhlIGNvbnZlcnRlciBvYmpl
Y3QgdG8gYmUgdXNlZCAodWNudl9yZXNldEZyb21Vbmljb2RlKCkgd2lsbCBiZSBjYWxsZWQpLAor
ICAgKiAgICAgICAgb3IgTlVMTCBmb3IgdGhlIGRlZmF1bHQgY29udmVydGVyCisgICAqIEBwYXJh
bSBlcnJvckNvZGUgbm9ybWFsIElDVSBlcnJvciBjb2RlCisgICAqIEByZXR1cm4gdGhlIGxlbmd0
aCBvZiB0aGUgb3V0cHV0IHN0cmluZywgbm90IGNvdW50aW5nIHRoZSB0ZXJtaW5hdGluZyBOVUw7
CisgICAqICAgICAgICAgaWYgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gZGVzdENhcGFjaXR5
LCB0aGVuIHRoZSBzdHJpbmcgd2lsbCBub3QgZml0CisgICAqICAgICAgICAgYW5kIGEgYnVmZmVy
IG9mIHRoZSBpbmRpY2F0ZWQgbGVuZ3RoIHdvdWxkIG5lZWQgdG8gYmUgcGFzc2VkIGluCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdCBleHRyYWN0KGNoYXIgKmRlc3QsIGlu
dDMyX3QgZGVzdENhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlciAqY252LAor
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKworI2VuZGlm
CisKKyAgLyoqCisgICAqIENyZWF0ZSBhIHRlbXBvcmFyeSBzdWJzdHJpbmcgZm9yIHRoZSBzcGVj
aWZpZWQgcmFuZ2UuCisgICAqIFVubGlrZSB0aGUgc3Vic3RyaW5nIGNvbnN0cnVjdG9yIGFuZCBz
ZXRUbygpIGZ1bmN0aW9ucywKKyAgICogdGhlIG9iamVjdCByZXR1cm5lZCBoZXJlIHdpbGwgYmUg
YSByZWFkLW9ubHkgYWxpYXMgKHVzaW5nIGdldEJ1ZmZlcigpKQorICAgKiByYXRoZXIgdGhhbiBj
b3B5aW5nIHRoZSB0ZXh0LgorICAgKiBBcyBhIHJlc3VsdCwgdGhpcyBzdWJzdHJpbmcgb3BlcmF0
aW9uIGlzIG11Y2ggZmFzdGVyIGJ1dCByZXF1aXJlcworICAgKiB0aGF0IHRoZSBvcmlnaW5hbCBz
dHJpbmcgbm90IGJlIG1vZGlmaWVkIG9yIGRlbGV0ZWQgZHVyaW5nIHRoZSBsaWZldGltZQorICAg
KiBvZiB0aGUgcmV0dXJuZWQgc3Vic3RyaW5nIG9iamVjdC4KKyAgICogQHBhcmFtIHN0YXJ0IG9m
ZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHZpc2libGUgaW4gdGhlIHN1YnN0cmluZworICAg
KiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBvZiB0aGUgc3Vic3RyaW5nCisgICAqIEByZXR1cm4gYSBy
ZWFkLW9ubHkgYWxpYXMgVW5pY29kZVN0cmluZyBvYmplY3QgZm9yIHRoZSBzdWJzdHJpbmcKKyAg
ICogQHN0YWJsZSBJQ1UgNC40CisgICAqLworICBVbmljb2RlU3RyaW5nIHRlbXBTdWJTdHJpbmco
aW50MzJfdCBzdGFydD0wLCBpbnQzMl90IGxlbmd0aD1JTlQzMl9NQVgpIGNvbnN0OworCisgIC8q
KgorICAgKiBDcmVhdGUgYSB0ZW1wb3Jhcnkgc3Vic3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIHJh
bmdlLgorICAgKiBTYW1lIGFzIHRlbXBTdWJTdHJpbmcoc3RhcnQsIGxlbmd0aCkgZXhjZXB0IHRo
YXQgdGhlIHN1YnN0cmluZyByYW5nZQorICAgKiBpcyBzcGVjaWZpZWQgYXMgYSAoc3RhcnQsIGxp
bWl0KSBwYWlyICh3aXRoIGFuIGV4Y2x1c2l2ZSBsaW1pdCBpbmRleCkKKyAgICogcmF0aGVyIHRo
YW4gYSAoc3RhcnQsIGxlbmd0aCkgcGFpci4KKyAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiB0
aGUgZmlyc3QgY2hhcmFjdGVyIHZpc2libGUgaW4gdGhlIHN1YnN0cmluZworICAgKiBAcGFyYW0g
bGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgdmlz
aWJsZSBpbiB0aGUgc3Vic3RyaW5nCisgICAqIEByZXR1cm4gYSByZWFkLW9ubHkgYWxpYXMgVW5p
Y29kZVN0cmluZyBvYmplY3QgZm9yIHRoZSBzdWJzdHJpbmcKKyAgICogQHN0YWJsZSBJQ1UgNC40
CisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyB0ZW1wU3ViU3RyaW5nQmV0d2VlbihpbnQz
Ml90IHN0YXJ0LCBpbnQzMl90IGxpbWl0PUlOVDMyX01BWCkgY29uc3Q7CisKKyAgLyoqCisgICAq
IENvbnZlcnQgdGhlIFVuaWNvZGVTdHJpbmcgdG8gVVRGLTggYW5kIHdyaXRlIHRoZSByZXN1bHQK
KyAgICogdG8gYSBCeXRlU2luay4gVGhpcyBpcyBjYWxsZWQgYnkgdG9VVEY4U3RyaW5nKCkuCisg
ICAqIFVucGFpcmVkIHN1cnJvZ2F0ZXMgYXJlIHJlcGxhY2VkIHdpdGggVStGRkZELgorICAgKiBD
YWxscyB1X3N0clRvVVRGOFdpdGhTdWIoKS4KKyAgICoKKyAgICogQHBhcmFtIHNpbmsgQSBCeXRl
U2luayB0byB3aGljaCB0aGUgVVRGLTggdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGlzIHdyaXR0ZW4u
CisgICAqICAgICAgICAgICAgIHNpbmsuRmx1c2goKSBpcyBjYWxsZWQgYXQgdGhlIGVuZC4KKyAg
ICogQHN0YWJsZSBJQ1UgNC4yCisgICAqIEBzZWUgdG9VVEY4U3RyaW5nCisgICAqLworICB2b2lk
IHRvVVRGOChCeXRlU2luayAmc2luaykgY29uc3Q7CisKKyNpZiBVX0hBVkVfU1REX1NUUklORwor
CisgIC8qKgorICAgKiBDb252ZXJ0IHRoZSBVbmljb2RlU3RyaW5nIHRvIFVURi04IGFuZCBhcHBl
bmQgdGhlIHJlc3VsdAorICAgKiB0byBhIHN0YW5kYXJkIHN0cmluZy4KKyAgICogVW5wYWlyZWQg
c3Vycm9nYXRlcyBhcmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQuCisgICAqIENhbGxzIHRvVVRGOCgp
LgorICAgKgorICAgKiBAcGFyYW0gcmVzdWx0IEEgc3RhbmRhcmQgc3RyaW5nIChvciBhIGNvbXBh
dGlibGUgb2JqZWN0KQorICAgKiAgICAgICAgdG8gd2hpY2ggdGhlIFVURi04IHZlcnNpb24gb2Yg
dGhlIHN0cmluZyBpcyBhcHBlbmRlZC4KKyAgICogQHJldHVybiBUaGUgc3RyaW5nIG9iamVjdC4K
KyAgICogQHN0YWJsZSBJQ1UgNC4yCisgICAqIEBzZWUgdG9VVEY4CisgICAqLworICB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KKyAgU3RyaW5nQ2xhc3MgJnRvVVRGOFN0cmluZyhTdHJp
bmdDbGFzcyAmcmVzdWx0KSBjb25zdCB7CisgICAgU3RyaW5nQnl0ZVNpbms8U3RyaW5nQ2xhc3M+
IHNicygmcmVzdWx0KTsKKyAgICB0b1VURjgoc2JzKTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9
CisKKyNlbmRpZgorCisgIC8qKgorICAgKiBDb252ZXJ0IHRoZSBVbmljb2RlU3RyaW5nIHRvIFVU
Ri0zMi4KKyAgICogVW5wYWlyZWQgc3Vycm9nYXRlcyBhcmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQu
CisgICAqIENhbGxzIHVfc3RyVG9VVEYzMldpdGhTdWIoKS4KKyAgICoKKyAgICogQHBhcmFtIHV0
ZjMyIGRlc3RpbmF0aW9uIHN0cmluZyBidWZmZXIsIGNhbiBiZSBOVUxMIGlmIGNhcGFjaXR5PT0w
CisgICAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgbnVtYmVyIG9mIFVDaGFyMzJzIGF2YWlsYWJsZSBh
dCB1dGYzMgorICAgKiBAcGFyYW0gZXJyb3JDb2RlIFN0YW5kYXJkIElDVSBlcnJvciBjb2RlLiBJ
dHMgaW5wdXQgdmFsdWUgbXVzdAorICAgKiAgICAgICAgICAgICAgICAgIHBhc3MgdGhlIFVfU1VD
Q0VTUygpIHRlc3QsIG9yIGVsc2UgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAgICogICAgICAgICAg
ICAgICAgICBpbW1lZGlhdGVseS4gQ2hlY2sgZm9yIFVfRkFJTFVSRSgpIG9uIG91dHB1dCBvciB1
c2Ugd2l0aAorICAgKiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoYWluaW5nLiAoU2VlIFVz
ZXIgR3VpZGUgZm9yIGRldGFpbHMuKQorICAgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIFVU
Ri0zMiBzdHJpbmcuCisgICAqIEBzZWUgZnJvbVVURjMyCisgICAqIEBzdGFibGUgSUNVIDQuMgor
ICAgKi8KKyAgaW50MzJfdCB0b1VURjMyKFVDaGFyMzIgKnV0ZjMyLCBpbnQzMl90IGNhcGFjaXR5
LCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworCisgIC8qIExlbmd0aCBvcGVyYXRpb25z
ICovCisKKyAgLyoqCisgICAqIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlU3RyaW5n
IG9iamVjdC4KKyAgICogVGhlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIFVDaGFyIGNvZGUgdW5p
dHMgYXJlIGluIHRoZSBVbmljb2RlU3RyaW5nLgorICAgKiBJZiB5b3Ugd2FudCB0aGUgbnVtYmVy
IG9mIGNvZGUgcG9pbnRzLCBwbGVhc2UgdXNlIGNvdW50Q2hhcjMyKCkuCisgICAqIEByZXR1cm4g
dGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QKKyAgICogQHNlZSBjb3VudENo
YXIzMgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGxlbmd0
aCh2b2lkKSBjb25zdDsKKworICAvKioKKyAgICogQ291bnQgVW5pY29kZSBjb2RlIHBvaW50cyBp
biB0aGUgbGVuZ3RoIFVDaGFyIGNvZGUgdW5pdHMgb2YgdGhlIHN0cmluZy4KKyAgICogQSBjb2Rl
IHBvaW50IG1heSBvY2N1cHkgZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAg
ICogQ291bnRpbmcgY29kZSBwb2ludHMgaW52b2x2ZXMgcmVhZGluZyBhbGwgY29kZSB1bml0cy4K
KyAgICoKKyAgICogVGhpcyBmdW5jdGlvbnMgaXMgYmFzaWNhbGx5IHRoZSBpbnZlcnNlIG9mIG1v
dmVJbmRleDMyKCkuCisgICAqCisgICAqIEBwYXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIGZp
cnN0IGNvZGUgdW5pdCB0byBjaGVjaworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2Yg
VUNoYXIgY29kZSB1bml0cyB0byBjaGVjaworICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29k
ZSBwb2ludHMgaW4gdGhlIHNwZWNpZmllZCBjb2RlIHVuaXRzCisgICAqIEBzZWUgbGVuZ3RoCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW50MzJfdAorICBjb3VudENoYXIzMihpbnQz
Ml90IHN0YXJ0PTAsIGludDMyX3QgbGVuZ3RoPUlOVDMyX01BWCkgY29uc3Q7CisKKyAgLyoqCisg
ICAqIENoZWNrIGlmIHRoZSBsZW5ndGggVUNoYXIgY29kZSB1bml0cyBvZiB0aGUgc3RyaW5nCisg
ICAqIGNvbnRhaW4gbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRoYW4gYSBjZXJ0YWluIG51bWJl
ci4KKyAgICogVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGNvdW50aW5nIGFsbCBjb2RlIHBv
aW50cyBpbiB0aGlzIHBhcnQgb2YgdGhlIHN0cmluZworICAgKiBhbmQgY29tcGFyaW5nIHRoYXQg
bnVtYmVyIHdpdGggYSB0aHJlc2hvbGQuCisgICAqIFRoaXMgZnVuY3Rpb24gbWF5IG5vdCBuZWVk
IHRvIHNjYW4gdGhlIHN0cmluZyBhdCBhbGwgaWYgdGhlIGxlbmd0aAorICAgKiBmYWxscyB3aXRo
aW4gYSBjZXJ0YWluIHJhbmdlLCBhbmQKKyAgICogbmV2ZXIgbmVlZHMgdG8gY291bnQgbW9yZSB0
aGFuICdudW1iZXIrMScgY29kZSBwb2ludHMuCisgICAqIExvZ2ljYWxseSBlcXVpdmFsZW50IHRv
IChjb3VudENoYXIzMihzdGFydCwgbGVuZ3RoKT5udW1iZXIpLgorICAgKiBBIFVuaWNvZGUgY29k
ZSBwb2ludCBtYXkgb2NjdXB5IGVpdGhlciBvbmUgb3IgdHdvIFVDaGFyIGNvZGUgdW5pdHMuCisg
ICAqCisgICAqIEBwYXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvZGUgdW5pdCB0
byBjaGVjayAoMCBmb3IgdGhlIGVudGlyZSBzdHJpbmcpCisgICAqIEBwYXJhbSBsZW5ndGggdGhl
IG51bWJlciBvZiBVQ2hhciBjb2RlIHVuaXRzIHRvIGNoZWNrCisgICAqICAgICAgICAgICAgICAg
KHVzZSBJTlQzMl9NQVggZm9yIHRoZSBlbnRpcmUgc3RyaW5nOyByZW1lbWJlciB0aGF0IHN0YXJ0
L2xlbmd0aAorICAgKiAgICAgICAgICAgICAgICB2YWx1ZXMgYXJlIHBpbm5lZCkKKyAgICogQHBh
cmFtIG51bWJlciBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSAoc3ViKXN0cmluZyBp
cyBjb21wYXJlZCBhZ2FpbnN0CisgICAqICAgICAgICAgICAgICAgdGhlICdudW1iZXInIHBhcmFt
ZXRlci4KKyAgICogQHJldHVybiBCb29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIHRoZSBzdHJpbmcg
Y29udGFpbnMgbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzCisgICAqICAgICAgICAgdGhhbiAnbnVt
YmVyJy4gU2FtZSBhcyAodV9jb3VudENoYXIzMihzLCBsZW5ndGgpPm51bWJlcikuCisgICAqIEBz
ZWUgY291bnRDaGFyMzIKKyAgICogQHNlZSB1X3N0ckhhc01vcmVDaGFyMzJUaGFuCisgICAqIEBz
dGFibGUgSUNVIDIuNAorICAgKi8KKyAgVUJvb2wKKyAgaGFzTW9yZUNoYXIzMlRoYW4oaW50MzJf
dCBzdGFydCwgaW50MzJfdCBsZW5ndGgsIGludDMyX3QgbnVtYmVyKSBjb25zdDsKKworICAvKioK
KyAgICogRGV0ZXJtaW5lIGlmIHRoaXMgc3RyaW5nIGlzIGVtcHR5LgorICAgKiBAcmV0dXJuIFRS
VUUgaWYgdGhpcyBzdHJpbmcgY29udGFpbnMgMCBjaGFyYWN0ZXJzLCBGQUxTRSBvdGhlcndpc2Uu
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIGlzRW1wdHkodm9p
ZCkgY29uc3Q7CisKKyAgLyoqCisgICAqIFJldHVybiB0aGUgY2FwYWNpdHkgb2YgdGhlIGludGVy
bmFsIGJ1ZmZlciBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QuCisgICAqIFRoaXMgaXMgdXNl
ZnVsIHRvZ2V0aGVyIHdpdGggdGhlIGdldEJ1ZmZlciBmdW5jdGlvbnMuCisgICAqIFNlZSB0aGVy
ZSBmb3IgZGV0YWlscy4KKyAgICoKKyAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIFVDaGFycyBh
dmFpbGFibGUgaW4gdGhlIGludGVybmFsIGJ1ZmZlcgorICAgKiBAc2VlIGdldEJ1ZmZlcgorICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBpbnQzMl90IGdldENhcGFjaXR5KHZv
aWQpIGNvbnN0OworCisgIC8qIE90aGVyIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogR2Vu
ZXJhdGUgYSBoYXNoIGNvZGUgZm9yIHRoaXMgb2JqZWN0LgorICAgKiBAcmV0dXJuIFRoZSBoYXNo
IGNvZGUgb2YgdGhpcyBVbmljb2RlU3RyaW5nLgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIGlubGluZSBpbnQzMl90IGhhc2hDb2RlKHZvaWQpIGNvbnN0OworCisgIC8qKgorICAgKiBE
ZXRlcm1pbmUgaWYgdGhpcyBvYmplY3QgY29udGFpbnMgYSB2YWxpZCBzdHJpbmcuCisgICAqIEEg
Ym9ndXMgc3RyaW5nIGhhcyBubyB2YWx1ZS4gSXQgaXMgZGlmZmVyZW50IGZyb20gYW4gZW1wdHkg
c3RyaW5nLAorICAgKiBhbHRob3VnaCBpbiBib3RoIGNhc2VzIGlzRW1wdHkoKSByZXR1cm5zIFRS
VUUgYW5kIGxlbmd0aCgpIHJldHVybnMgMC4KKyAgICogc2V0VG9Cb2d1cygpIGFuZCBpc0JvZ3Vz
KCkgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBubyBzdHJpbmcgdmFsdWUgaXMgYXZhaWxh
YmxlLgorICAgKiBGb3IgYSBib2d1cyBzdHJpbmcsIGdldEJ1ZmZlcigpIGFuZCBnZXRUZXJtaW5h
dGVkQnVmZmVyKCkgcmV0dXJuIE5VTEwsIGFuZAorICAgKiBsZW5ndGgoKSByZXR1cm5zIDAuCisg
ICAqCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgc3RyaW5nIGlzIHZhbGlkLCBGQUxTRSBvdGhl
cndpc2UKKyAgICogQHNlZSBzZXRUb0JvZ3VzKCkKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgVUJvb2wgaXNCb2d1cyh2b2lkKSBjb25zdDsKKworCisgIC8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAvLyBXcml0ZSBvcGVyYXRpb25zCisg
IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIC8qIEFzc2ln
bm1lbnQgb3BlcmF0aW9ucyAqLworCisgIC8qKgorICAgKiBBc3NpZ25tZW50IG9wZXJhdG9yLiAg
UmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIFVuaWNvZGVTdHJpbmcKKyAgICogd2l0aCB0
aGUgY2hhcmFjdGVycyBmcm9tIDxUVD5zcmNUZXh0PC9UVD4uCisgICAqIEBwYXJhbSBzcmNUZXh0
IFRoZSB0ZXh0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgdG8gcmVwbGFjZQorICAgKiBAcmV0
dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBV
bmljb2RlU3RyaW5nICZvcGVyYXRvcj0oY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCk7CisK
KyAgLyoqCisgICAqIEFsbW9zdCB0aGUgc2FtZSBhcyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4K
KyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIFVuaWNvZGVTdHJpbmcKKyAgICog
d2l0aCB0aGUgY2hhcmFjdGVycyBmcm9tIDxjb2RlPnNyY1RleHQ8L2NvZGU+LgorICAgKgorICAg
KiBUaGlzIGZ1bmN0aW9uIHdvcmtzIHRoZSBzYW1lIGZvciBhbGwgc3RyaW5ncyBleGNlcHQgZm9y
IG9uZXMgdGhhdAorICAgKiBhcmUgcmVhZG9ubHkgYWxpYXNlcy4KKyAgICogU3RhcnRpbmcgd2l0
aCBJQ1UgMi40LCB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBhbmQgdGhlIGNvcHkgY29uc3RydWN0
b3IKKyAgICogYWxsb2NhdGUgYSBuZXcgYnVmZmVyIGFuZCBjb3B5IHRoZSBidWZmZXIgY29udGVu
dHMgZXZlbiBmb3IgcmVhZG9ubHkgYWxpYXNlcy4KKyAgICogVGhpcyBmdW5jdGlvbiBpbXBsZW1l
bnRzIHRoZSBvbGQsIG1vcmUgZWZmaWNpZW50IGJ1dCBsZXNzIHNhZmUgYmVoYXZpb3IKKyAgICog
b2YgbWFraW5nIHRoaXMgc3RyaW5nIGFsc28gYSByZWFkb25seSBhbGlhcyB0byB0aGUgc2FtZSBi
dWZmZXIuCisgICAqIFRoZSBmYXN0Q29weUZyb20gZnVuY3Rpb24gbXVzdCBiZSB1c2VkIG9ubHkg
aWYgaXQgaXMga25vd24gdGhhdCB0aGUgbGlmZXRpbWUgb2YKKyAgICogdGhpcyBVbmljb2RlU3Ry
aW5nIGlzIGF0IGxlYXN0IGFzIGxvbmcgYXMgdGhlIGxpZmV0aW1lIG9mIHRoZSBhbGlhc2VkIGJ1
ZmZlcgorICAgKiBpbmNsdWRpbmcgaXRzIGNvbnRlbnRzLCBmb3IgZXhhbXBsZSBmb3Igc3RyaW5n
cyBmcm9tIHJlc291cmNlIGJ1bmRsZXMKKyAgICogb3IgYWxpYXNlcyB0byBzdHJpbmcgY29udGVu
dHMuCisgICAqCisgICAqIEBwYXJhbSBzcmMgVGhlIHRleHQgY29udGFpbmluZyB0aGUgY2hhcmFj
dGVycyB0byByZXBsYWNlLgorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICog
QHN0YWJsZSBJQ1UgMi40CisgICAqLworICBVbmljb2RlU3RyaW5nICZmYXN0Q29weUZyb20oY29u
c3QgVW5pY29kZVN0cmluZyAmc3JjKTsKKworICAvKioKKyAgICogQXNzaWdubWVudCBvcGVyYXRv
ci4gIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyBVbmljb2RlU3RyaW5nCisgICAqIHdp
dGggdGhlIGNvZGUgdW5pdCA8VFQ+Y2g8L1RUPi4KKyAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHVu
aXQgdG8gcmVwbGFjZQorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgb3BlcmF0b3I9IChV
Q2hhciBjaCk7CisKKyAgLyoqCisgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3IuICBSZXBsYWNlIHRo
ZSBjaGFyYWN0ZXJzIGluIHRoaXMgVW5pY29kZVN0cmluZworICAgKiB3aXRoIHRoZSBjb2RlIHBv
aW50IDxUVD5jaDwvVFQ+LgorICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgdG8gcmVwbGFj
ZQorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqLworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgb3BlcmF0b3I9IChVQ2hhcjMyIGNoKTsK
KworICAvKioKKyAgICogU2V0IHRoZSB0ZXh0IGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0
byB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluIHRoZSByYW5nZQor
ICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNUZXh0Lmxlbmd0aCgpPC9UVD4pLgorICAg
KiA8VFQ+c3JjVGV4dDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY1RleHQg
dGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBzcmNTdGFydCB0
aGUgb2Zmc2V0IGludG8gPFRUPnNyY1RleHQ8L1RUPiB3aGVyZSBuZXcgY2hhcmFjdGVycworICAg
KiB3aWxsIGJlIG9idGFpbmVkCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAg
KiBAc3RhYmxlIElDVSAyLjIKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhj
b25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCk7CisKKyAgLyoqCisgICAqIFNldCB0aGUgdGV4dCBpbiB0aGUgVW5pY29kZVN0cmluZyBv
YmplY3QgdG8gdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUg
cmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBzcmNMZW5ndGg8
L1RUPikuCisgICAqIDxUVD5zcmNUZXh0PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFy
YW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFt
IHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjVGV4dDwvVFQ+IHdoZXJlIG5ldyBjaGFy
YWN0ZXJzCisgICAqIHdpbGwgYmUgb2J0YWluZWQKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUKKyAgICogcmVw
bGFjZSBzdHJpbmcuCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBV
bmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKKworICAvKioKKyAgICogU2V0IHRo
ZSB0ZXh0IGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY2hhcmFjdGVycyBpbgor
ICAgKiA8VFQ+c3JjVGV4dDwvVFQ+LgorICAgKiA8VFQ+c3JjVGV4dDwvVFQ+IGlzIG5vdCBtb2Rp
ZmllZC4KKyAgICogQHBhcmFtIHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0
ZXJzCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVbmljb2RlU3Ry
aW5nJiBzcmNUZXh0KTsKKworICAvKioKKyAgICogU2V0IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBV
bmljb2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY2hhcmFjdGVycworICAgKiBpbiA8VFQ+c3JjQ2hh
cnM8L1RUPi4gPFRUPnNyY0NoYXJzPC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0g
c3JjQ2hhcnMgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBz
cmNMZW5ndGggdGhlIG51bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gc3JjQ2hhcnMuCisg
ICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMs
CisgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFNldCB0
aGUgY2hhcmFjdGVycyBpbiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QgdG8gdGhlIGNvZGUgdW5p
dAorICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3JjQ2hhciB0aGUgY29kZSB1
bml0IHdoaWNoIGJlY29tZXMgdGhlIFVuaWNvZGVTdHJpbmcncyBjaGFyYWN0ZXIKKyAgICogY29u
dGVudAorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiBzZXRUbyhVQ2hhciBzcmNDaGFyKTsKKworICAv
KioKKyAgICogU2V0IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0
byB0aGUgY29kZSBwb2ludAorICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3Jj
Q2hhciB0aGUgY29kZSBwb2ludCB3aGljaCBiZWNvbWVzIHRoZSBVbmljb2RlU3RyaW5nJ3MgY2hh
cmFjdGVyCisgICAqIGNvbnRlbnQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyYgc2V0VG8oVUNoYXIz
MiBzcmNDaGFyKTsKKworICAvKioKKyAgICogQWxpYXNpbmcgc2V0VG8oKSBmdW5jdGlvbiwgYW5h
bG9nb3VzIHRvIHRoZSByZWFkb25seS1hbGlhc2luZyBVQ2hhciogY29uc3RydWN0b3IuCisgICAq
IFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LCBidXQK
KyAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5pY29kZVN0cmluZyBpcyBk
ZXN0cm95ZWQuCisgICAqIFRoaXMgaGFzIGNvcHktb24td3JpdGUgc2VtYW50aWNzOgorICAgKiBX
aGVuIHRoZSBzdHJpbmcgaXMgbW9kaWZpZWQsIHRoZW4gdGhlIGJ1ZmZlciBpcyBmaXJzdCBjb3Bp
ZWQgaW50bworICAgKiBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5LgorICAgKiBUaGUgYWxpYXNlZCBi
dWZmZXIgaXMgbmV2ZXIgbW9kaWZpZWQuCisgICAqIEluIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhl
ciBVbmljb2RlU3RyaW5nLCB0aGUgdGV4dCB3aWxsIGJlIGFsaWFzZWQgYWdhaW4sCisgICAqIHNv
IHRoYXQgYm90aCBzdHJpbmdzIHRoZW4gYWxpYXMgdGhlIHNhbWUgcmVhZG9ubHktdGV4dC4KKyAg
ICoKKyAgICogQHBhcmFtIGlzVGVybWluYXRlZCBzcGVjaWZpZXMgaWYgPGNvZGU+dGV4dDwvY29k
ZT4gaXMgPGNvZGU+TlVMPC9jb2RlPi10ZXJtaW5hdGVkLgorICAgKiAgICAgICAgICAgICAgICAg
ICAgIFRoaXMgbXVzdCBiZSB0cnVlIGlmIDxjb2RlPnRleHRMZW5ndGg9PS0xPC9jb2RlPi4KKyAg
ICogQHBhcmFtIHRleHQgVGhlIGNoYXJhY3RlcnMgdG8gYWxpYXMgZm9yIHRoZSBVbmljb2RlU3Ry
aW5nLgorICAgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFj
dGVycyBpbiA8Y29kZT50ZXh0PC9jb2RlPiB0byBhbGlhcy4KKyAgICogICAgICAgICAgICAgICAg
ICAgSWYgLTEsIHRoZW4gdGhpcyBjb25zdHJ1Y3RvciB3aWxsIGRldGVybWluZSB0aGUgbGVuZ3Ro
CisgICAqICAgICAgICAgICAgICAgICAgIGJ5IGNhbGxpbmcgPGNvZGU+dV9zdHJsZW4oKTwvY29k
ZT4uCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgJnNldFRvKFVCb29sIGlzVGVybWluYXRlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgdGV4dExlbmd0aCk7CisKKyAgLyoqCisgICAqIEFsaWFzaW5nIHNldFRv
KCkgZnVuY3Rpb24sIGFuYWxvZ291cyB0byB0aGUgd3JpdGFibGUtYWxpYXNpbmcgVUNoYXIqIGNv
bnN0cnVjdG9yLgorICAgKiBUaGUgdGV4dCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBVbmljb2RlU3Ry
aW5nIG9iamVjdCwgYnV0CisgICAqIGl0IHdpbGwgbm90IGJlIHJlbGVhc2VkIHdoZW4gdGhlIFVu
aWNvZGVTdHJpbmcgaXMgZGVzdHJveWVkLgorICAgKiBUaGlzIGhhcyB3cml0ZS10aHJvdWdoIHNl
bWFudGljczoKKyAgICogRm9yIGFzIGxvbmcgYXMgdGhlIGNhcGFjaXR5IG9mIHRoZSBidWZmZXIg
aXMgc3VmZmljaWVudCwgd3JpdGUgb3BlcmF0aW9ucworICAgKiB3aWxsIGRpcmVjdGx5IGFmZmVj
dCB0aGUgYnVmZmVyLiBXaGVuIG1vcmUgY2FwYWNpdHkgaXMgbmVjZXNzYXJ5LCB0aGVuCisgICAq
IGEgbmV3IGJ1ZmZlciB3aWxsIGJlIGFsbG9jYXRlZCBhbmQgdGhlIGNvbnRlbnRzIGNvcGllZCBh
cyB3aXRoIHJlZ3VsYXJseQorICAgKiBjb25zdHJ1Y3RlZCBzdHJpbmdzLgorICAgKiBJbiBhbiBh
c3NpZ25tZW50IHRvIGFub3RoZXIgVW5pY29kZVN0cmluZywgdGhlIGJ1ZmZlciB3aWxsIGJlIGNv
cGllZC4KKyAgICogVGhlIGV4dHJhY3QoVUNoYXIgKmRzdCkgZnVuY3Rpb24gZGV0ZWN0cyB3aGV0
aGVyIHRoZSBkc3QgcG9pbnRlciBpcyB0aGUgc2FtZQorICAgKiBhcyB0aGUgc3RyaW5nIGJ1ZmZl
ciBpdHNlbGYgYW5kIHdpbGwgaW4gdGhpcyBjYXNlIG5vdCBjb3B5IHRoZSBjb250ZW50cy4KKyAg
ICoKKyAgICogQHBhcmFtIGJ1ZmZlciBUaGUgY2hhcmFjdGVycyB0byBhbGlhcyBmb3IgdGhlIFVu
aWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSBidWZmTGVuZ3RoIFRoZSBudW1iZXIgb2YgVW5pY29k
ZSBjaGFyYWN0ZXJzIGluIDxjb2RlPmJ1ZmZlcjwvY29kZT4gdG8gYWxpYXMuCisgICAqIEBwYXJh
bSBidWZmQ2FwYWNpdHkgVGhlIHNpemUgb2YgPGNvZGU+YnVmZmVyPC9jb2RlPiBpbiBVQ2hhcnMu
CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIFVuaWNvZGVTdHJpbmcgJnNldFRvKFVDaGFyICpidWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgYnVmZkxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBidWZmQ2FwYWNpdHkpOworCisgIC8qKgorICAgKiBNYWtlIHRoaXMgVW5pY29kZVN0
cmluZyBvYmplY3QgaW52YWxpZC4KKyAgICogVGhlIHN0cmluZyB3aWxsIHRlc3QgVFJVRSB3aXRo
IGlzQm9ndXMoKS4KKyAgICoKKyAgICogQSBib2d1cyBzdHJpbmcgaGFzIG5vIHZhbHVlLiBJdCBp
cyBkaWZmZXJlbnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCisgICAqIEl0IGNhbiBiZSB1c2VkIHRv
IGluZGljYXRlIHRoYXQgbm8gc3RyaW5nIHZhbHVlIGlzIGF2YWlsYWJsZS4KKyAgICogZ2V0QnVm
ZmVyKCkgYW5kIGdldFRlcm1pbmF0ZWRCdWZmZXIoKSByZXR1cm4gTlVMTCwgYW5kCisgICAqIGxl
bmd0aCgpIHJldHVybnMgMC4KKyAgICoKKyAgICogVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGlzIHVz
ZWQgdGhyb3VnaG91dCB0aGUgVW5pY29kZVN0cmluZworICAgKiBpbXBsZW1lbnRhdGlvbiB0byBp
bmRpY2F0ZSB0aGF0IGEgVW5pY29kZVN0cmluZyBvcGVyYXRpb24gZmFpbGVkLAorICAgKiBhbmQg
bWF5IGJlIHVzZWQgaW4gb3RoZXIgZnVuY3Rpb25zLAorICAgKiBlc3BlY2lhbGx5IGJ1dCBub3Qg
ZXhjbHVzaXZlbHkgd2hlbiBzdWNoIGZ1bmN0aW9ucyBkbyBub3QKKyAgICogdGFrZSBhIFVFcnJv
ckNvZGUgZm9yIHNpbXBsaWNpdHkuCisgICAqCisgICAqIFRoZSBmb2xsb3dpbmcgbWV0aG9kcywg
YW5kIG5vIG90aGVycywgd2lsbCBjbGVhciBhIHN0cmluZyBvYmplY3QncyBib2d1cyBmbGFnOgor
ICAgKiAtIHJlbW92ZSgpCisgICAqIC0gcmVtb3ZlKDAsIElOVDMyX01BWCkKKyAgICogLSB0cnVu
Y2F0ZSgwKQorICAgKiAtIG9wZXJhdG9yPSgpIChhc3NpZ25tZW50IG9wZXJhdG9yKQorICAgKiAt
IHNldFRvKC4uLikKKyAgICoKKyAgICogVGhlIHNpbXBsZXN0IHdheXMgdG8gdHVybiBhIGJvZ3Vz
IHN0cmluZyBpbnRvIGFuIGVtcHR5IG9uZQorICAgKiBpcyB0byB1c2UgdGhlIHJlbW92ZSgpIGZ1
bmN0aW9uLgorICAgKiBFeGFtcGxlcyBmb3Igb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGVxdWl2
YWxlbnQgdG8gInNldCB0byBlbXB0eSBzdHJpbmciOgorICAgKiBcY29kZQorICAgKiBpZihzLmlz
Qm9ndXMoKSkgeworICAgKiAgIHMucmVtb3ZlKCk7ICAgICAgICAgICAvLyBzZXQgdG8gYW4gZW1w
dHkgc3RyaW5nIChyZW1vdmUgYWxsKSwgb3IKKyAgICogICBzLnJlbW92ZSgwLCBJTlQzMl9NQVgp
OyAvLyBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIChyZW1vdmUgYWxsKSwgb3IKKyAgICogICBzLnRy
dW5jYXRlKDApOyAgICAgICAgLy8gc2V0IHRvIGFuIGVtcHR5IHN0cmluZyAoY29tcGxldGUgdHJ1
bmNhdGlvbiksIG9yCisgICAqICAgcz1Vbmljb2RlU3RyaW5nKCk7ICAgIC8vIGFzc2lnbiBhbiBl
bXB0eSBzdHJpbmcsIG9yCisgICAqICAgcy5zZXRUbygoVUNoYXIzMiktMSk7IC8vIHNldCB0byBh
IHBzZXVkbyBjb2RlIHBvaW50IHRoYXQgaXMgb3V0IG9mIHJhbmdlLCBvcgorICAgKiAgIHN0YXRp
YyBjb25zdCBVQ2hhciBudWw9MDsKKyAgICogICBzLnNldFRvKCZudWwsIDApOyAgICAgLy8gc2V0
IHRvIGFuIGVtcHR5IEMgVW5pY29kZSBzdHJpbmcKKyAgICogfQorICAgKiBcZW5kY29kZQorICAg
KgorICAgKiBAc2VlIGlzQm9ndXMoKQorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZv
aWQgc2V0VG9Cb2d1cygpOworCisgIC8qKgorICAgKiBTZXQgdGhlIGNoYXJhY3RlciBhdCB0aGUg
c3BlY2lmaWVkIG9mZnNldCB0byB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci4KKyAgICogQHBhcmFt
IG9mZnNldCBBIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0IG9mIHRoZSBjaGFyYWN0ZXIgdG8g
c2V0CisgICAqIEBwYXJhbSBjaCBUaGUgbmV3IGNoYXJhY3RlcgorICAgKiBAcmV0dXJuIEEgcmVm
ZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3Ry
aW5nJiBzZXRDaGFyQXQoaW50MzJfdCBvZmZzZXQsCisgICAgICAgICAgICAgICBVQ2hhciBjaCk7
CisKKworICAvKiBBcHBlbmQgb3BlcmF0aW9ucyAqLworCisgIC8qKgorICAgKiBBcHBlbmQgb3Bl
cmF0b3IuIEFwcGVuZCB0aGUgY29kZSB1bml0IDxUVD5jaDwvVFQ+IHRvIHRoZSBVbmljb2RlU3Ry
aW5nCisgICAqIG9iamVjdC4KKyAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHVuaXQgdG8gYmUgYXBw
ZW5kZWQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyBpbmxpbmUgIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9yKz0gKFVDaGFyIGNo
KTsKKworICAvKioKKyAgICogQXBwZW5kIG9wZXJhdG9yLiBBcHBlbmQgdGhlIGNvZGUgcG9pbnQg
PFRUPmNoPC9UVD4gdG8gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogb2JqZWN0LgorICAgKiBAcGFy
YW0gY2ggdGhlIGNvZGUgcG9pbnQgdG8gYmUgYXBwZW5kZWQKKyAgICogQHJldHVybiBhIHJlZmVy
ZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyBpbmxpbmUgIFVuaWNv
ZGVTdHJpbmcmIG9wZXJhdG9yKz0gKFVDaGFyMzIgY2gpOworCisgIC8qKgorICAgKiBBcHBlbmQg
b3BlcmF0b3IuIEFwcGVuZCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IHRvIHRo
ZQorICAgKiBVbmljb2RlU3RyaW5nIG9iamVjdCBhdCBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxU
VD5zcmNUZXh0PC9UVD4gaXMKKyAgICogbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjVGV4
dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVy
ZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNv
ZGVTdHJpbmcmIG9wZXJhdG9yKz0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpOworCisg
IC8qKgorICAgKiBBcHBlbmQgdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gPFRUPnNyY1RleHQ8L1RU
PiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjU3RhcnQgKyBz
cmNMZW5ndGg8L1RUPikgdG8gdGhlCisgICAqIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0IG9mZnNl
dCA8VFQ+c3RhcnQ8L1RUPi4gPFRUPnNyY1RleHQ8L1RUPgorICAgKiBpcyBub3QgbW9kaWZpZWQu
CisgICAqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycwor
ICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gd2hl
cmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBvYnRhaW5lZAorICAgKiBAcGFyYW0gc3Jj
TGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluCisg
ICAqIHRoZSBhcHBlbmQgc3RyaW5nCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcwor
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBl
bmQoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsCisgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIEFw
cGVuZCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IHRvIHRoZSBVbmljb2RlU3Ry
aW5nIG9iamVjdCBhdAorICAgKiBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxUVD5zcmNUZXh0PC9U
VD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0
aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAq
IEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChj
b25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KTsKKworICAvKioKKyAgICogQXBwZW5kIHRoZSBj
aGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNy
Y1N0YXJ0PC9UVD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KSB0byB0aGUgVW5pY29k
ZVN0cmluZworICAgKiBvYmplY3QgYXQgb2Zmc2V0CisgICAqIDxUVD5zdGFydDwvVFQ+LiA8VFQ+
c3JjQ2hhcnM8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUg
c291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBv
ZmZzZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiB3aGVyZSBuZXcgY2hhcmFjdGVycworICAgKiB3
aWxsIGJlIG9idGFpbmVkCisgICAqIEBwYXJhbSBzcmNMZW5ndGggdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+IGluCisgICAqIHRoZSBhcHBlbmQgc3RyaW5nCisg
ICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgIGludDMyX3Qgc3Jj
TGVuZ3RoKTsKKworICAvKioKKyAgICogQXBwZW5kIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmND
aGFyczwvVFQ+IHRvIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdAorICAgKiBhdCBvZmZzZXQgPFRU
PnN0YXJ0PC9UVD4uIDxUVD5zcmNDaGFyczwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBh
cmFtIHNyY0NoYXJzIHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFy
YW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmND
aGFyczwvVFQ+CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxl
IElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVUNo
YXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgor
ICAgKiBBcHBlbmQgdGhlIGNvZGUgdW5pdCA8VFQ+c3JjQ2hhcjwvVFQ+IHRvIHRoZSBVbmljb2Rl
U3RyaW5nIG9iamVjdC4KKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIGNvZGUgdW5pdCB0byBhcHBl
bmQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChVQ2hhciBzcmNDaGFyKTsK
KworICAvKioKKyAgICogQXBwZW5kIHRoZSBjb2RlIHBvaW50IDxUVD5zcmNDaGFyPC9UVD4gdG8g
dGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcGFyYW0gc3JjQ2hhciB0aGUgY29kZSBw
b2ludCB0byBhcHBlbmQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChVQ2hh
cjMyIHNyY0NoYXIpOworCisKKyAgLyogSW5zZXJ0IG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAg
ICogSW5zZXJ0IHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNUZXh0PC9UVD4gaW4gdGhlIHJhbmdl
CisgICAqIFs8VFQ+c3JjU3RhcnQ8L1RUPiwgPFRUPnNyY1N0YXJ0ICsgc3JjTGVuZ3RoPC9UVD4p
IGludG8gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogb2JqZWN0IGF0IG9mZnNldCA8VFQ+c3RhcnQ8
L1RUPi4gPFRUPnNyY1RleHQ8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzdGFy
dCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBzcmNU
ZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3Rh
cnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNUZXh0PC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMK
KyAgICogd2lsbCBiZSBvYnRhaW5lZAorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+IGluCisgICAqIHRoZSBpbnNlcnQgc3Ry
aW5nCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBpbnNlcnQoaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICBp
bnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8q
KgorICAgKiBJbnNlcnQgdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbnRvIHRo
ZSBVbmljb2RlU3RyaW5nIG9iamVjdAorICAgKiBhdCBvZmZzZXQgPFRUPnN0YXJ0PC9UVD4uIDxU
VD5zcmNUZXh0PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9m
ZnNldCB3aGVyZSB0aGUgaW5zZXJ0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gc3JjVGV4dCB0aGUg
c291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0
byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJp
bmcmIGluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmlu
ZyYgc3JjVGV4dCk7CisKKyAgLyoqCisgICAqIEluc2VydCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+
c3JjQ2hhcnM8L1RUPiBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+
c3JjU3RhcnQgKyBzcmNMZW5ndGg8L1RUPikgaW50byB0aGUgVW5pY29kZVN0cmluZworICAgKiAg
b2JqZWN0IGF0IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4gPFRUPnNyY0NoYXJzPC9UVD4gaXMgbm90
IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgaW5z
ZXJ0aW9uIGJlZ2lucworICAgKiBAcGFyYW0gc3JjQ2hhcnMgdGhlIHNvdXJjZSBmb3IgdGhlIG5l
dyBjaGFyYWN0ZXJzCisgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPFRUPnNy
Y0NoYXJzPC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBvYnRhaW5lZAor
ICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiA8VFQ+c3Jj
Q2hhcnM8L1RUPgorICAgKiBpbiB0aGUgaW5zZXJ0IHN0cmluZworICAgKiBAcmV0dXJuIGEgcmVm
ZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5p
Y29kZVN0cmluZyYgaW5zZXJ0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICBjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgorICAgKiBJbnNlcnQgdGhlIGNoYXJhY3RlcnMg
aW4gPFRUPnNyY0NoYXJzPC9UVD4gaW50byB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QKKyAgICog
YXQgb2Zmc2V0IDxUVD5zdGFydDwvVFQ+LiA8VFQ+c3JjQ2hhcnM8L1RUPiBpcyBub3QgbW9kaWZp
ZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gYmVn
aW5zCisgICAqIEBwYXJhbSBzcmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3Rl
cnMKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVy
cyBpbiBzcmNDaGFycy4KKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpOworCisgIC8qKgorICAgKiBJbnNlcnQgdGhlIGNvZGUgdW5p
dCA8VFQ+c3JjQ2hhcjwvVFQ+IGludG8gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0CisgICAq
IG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4KKyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQg
d2hpY2ggdGhlIGluc2VydGlvbiBvY2N1cnMKKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIGNvZGUg
dW5pdCB0byBpbnNlcnQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBz
dGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgVUNoYXIgc3JjQ2hhcik7CisKKyAgLyoqCisgICAqIElu
c2VydCB0aGUgY29kZSBwb2ludCA8VFQ+c3JjQ2hhcjwvVFQ+IGludG8gdGhlIFVuaWNvZGVTdHJp
bmcgb2JqZWN0IGF0CisgICAqIG9mZnNldCA8VFQ+c3RhcnQ8L1RUPi4KKyAgICogQHBhcmFtIHN0
YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIGluc2VydGlvbiBvY2N1cnMKKyAgICogQHBhcmFt
IHNyY0NoYXIgdGhlIGNvZGUgcG9pbnQgdG8gaW5zZXJ0CisgICAqIEByZXR1cm4gYSByZWZlcmVu
Y2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2Rl
U3RyaW5nJiBpbnNlcnQoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgIFVDaGFyMzIgc3JjQ2hh
cik7CisKKworICAvKiBSZXBsYWNlIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogUmVwbGFj
ZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+
c3RhcnQgKyBsZW5ndGg8L1RUPikgd2l0aCB0aGUgY2hhcmFjdGVycyBpbgorICAgKiA8VFQ+c3Jj
VGV4dDwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9UVD4sIDxUVD5zcmNT
dGFydCArIHNyY0xlbmd0aDwvVFQ+KS4KKyAgICogPFRUPnNyY1RleHQ8L1RUPiBpcyBub3QgbW9k
aWZpZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNl
IG9wZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJh
Y3RlcnMgdG8gcmVwbGFjZS4gVGhlIGNoYXJhY3RlciBhdAorICAgKiA8VFQ+c3RhcnQgKyBsZW5n
dGg8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2Ug
Zm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBp
bnRvIDxUVD5zcmNUZXh0PC9UVD4gd2hlcmUgbmV3IGNoYXJhY3RlcnMKKyAgICogd2lsbCBiZSBv
YnRhaW5lZAorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biA8VFQ+c3JjVGV4dDwvVFQ+IGluCisgICAqIHRoZSByZXBsYWNlIHN0cmluZworICAgKiBAcmV0
dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBV
bmljb2RlU3RyaW5nJiByZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoKTsKKworICAvKioKKyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UK
KyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikKKyAgICogd2l0
aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+LiAgPFRUPnNyY1RleHQ8L1RUPiBp
cworICAgKiAgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3
aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhl
IG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuIFRoZSBjaGFyYWN0ZXIgYXQKKyAgICog
PFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3Jj
VGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHJldHVybiBhIHJl
ZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0
cmluZyYgcmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgIGludDMyX3QgbGVuZ3Ro
LAorICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpOworCisgIC8qKgor
ICAgKiBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0YXJ0
PC9UVD4sIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluCisg
ICAqIDxUVD5zcmNDaGFyczwvVFQ+IGluIHRoZSByYW5nZQorICAgKiBbPFRUPnNyY1N0YXJ0PC9U
VD4sIDxUVD5zcmNTdGFydCArIHNyY0xlbmd0aDwvVFQ+KS4gPFRUPnNyY0NoYXJzPC9UVD4KKyAg
ICogaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGlj
aCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuICBUaGUgY2hhcmFjdGVyIGF0CisgICAqIDxU
VD5zdGFydCArIGxlbmd0aDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0No
YXJzIHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworICAgKiBAcGFyYW0gc3JjU3Rh
cnQgdGhlIG9mZnNldCBpbnRvIDxUVD5zcmNDaGFyczwvVFQ+IHdoZXJlIG5ldyBjaGFyYWN0ZXJz
CisgICAqIHdpbGwgYmUgb2J0YWluZWQKKyAgICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgbnVtYmVy
IG9mIGNoYXJhY3RlcnMgaW4gPFRUPnNyY0NoYXJzPC9UVD4KKyAgICogaW4gdGhlIHJlcGxhY2Ug
c3RyaW5nCisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAg
ICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4g
dGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4p
IHdpdGggdGhlIGNoYXJhY3RlcnMgaW4KKyAgICogPFRUPnNyY0NoYXJzPC9UVD4uICA8VFQ+c3Jj
Q2hhcnM8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0
IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyAgICogQHBhcmFtIGxlbmd0
aCBudW1iZXIgb2YgY2hhcmFjdGVycyB0byByZXBsYWNlLiAgVGhlIGNoYXJhY3RlciBhdAorICAg
KiA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPiBpcyBub3QgbW9kaWZpZWQuCisgICAqIEBwYXJhbSBz
cmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFtIHNy
Y0xlbmd0aCB0aGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycyBpbiBzcmNDaGFycworICAg
KiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBpbmxpbmUgVW5pY29kZVN0cmluZyYgcmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFy
cywKKyAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIFJlcGxh
Y2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRU
PnN0YXJ0ICsgbGVuZ3RoPC9UVD4pIHdpdGggdGhlIGNvZGUgdW5pdAorICAgKiA8VFQ+c3JjQ2hh
cjwvVFQ+LgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFj
ZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIHRvIHJlcGxhY2UuICBUaGUgY2hhcmFjdGVyIGF0CisgICAqIDxUVD5zdGFydCArIGxl
bmd0aDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIG5ldyBj
b2RlIHVuaXQKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUg
SUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBz
dGFydCwKKyAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICBVQ2hhciBz
cmNDaGFyKTsKKworICAvKioKKyAgICogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFu
Z2UKKyAgICogWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgd2l0aCB0
aGUgY29kZSBwb2ludAorICAgKiA8VFQ+c3JjQ2hhcjwvVFQ+LgorICAgKiBAcGFyYW0gc3RhcnQg
dGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBw
YXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuICBUaGUgY2hh
cmFjdGVyIGF0CisgICAqIDxUVD5zdGFydCArIGxlbmd0aDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4K
KyAgICogQHBhcmFtIHNyY0NoYXIgdGhlIG5ldyBjb2RlIHBvaW50CisgICAqIEByZXR1cm4gYSBy
ZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBV
bmljb2RlU3RyaW5nJiByZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICAgICAgVUNoYXIzMiBzcmNDaGFyKTsKKworICAvKioKKyAgICog
UmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+
bGltaXQ8L1RUPikKKyAgICogd2l0aCB0aGUgY2hhcmFjdGVycyBpbiA8VFQ+c3JjVGV4dDwvVFQ+
LiA8VFQ+c3JjVGV4dDwvVFQ+IGlzIG5vdCBtb2RpZmllZC4KKyAgICogQHBhcmFtIHN0YXJ0IHRo
ZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworICAgKiBAcGFy
YW0gbGltaXQgdGhlIG9mZnNldCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIHJlcGxhY2UgcmFu
Z2UKKyAgICogQHBhcmFtIHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJz
CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0
YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAgICAgICAgICAgICAgY29u
c3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCk7CisKKyAgLyoqCisgICAqIFJlcGxhY2UgdGhlIGNo
YXJhY3RlcnMgaW4gdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPmxpbWl0PC9UVD4pCisg
ICAqIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gPFRUPnNyY1RleHQ8L1RUPiBpbiB0aGUgcmFuZ2UK
KyAgICogWzxUVD5zcmNTdGFydDwvVFQ+LCA8VFQ+c3JjTGltaXQ8L1RUPikuIDxUVD5zcmNUZXh0
PC9UVD4gaXMgbm90IG1vZGlmaWVkLgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3
aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisgICAqIEBwYXJhbSBsaW1pdCB0aGUg
b2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgcmVwbGFjZSByYW5nZQorICAgKiBAcGFy
YW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyAgICogQHBhcmFt
IHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8VFQ+c3JjQ2hhcnM8L1RUPiB3aGVyZSBuZXcgY2hh
cmFjdGVycworICAgKiB3aWxsIGJlIG9idGFpbmVkCisgICAqIEBwYXJhbSBzcmNMaW1pdCB0aGUg
b2Zmc2V0IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgcmFuZ2UgdG8gY29weQorICAgKiBpbiA8
VFQ+c3JjVGV4dDwvVFQ+CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBsYWNlQmV0
d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCisgICAg
ICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGltaXQpOwor
CisgIC8qKgorICAgKiBSZXBsYWNlIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhl
IGdpdmVuIHRleHQuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNs
dXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgKiBAcGFy
YW0gbGltaXQgdGhlIGVuZGluZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1p
dAorICAgKiA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRv
IHJlcGxhY2UgY2hhcmFjdGVycyA8Y29kZT5zdGFydDwvY29kZT4KKyAgICogdG8gPGNvZGU+bGlt
aXQgLSAxPC9jb2RlPgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVSZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpOworCisgIC8qKgorICAgKiBS
ZXBsYWNlYWJsZSBBUEkKKyAgICogQHJldHVybiBUUlVFIGlmIGl0IGhhcyBNZXRhRGF0YQorICAg
KiBAc3RhYmxlIElDVSAyLjQKKyAgICovCisgIHZpcnR1YWwgVUJvb2wgaGFzTWV0YURhdGEoKSBj
b25zdDsKKworICAvKioKKyAgICogQ29weSBhIHN1YnN0cmluZyBvZiB0aGlzIG9iamVjdCwgcmV0
YWluaW5nIGF0dHJpYnV0ZSAob3V0LW9mLWJhbmQpCisgICAqIGluZm9ybWF0aW9uLiAgVGhpcyBt
ZXRob2QgaXMgdXNlZCB0byBkdXBsaWNhdGUgb3IgcmVvcmRlciBzdWJzdHJpbmdzLgorICAgKiBU
aGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgor
ICAgKgorICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8
Y29kZT4wIDw9IHN0YXJ0IDw9CisgICAqIGxpbWl0PC9jb2RlPi4KKyAgICogQHBhcmFtIGxpbWl0
IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQgPD0KKyAg
ICogbGVuZ3RoKCk8L2NvZGU+LgorICAgKiBAcGFyYW0gZGVzdCB0aGUgZGVzdGluYXRpb24gaW5k
ZXguICBUaGUgY2hhcmFjdGVycyBmcm9tCisgICAqIDxjb2RlPnN0YXJ0Li5saW1pdC0xPC9jb2Rl
PiB3aWxsIGJlIGNvcGllZCB0byA8Y29kZT5kZXN0PC9jb2RlPi4KKyAgICogSW1wbGVtZW50YXRp
b25zIG9mIHRoaXMgbWV0aG9kIG1heSBhc3N1bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8
CisgICAqIGRlc3QgPj0gbGltaXQ8L2NvZGU+LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICov
CisgIHZpcnR1YWwgdm9pZCBjb3B5KGludDMyX3Qgc3RhcnQsIGludDMyX3QgbGltaXQsIGludDMy
X3QgZGVzdCk7CisKKyAgLyogU2VhcmNoIGFuZCByZXBsYWNlIG9wZXJhdGlvbnMgKi8KKworICAv
KioKKyAgICogUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgY2hhcmFjdGVycyBpbiBvbGRUZXh0
IHdpdGggdGhlIGNoYXJhY3RlcnMKKyAgICogaW4gbmV3VGV4dAorICAgKiBAcGFyYW0gb2xkVGV4
dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSBzZWFyY2ggdGV4dAorICAgKiBAcGFyYW0gbmV3VGV4
dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSByZXBsYWNlbWVudCB0ZXh0CisgICAqIEByZXR1cm4g
YSByZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGlu
ZSBVbmljb2RlU3RyaW5nJiBmaW5kQW5kUmVwbGFjZShjb25zdCBVbmljb2RlU3RyaW5nJiBvbGRU
ZXh0LAorICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5ld1RleHQpOworCisg
IC8qKgorICAgKiBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiBjaGFyYWN0ZXJzIGluIG9sZFRl
eHQgd2l0aCBjaGFyYWN0ZXJzCisgICAqIGluIG5ld1RleHQKKyAgICogaW4gdGhlIHJhbmdlIFs8
VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3RoPC9UVD4pLgorICAgKiBAcGFyYW0gc3Rh
cnQgdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSBpbiB3aGljaCByZXBsYWNlIHdpbGwgcGVyZm9ybWVk
CisgICAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2UgaW4gd2hpY2ggcmVw
bGFjZSB3aWxsIGJlIHBlcmZvcm1lZAorICAgKiBAcGFyYW0gb2xkVGV4dCB0aGUgdGV4dCBjb250
YWluaW5nIHRoZSBzZWFyY2ggdGV4dAorICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCBjb250
YWluaW5nIHRoZSByZXBsYWNlbWVudCB0ZXh0CisgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8g
dGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5n
JiBmaW5kQW5kUmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoLAorICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisg
ICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgbmV3VGV4dCk7CisKKyAgLyoqCisg
ICAqIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIGNoYXJhY3RlcnMgaW4gb2xkVGV4dCBpbiB0
aGUgcmFuZ2UKKyAgICogWzxUVD5vbGRTdGFydDwvVFQ+LCA8VFQ+b2xkU3RhcnQgKyBvbGRMZW5n
dGg8L1RUPikgd2l0aCB0aGUgY2hhcmFjdGVycworICAgKiBpbiBuZXdUZXh0IGluIHRoZSByYW5n
ZQorICAgKiBbPFRUPm5ld1N0YXJ0PC9UVD4sIDxUVD5uZXdTdGFydCArIG5ld0xlbmd0aDwvVFQ+
KQorICAgKiBpbiB0aGUgcmFuZ2UgWzxUVD5zdGFydDwvVFQ+LCA8VFQ+c3RhcnQgKyBsZW5ndGg8
L1RUPikuCisgICAqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGluIHdoaWNo
IHJlcGxhY2Ugd2lsbCBwZXJmb3JtZWQKKyAgICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9m
IHRoZSByYW5nZSBpbiB3aGljaCByZXBsYWNlIHdpbGwgYmUgcGVyZm9ybWVkCisgICAqIEBwYXJh
bSBvbGRUZXh0IHRoZSB0ZXh0IGNvbnRhaW5pbmcgdGhlIHNlYXJjaCB0ZXh0CisgICAqIEBwYXJh
bSBvbGRTdGFydCB0aGUgc3RhcnQgb2YgdGhlIHNlYXJjaCByYW5nZSBpbiA8VFQ+b2xkVGV4dDwv
VFQ+CisgICAqIEBwYXJhbSBvbGRMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgc2VhcmNoIHJhbmdl
IGluIDxUVD5vbGRUZXh0PC9UVD4KKyAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgY29udGFp
bmluZyB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICAgKiBAcGFyYW0gbmV3U3RhcnQgdGhlIHN0YXJ0
IG9mIHRoZSByZXBsYWNlbWVudCByYW5nZSBpbiA8VFQ+bmV3VGV4dDwvVFQ+CisgICAqIEBwYXJh
bSBuZXdMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgcmFuZ2UgaW4gPFRUPm5l
d1RleHQ8L1RUPgorICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiBmaW5kQW5kUmVwbGFjZShpbnQzMl90
IHN0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBv
bGRTdGFydCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IG9sZExlbmd0aCwKKyAgICAgICAgICAg
ICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBuZXdUZXh0LAorICAgICAgICAgICAgICAgIGludDMy
X3QgbmV3U3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBuZXdMZW5ndGgpOworCisKKyAg
LyogUmVtb3ZlIG9wZXJhdGlvbnMgKi8KKworICAvKioKKyAgICogUmVtb3ZlIGFsbCBjaGFyYWN0
ZXJzIGZyb20gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcmV0dXJuIGEgcmVmZXJl
bmNlIHRvIHRoaXMKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBpbmxpbmUgVW5pY29k
ZVN0cmluZyYgcmVtb3ZlKHZvaWQpOworCisgIC8qKgorICAgKiBSZW1vdmUgdGhlIGNoYXJhY3Rl
cnMgaW4gdGhlIHJhbmdlCisgICAqIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsgbGVuZ3Ro
PC9UVD4pIGZyb20gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBAcGFyYW0gc3RhcnQg
dGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIHJlbW92ZQorICAgKiBAcGFyYW0g
bGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byByZW1vdmUKKyAgICogQHJldHVybiBh
IHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5l
IFVuaWNvZGVTdHJpbmcmIHJlbW92ZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gKGludDMyX3QpSU5UMzJfTUFYKTsKKworICAv
KioKKyAgICogUmVtb3ZlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPFRUPnN0
YXJ0PC9UVD4sIDxUVD5saW1pdDwvVFQ+KSBmcm9tIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4K
KyAgICogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBy
ZW1vdmUKKyAgICogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5n
IHRoZSByYW5nZSB0byByZW1vdmUKKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlbW92
ZUJldHdlZW4oaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBsaW1pdCA9IChpbnQzMl90KUlOVDMyX01BWCk7CisKKyAgLyoqCisgICAq
IFJldGFpbiBvbmx5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPGNvZGU+c3Rh
cnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIGZyb20gdGhlIFVuaWNvZGVTdHJpbmcgb2Jq
ZWN0LgorICAgKiBSZW1vdmVzIGNoYXJhY3RlcnMgYmVmb3JlIDxjb2RlPnN0YXJ0PC9jb2RlPiBh
bmQgYXQgYW5kIGFmdGVyIDxjb2RlPmxpbWl0PC9jb2RlPi4KKyAgICogQHBhcmFtIHN0YXJ0IHRo
ZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byByZXRhaW4KKyAgICogQHBhcmFtIGxp
bWl0IHRoZSBvZmZzZXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSByYW5nZSB0byByZXRhaW4K
KyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDQuNAor
ICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcgJnJldGFpbkJldHdlZW4oaW50MzJfdCBzdGFy
dCwgaW50MzJfdCBsaW1pdCA9IElOVDMyX01BWCk7CisKKyAgLyogTGVuZ3RoIG9wZXJhdGlvbnMg
Ki8KKworICAvKioKKyAgICogUGFkIHRoZSBzdGFydCBvZiB0aGlzIFVuaWNvZGVTdHJpbmcgd2l0
aCB0aGUgY2hhcmFjdGVyIDxUVD5wYWRDaGFyPC9UVD4uCisgICAqIElmIHRoZSBsZW5ndGggb2Yg
dGhpcyBVbmljb2RlU3RyaW5nIGlzIGxlc3MgdGhhbiB0YXJnZXRMZW5ndGgsCisgICAqIGxlbmd0
aCgpIC0gdGFyZ2V0TGVuZ3RoIGNvcGllcyBvZiBwYWRDaGFyIHdpbGwgYmUgYWRkZWQgdG8gdGhl
CisgICAqIGJlZ2lubmluZyBvZiB0aGlzIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJhbSB0YXJn
ZXRMZW5ndGggdGhlIGRlc2lyZWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcKKyAgICogQHBhcmFtIHBh
ZENoYXIgdGhlIGNoYXJhY3RlciB0byB1c2UgZm9yIHBhZGRpbmcuIERlZmF1bHRzIHRvCisgICAq
IHNwYWNlIChVKzAwMjApCisgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCB3YXMgcGFkZGVk
LCBGQUxTRSBvdGhlcndpc2UuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVUJvb2wg
cGFkTGVhZGluZyhpbnQzMl90IHRhcmdldExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgVUNo
YXIgcGFkQ2hhciA9IDB4MDAyMCk7CisKKyAgLyoqCisgICAqIFBhZCB0aGUgZW5kIG9mIHRoaXMg
VW5pY29kZVN0cmluZyB3aXRoIHRoZSBjaGFyYWN0ZXIgPFRUPnBhZENoYXI8L1RUPi4KKyAgICog
SWYgdGhlIGxlbmd0aCBvZiB0aGlzIFVuaWNvZGVTdHJpbmcgaXMgbGVzcyB0aGFuIHRhcmdldExl
bmd0aCwKKyAgICogbGVuZ3RoKCkgLSB0YXJnZXRMZW5ndGggY29waWVzIG9mIHBhZENoYXIgd2ls
bCBiZSBhZGRlZCB0byB0aGUKKyAgICogZW5kIG9mIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICog
QHBhcmFtIHRhcmdldExlbmd0aCB0aGUgZGVzaXJlZCBsZW5ndGggb2YgdGhlIHN0cmluZworICAg
KiBAcGFyYW0gcGFkQ2hhciB0aGUgY2hhcmFjdGVyIHRvIHVzZSBmb3IgcGFkZGluZy4gRGVmYXVs
dHMgdG8KKyAgICogc3BhY2UgKFUrMDAyMCkKKyAgICogQHJldHVybiBUUlVFIGlmIHRoZSB0ZXh0
IHdhcyBwYWRkZWQsIEZBTFNFIG90aGVyd2lzZS4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAq
LworICBVQm9vbCBwYWRUcmFpbGluZyhpbnQzMl90IHRhcmdldExlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgIFVDaGFyIHBhZENoYXIgPSAweDAwMjApOworCisgIC8qKgorICAgKiBUcnVuY2F0
ZSB0aGlzIFVuaWNvZGVTdHJpbmcgdG8gdGhlIDxUVD50YXJnZXRMZW5ndGg8L1RUPi4KKyAgICog
QHBhcmFtIHRhcmdldExlbmd0aCB0aGUgZGVzaXJlZCBsZW5ndGggb2YgdGhpcyBVbmljb2RlU3Ry
aW5nLgorICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIHRleHQgd2FzIHRydW5jYXRlZCwgRkFMU0Ug
b3RoZXJ3aXNlCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgaW5saW5lIFVCb29sIHRy
dW5jYXRlKGludDMyX3QgdGFyZ2V0TGVuZ3RoKTsKKworICAvKioKKyAgICogVHJpbXMgbGVhZGlu
ZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBmcm9tIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICog
QHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8K
KyAgVW5pY29kZVN0cmluZyYgdHJpbSh2b2lkKTsKKworCisgIC8qIE1pc2NlbGxhbmVvdXMgb3Bl
cmF0aW9ucyAqLworCisgIC8qKgorICAgKiBSZXZlcnNlIHRoaXMgVW5pY29kZVN0cmluZyBpbiBw
bGFjZS4KKyAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJldmVyc2Uodm9pZCk7CisKKyAg
LyoqCisgICAqIFJldmVyc2UgdGhlIHJhbmdlIFs8VFQ+c3RhcnQ8L1RUPiwgPFRUPnN0YXJ0ICsg
bGVuZ3RoPC9UVD4pIGluCisgICAqIHRoaXMgVW5pY29kZVN0cmluZy4KKyAgICogQHBhcmFtIHN0
YXJ0IHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgdG8gcmV2ZXJzZQorICAgKiBAcGFyYW0gbGVuZ3Ro
IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byB0byByZXZlcnNlCisgICAqIEByZXR1cm4gYSBy
ZWZlcmVuY2UgdG8gdGhpcworICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIGlubGluZSBV
bmljb2RlU3RyaW5nJiByZXZlcnNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgpOworCisgIC8qKgorICAgKiBDb252ZXJ0IHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMg
dG8gVVBQRVIgQ0FTRSBmb2xsb3dpbmcgdGhlIGNvbnZlbnRpb25zIG9mCisgICAqIHRoZSBkZWZh
dWx0IGxvY2FsZS4KKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcmIHRvVXBwZXIodm9pZCk7CisKKyAg
LyoqCisgICAqIENvbnZlcnQgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyB0byBVUFBFUiBDQVNFIGZv
bGxvd2luZyB0aGUgY29udmVudGlvbnMgb2YKKyAgICogYSBzcGVjaWZpYyBsb2NhbGUuCisgICAq
IEBwYXJhbSBsb2NhbGUgVGhlIGxvY2FsZSBjb250YWluaW5nIHRoZSBjb252ZW50aW9ucyB0byB1
c2UuCisgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhpcy4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiB0b1VwcGVyKGNvbnN0IExvY2FsZSYgbG9jYWxl
KTsKKworICAvKioKKyAgICogQ29udmVydCB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIHRvIGxvd2Vy
IGNhc2UgZm9sbG93aW5nIHRoZSBjb252ZW50aW9ucyBvZgorICAgKiB0aGUgZGVmYXVsdCBsb2Nh
bGUuCisgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhpcy4KKyAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqLworICBVbmljb2RlU3RyaW5nJiB0b0xvd2VyKHZvaWQpOworCisgIC8qKgorICAg
KiBDb252ZXJ0IHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgdG8gbG93ZXIgY2FzZSBmb2xsb3dpbmcg
dGhlIGNvbnZlbnRpb25zIG9mCisgICAqIGEgc3BlY2lmaWMgbG9jYWxlLgorICAgKiBAcGFyYW0g
bG9jYWxlIFRoZSBsb2NhbGUgY29udGFpbmluZyB0aGUgY29udmVudGlvbnMgdG8gdXNlLgorICAg
KiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIHRoaXMuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
Ki8KKyAgVW5pY29kZVN0cmluZyYgdG9Mb3dlcihjb25zdCBMb2NhbGUmIGxvY2FsZSk7CisKKyNp
ZiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KKworICAvKioKKyAgICogVGl0bGVjYXNlIHRo
aXMgc3RyaW5nLCBjb252ZW5pZW5jZSBmdW5jdGlvbiB1c2luZyB0aGUgZGVmYXVsdCBsb2NhbGUu
CisgICAqCisgICAqIENhc2luZyBpcyBsb2NhbGUtZGVwZW5kZW50IGFuZCBjb250ZXh0LXNlbnNp
dGl2ZS4KKyAgICogVGl0bGVjYXNpbmcgdXNlcyBhIGJyZWFrIGl0ZXJhdG9yIHRvIGZpbmQgdGhl
IGZpcnN0IGNoYXJhY3RlcnMgb2Ygd29yZHMKKyAgICogdGhhdCBhcmUgdG8gYmUgdGl0bGVjYXNl
ZC4gSXQgdGl0bGVjYXNlcyB0aG9zZSBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2VzCisgICAqIGFs
bCBvdGhlcnMuCisgICAqCisgICAqIFRoZSB0aXRsZWNhc2UgYnJlYWsgaXRlcmF0b3IgY2FuIGJl
IHByb3ZpZGVkIHRvIGN1c3RvbWl6ZSBmb3IgYXJiaXRyYXJ5CisgICAqIHN0eWxlcywgdXNpbmcg
cnVsZXMgYW5kIGRpY3Rpb25hcmllcyBiZXlvbmQgdGhlIHN0YW5kYXJkIGl0ZXJhdG9ycy4KKyAg
ICogSXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGFsd2F5cyBwcm92aWRlIGFuIGl0ZXJhdG9y
IHRvIGF2b2lkCisgICAqIG9wZW5pbmcgYW5kIGNsb3Npbmcgb25lIGZvciBlYWNoIHN0cmluZy4K
KyAgICogVGhlIHN0YW5kYXJkIHRpdGxlY2FzZSBpdGVyYXRvciBmb3IgdGhlIHJvb3QgbG9jYWxl
IGltcGxlbWVudHMgdGhlCisgICAqIGFsZ29yaXRobSBvZiBVbmljb2RlIFRSIDIxLgorICAgKgor
ICAgKiBUaGlzIGZ1bmN0aW9uIHVzZXMgb25seSB0aGUgc2V0VGV4dCgpLCBmaXJzdCgpIGFuZCBu
ZXh0KCkgbWV0aG9kcyBvZiB0aGUKKyAgICogcHJvdmlkZWQgYnJlYWsgaXRlcmF0b3IuCisgICAq
CisgICAqIEBwYXJhbSB0aXRsZUl0ZXIgQSBicmVhayBpdGVyYXRvciB0byBmaW5kIHRoZSBmaXJz
dCBjaGFyYWN0ZXJzIG9mIHdvcmRzCisgICAqICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgdG8g
YmUgdGl0bGVjYXNlZC4KKyAgICogICAgICAgICAgICAgICAgICBJZiBub25lIGlzIHByb3ZpZGVk
ICgwKSwgdGhlbiBhIHN0YW5kYXJkIHRpdGxlY2FzZQorICAgKiAgICAgICAgICAgICAgICAgIGJy
ZWFrIGl0ZXJhdG9yIGlzIG9wZW5lZC4KKyAgICogICAgICAgICAgICAgICAgICBPdGhlcndpc2Ug
dGhlIHByb3ZpZGVkIGl0ZXJhdG9yIGlzIHNldCB0byB0aGUgc3RyaW5nJ3MgdGV4dC4KKyAgICog
QHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICov
CisgIFVuaWNvZGVTdHJpbmcgJnRvVGl0bGUoQnJlYWtJdGVyYXRvciAqdGl0bGVJdGVyKTsKKwor
ICAvKioKKyAgICogVGl0bGVjYXNlIHRoaXMgc3RyaW5nLgorICAgKgorICAgKiBDYXNpbmcgaXMg
bG9jYWxlLWRlcGVuZGVudCBhbmQgY29udGV4dC1zZW5zaXRpdmUuCisgICAqIFRpdGxlY2FzaW5n
IHVzZXMgYSBicmVhayBpdGVyYXRvciB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIHdv
cmRzCisgICAqIHRoYXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhvc2Ug
Y2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlcworICAgKiBhbGwgb3RoZXJzLgorICAgKgorICAgKiBU
aGUgdGl0bGVjYXNlIGJyZWFrIGl0ZXJhdG9yIGNhbiBiZSBwcm92aWRlZCB0byBjdXN0b21pemUg
Zm9yIGFyYml0cmFyeQorICAgKiBzdHlsZXMsIHVzaW5nIHJ1bGVzIGFuZCBkaWN0aW9uYXJpZXMg
YmV5b25kIHRoZSBzdGFuZGFyZCBpdGVyYXRvcnMuCisgICAqIEl0IG1heSBiZSBtb3JlIGVmZmlj
aWVudCB0byBhbHdheXMgcHJvdmlkZSBhbiBpdGVyYXRvciB0byBhdm9pZAorICAgKiBvcGVuaW5n
IGFuZCBjbG9zaW5nIG9uZSBmb3IgZWFjaCBzdHJpbmcuCisgICAqIFRoZSBzdGFuZGFyZCB0aXRs
ZWNhc2UgaXRlcmF0b3IgZm9yIHRoZSByb290IGxvY2FsZSBpbXBsZW1lbnRzIHRoZQorICAgKiBh
bGdvcml0aG0gb2YgVW5pY29kZSBUUiAyMS4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiB1c2Vz
IG9ubHkgdGhlIHNldFRleHQoKSwgZmlyc3QoKSBhbmQgbmV4dCgpIG1ldGhvZHMgb2YgdGhlCisg
ICAqIHByb3ZpZGVkIGJyZWFrIGl0ZXJhdG9yLgorICAgKgorICAgKiBAcGFyYW0gdGl0bGVJdGVy
IEEgYnJlYWsgaXRlcmF0b3IgdG8gZmluZCB0aGUgZmlyc3QgY2hhcmFjdGVycyBvZiB3b3Jkcwor
ICAgKiAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuCisgICAqICAg
ICAgICAgICAgICAgICAgSWYgbm9uZSBpcyBwcm92aWRlZCAoMCksIHRoZW4gYSBzdGFuZGFyZCB0
aXRsZWNhc2UKKyAgICogICAgICAgICAgICAgICAgICBicmVhayBpdGVyYXRvciBpcyBvcGVuZWQu
CisgICAqICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlIHRoZSBwcm92aWRlZCBpdGVyYXRvciBp
cyBzZXQgdG8gdGhlIHN0cmluZydzIHRleHQuCisgICAqIEBwYXJhbSBsb2NhbGUgICAgVGhlIGxv
Y2FsZSB0byBjb25zaWRlci4KKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAg
KiBAc3RhYmxlIElDVSAyLjEKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgJnRvVGl0bGUoQnJlYWtJ
dGVyYXRvciAqdGl0bGVJdGVyLCBjb25zdCBMb2NhbGUgJmxvY2FsZSk7CisKKyAgLyoqCisgICAq
IFRpdGxlY2FzZSB0aGlzIHN0cmluZywgd2l0aCBvcHRpb25zLgorICAgKgorICAgKiBDYXNpbmcg
aXMgbG9jYWxlLWRlcGVuZGVudCBhbmQgY29udGV4dC1zZW5zaXRpdmUuCisgICAqIFRpdGxlY2Fz
aW5nIHVzZXMgYSBicmVhayBpdGVyYXRvciB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9m
IHdvcmRzCisgICAqIHRoYXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhv
c2UgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlcworICAgKiBhbGwgb3RoZXJzLiAoVGhpcyBjYW4g
YmUgbW9kaWZpZWQgd2l0aCBvcHRpb25zLikKKyAgICoKKyAgICogVGhlIHRpdGxlY2FzZSBicmVh
ayBpdGVyYXRvciBjYW4gYmUgcHJvdmlkZWQgdG8gY3VzdG9taXplIGZvciBhcmJpdHJhcnkKKyAg
ICogc3R5bGVzLCB1c2luZyBydWxlcyBhbmQgZGljdGlvbmFyaWVzIGJleW9uZCB0aGUgc3RhbmRh
cmQgaXRlcmF0b3JzLgorICAgKiBJdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQgdG8gYWx3YXlzIHBy
b3ZpZGUgYW4gaXRlcmF0b3IgdG8gYXZvaWQKKyAgICogb3BlbmluZyBhbmQgY2xvc2luZyBvbmUg
Zm9yIGVhY2ggc3RyaW5nLgorICAgKiBUaGUgc3RhbmRhcmQgdGl0bGVjYXNlIGl0ZXJhdG9yIGZv
ciB0aGUgcm9vdCBsb2NhbGUgaW1wbGVtZW50cyB0aGUKKyAgICogYWxnb3JpdGhtIG9mIFVuaWNv
ZGUgVFIgMjEuCisgICAqCisgICAqIFRoaXMgZnVuY3Rpb24gdXNlcyBvbmx5IHRoZSBzZXRUZXh0
KCksIGZpcnN0KCkgYW5kIG5leHQoKSBtZXRob2RzIG9mIHRoZQorICAgKiBwcm92aWRlZCBicmVh
ayBpdGVyYXRvci4KKyAgICoKKyAgICogQHBhcmFtIHRpdGxlSXRlciBBIGJyZWFrIGl0ZXJhdG9y
IHRvIGZpbmQgdGhlIGZpcnN0IGNoYXJhY3RlcnMgb2Ygd29yZHMKKyAgICogICAgICAgICAgICAg
ICAgICB0aGF0IGFyZSB0byBiZSB0aXRsZWNhc2VkLgorICAgKiAgICAgICAgICAgICAgICAgIElm
IG5vbmUgaXMgcHJvdmlkZWQgKDApLCB0aGVuIGEgc3RhbmRhcmQgdGl0bGVjYXNlCisgICAqICAg
ICAgICAgICAgICAgICAgYnJlYWsgaXRlcmF0b3IgaXMgb3BlbmVkLgorICAgKiAgICAgICAgICAg
ICAgICAgIE90aGVyd2lzZSB0aGUgcHJvdmlkZWQgaXRlcmF0b3IgaXMgc2V0IHRvIHRoZSBzdHJp
bmcncyB0ZXh0LgorICAgKiBAcGFyYW0gbG9jYWxlICAgIFRoZSBsb2NhbGUgdG8gY29uc2lkZXIu
CisgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgYml0IHNldCwgc2VlIHVjYXNlbWFwX29wZW4o
KS4KKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc2VlIFVfVElUTEVD
QVNFX05PX0xPV0VSQ0FTRQorICAgKiBAc2VlIFVfVElUTEVDQVNFX05PX0JSRUFLX0FESlVTVE1F
TlQKKyAgICogQHNlZSB1Y2FzZW1hcF9vcGVuCisgICAqIEBzdGFibGUgSUNVIDMuOAorICAgKi8K
KyAgVW5pY29kZVN0cmluZyAmdG9UaXRsZShCcmVha0l0ZXJhdG9yICp0aXRsZUl0ZXIsIGNvbnN0
IExvY2FsZSAmbG9jYWxlLCB1aW50MzJfdCBvcHRpb25zKTsKKworI2VuZGlmCisKKyAgLyoqCisg
ICAqIENhc2UtZm9sZCB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIHN0cmluZy4KKyAgICogQ2FzZS1m
b2xkaW5nIGlzIGxvY2FsZS1pbmRlcGVuZGVudCBhbmQgbm90IGNvbnRleHQtc2Vuc2l0aXZlLAor
ICAgKiBidXQgdGhlcmUgaXMgYW4gb3B0aW9uIGZvciB3aGV0aGVyIHRvIGluY2x1ZGUgb3IgZXhj
bHVkZSBtYXBwaW5ncyBmb3IgZG90dGVkIEkKKyAgICogYW5kIGRvdGxlc3MgaSB0aGF0IGFyZSBt
YXJrZWQgd2l0aCAnSScgaW4gQ2FzZUZvbGRpbmcudHh0LgorICAgKiBUaGUgcmVzdWx0IG1heSBi
ZSBsb25nZXIgb3Igc2hvcnRlciB0aGFuIHRoZSBvcmlnaW5hbC4KKyAgICoKKyAgICogQHBhcmFt
IG9wdGlvbnMgRWl0aGVyIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgVV9GT0xEX0NBU0VfRVhDTFVE
RV9TUEVDSUFMX0kKKyAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzLgorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgJmZvbGRDYXNlKHVpbnQzMl90IG9w
dGlvbnM9MCAvKlVfRk9MRF9DQVNFX0RFRkFVTFQqLyk7CisKKyAgLy89PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisgIC8vIEFjY2VzcyB0byB0aGUgaW50ZXJuYWwgYnVm
ZmVyCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIC8q
KgorICAgKiBHZXQgYSByZWFkL3dyaXRlIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4K
KyAgICogVGhlIGJ1ZmZlciBpcyBndWFyYW50ZWVkIHRvIGJlIGxhcmdlIGVub3VnaCBmb3IgYXQg
bGVhc3QgbWluQ2FwYWNpdHkgVUNoYXJzLAorICAgKiB3cml0YWJsZSwgYW5kIGlzIHN0aWxsIG93
bmVkIGJ5IHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAgICogQ2FsbHMgdG8gZ2V0QnVmZmVy
KG1pbkNhcGFjaXR5KSBtdXN0IG5vdCBiZSBuZXN0ZWQsIGFuZAorICAgKiBtdXN0IGJlIG1hdGNo
ZWQgd2l0aCBjYWxscyB0byByZWxlYXNlQnVmZmVyKG5ld0xlbmd0aCkuCisgICAqIElmIHRoZSBz
dHJpbmcgYnVmZmVyIHdhcyByZWFkLW9ubHkgb3Igc2hhcmVkLAorICAgKiB0aGVuIGl0IHdpbGwg
YmUgcmVhbGxvY2F0ZWQgYW5kIGNvcGllZC4KKyAgICoKKyAgICogQW4gYXR0ZW1wdGVkIG5lc3Rl
ZCBjYWxsIHdpbGwgcmV0dXJuIDAsIGFuZCB3aWxsIG5vdCBmdXJ0aGVyIG1vZGlmeSB0aGUKKyAg
ICogc3RhdGUgb2YgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBJdCBhbHNvIHJldHVy
bnMgMCBpZiB0aGUgc3RyaW5nIGlzIGJvZ3VzLgorICAgKgorICAgKiBUaGUgYWN0dWFsIGNhcGFj
aXR5IG9mIHRoZSBzdHJpbmcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBtaW5DYXBhY2l0eS4K
KyAgICogZ2V0Q2FwYWNpdHkoKSByZXR1cm5zIHRoZSBhY3R1YWwgY2FwYWNpdHkuCisgICAqIEZv
ciBtYW55IG9wZXJhdGlvbnMsIHRoZSBmdWxsIGNhcGFjaXR5IHNob3VsZCBiZSB1c2VkIHRvIGF2
b2lkIHJlYWxsb2NhdGlvbnMuCisgICAqCisgICAqIFdoaWxlIHRoZSBidWZmZXIgaXMgIm9wZW4i
IGJldHdlZW4gZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KQorICAgKiBhbmQgcmVsZWFzZUJ1ZmZlcihu
ZXdMZW5ndGgpLCB0aGUgZm9sbG93aW5nIGFwcGxpZXM6CisgICAqIC0gVGhlIHN0cmluZyBsZW5n
dGggaXMgc2V0IHRvIDAuCisgICAqIC0gQW55IHJlYWQgQVBJIGNhbGwgb24gdGhlIFVuaWNvZGVT
dHJpbmcgb2JqZWN0IHdpbGwgYmVoYXZlIGxpa2Ugb24gYSAwLWxlbmd0aCBzdHJpbmcuCisgICAq
IC0gQW55IHdyaXRlIEFQSSBjYWxsIG9uIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCBpcyBkaXNh
bGxvd2VkIGFuZCB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICAgKiAtIFlvdSBjYW4gcmVhZCBmcm9t
IGFuZCB3cml0ZSB0byB0aGUgcmV0dXJuZWQgYnVmZmVyLgorICAgKiAtIFRoZSBwcmV2aW91cyBz
dHJpbmcgY29udGVudHMgd2lsbCBzdGlsbCBiZSBpbiB0aGUgYnVmZmVyOworICAgKiAgIGlmIHlv
dSB3YW50IHRvIHVzZSBpdCwgdGhlbiB5b3UgbmVlZCB0byBjYWxsIGxlbmd0aCgpIGJlZm9yZSBn
ZXRCdWZmZXIobWluQ2FwYWNpdHkpLgorICAgKiAgIElmIHRoZSBsZW5ndGgoKSB3YXMgZ3JlYXRl
ciB0aGFuIG1pbkNhcGFjaXR5LCB0aGVuIGFueSBjb250ZW50cyBhZnRlciBtaW5DYXBhY2l0eQor
ICAgKiAgIG1heSBiZSBsb3N0LgorICAgKiAgIFRoZSBidWZmZXIgY29udGVudHMgaXMgbm90IE5V
TC10ZXJtaW5hdGVkIGJ5IGdldEJ1ZmZlcigpLgorICAgKiAgIElmIGxlbmd0aCgpPGdldENhcGFj
aXR5KCkgdGhlbiB5b3UgY2FuIHRlcm1pbmF0ZSBpdCBieSB3cml0aW5nIGEgTlVMCisgICAqICAg
YXQgaW5kZXggbGVuZ3RoKCkuCisgICAqIC0gWW91IG11c3QgY2FsbCByZWxlYXNlQnVmZmVyKG5l
d0xlbmd0aCkgYmVmb3JlIGFuZCBpbiBvcmRlciB0bworICAgKiAgIHJldHVybiB0byBub3JtYWwg
VW5pY29kZVN0cmluZyBvcGVyYXRpb24uCisgICAqCisgICAqIEBwYXJhbSBtaW5DYXBhY2l0eSB0
aGUgbWluaW11bSBudW1iZXIgb2YgVUNoYXJzIHRoYXQgYXJlIHRvIGJlIGF2YWlsYWJsZQorICAg
KiAgICAgICAgaW4gdGhlIGJ1ZmZlciwgc3RhcnRpbmcgYXQgdGhlIHJldHVybmVkIHBvaW50ZXI7
CisgICAqICAgICAgICBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IHN0cmluZyBjYXBhY2l0eSBpZiBt
aW5DYXBhY2l0eT09LTEKKyAgICogQHJldHVybiBhIHdyaXRhYmxlIHBvaW50ZXIgdG8gdGhlIGlu
dGVybmFsIHN0cmluZyBidWZmZXIsCisgICAqICAgICAgICAgb3IgMCBpZiBhbiBlcnJvciBvY2N1
cnMgKG5lc3RlZCBjYWxscywgb3V0IG9mIG1lbW9yeSkKKyAgICoKKyAgICogQHNlZSByZWxlYXNl
QnVmZmVyCisgICAqIEBzZWUgZ2V0VGVybWluYXRlZEJ1ZmZlcigpCisgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKi8KKyAgVUNoYXIgKmdldEJ1ZmZlcihpbnQzMl90IG1pbkNhcGFjaXR5KTsKKwor
ICAvKioKKyAgICogUmVsZWFzZSBhIHJlYWQvd3JpdGUgYnVmZmVyIG9uIGEgVW5pY29kZVN0cmlu
ZyBvYmplY3Qgd2l0aCBhbgorICAgKiAib3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KS4KKyAg
ICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiBhIG1hdGNoZWQgcGFpciB3aXRoIGdl
dEJ1ZmZlcihtaW5DYXBhY2l0eSkuCisgICAqIHJlbGVhc2VCdWZmZXIobmV3TGVuZ3RoKSBtdXN0
IGJlIGNhbGxlZCBpZiBhbmQgb25seSBpZiBhIGdldEJ1ZmZlcihtaW5DYXBhY2l0eSkgaXMgIm9w
ZW4iLgorICAgKgorICAgKiBJdCB3aWxsIHNldCB0aGUgc3RyaW5nIGxlbmd0aCB0byBuZXdMZW5n
dGgsIGF0IG1vc3QgdG8gdGhlIGN1cnJlbnQgY2FwYWNpdHkuCisgICAqIElmIG5ld0xlbmd0aD09
LTEgdGhlbiBpdCB3aWxsIHNldCB0aGUgbGVuZ3RoIGFjY29yZGluZyB0byB0aGUKKyAgICogZmly
c3QgTlVMIGluIHRoZSBidWZmZXIsIG9yIHRvIHRoZSBjYXBhY2l0eSBpZiB0aGVyZSBpcyBubyBO
VUwuCisgICAqCisgICAqIEFmdGVyIGNhbGxpbmcgcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpIHRo
ZSBVbmljb2RlU3RyaW5nIGlzIGJhY2sgdG8gbm9ybWFsIG9wZXJhdGlvbi4KKyAgICoKKyAgICog
QHBhcmFtIG5ld0xlbmd0aCB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmpl
Y3Q7CisgICAqICAgICAgICBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBjYXBhY2l0eSBpZiBuZXdM
ZW5ndGggaXMgZ3JlYXRlciB0aGFuIHRoYXQ7CisgICAqICAgICAgICBpZiBuZXdMZW5ndGg9PS0x
LCBpdCBkZWZhdWx0cyB0byB1X3N0cmxlbihidWZmZXIpIGJ1dCBub3QgbW9yZSB0aGFuCisgICAq
ICAgICAgICB0aGUgY3VycmVudCBjYXBhY2l0eSBvZiB0aGUgc3RyaW5nCisgICAqCisgICAqIEBz
ZWUgZ2V0QnVmZmVyKGludDMyX3QgbWluQ2FwYWNpdHkpCisgICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKi8KKyAgdm9pZCByZWxlYXNlQnVmZmVyKGludDMyX3QgbmV3TGVuZ3RoPS0xKTsKKworICAv
KioKKyAgICogR2V0IGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4K
KyAgICogVGhpcyBjYW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lIG9uIGEgdmFsaWQgVW5pY29kZVN0
cmluZy4KKyAgICoKKyAgICogSXQgcmV0dXJucyAwIGlmIHRoZSBzdHJpbmcgaXMgYm9ndXMsIG9y
CisgICAqIGR1cmluZyBhbiAib3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KS4KKyAgICoKKyAg
ICogSXQgY2FuIGJlIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGRlc2lyZWQuCisgICAqIFRoZSBw
b2ludGVyIHRoYXQgaXQgcmV0dXJucyB3aWxsIHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgVW5pY29k
ZVN0cmluZyBvYmplY3QgaXMgbW9kaWZpZWQsCisgICAqIGF0IHdoaWNoIHRpbWUgdGhlIHBvaW50
ZXIgaXMgc2VtYW50aWNhbGx5IGludmFsaWRhdGVkIGFuZCBtdXN0IG5vdCBiZSB1c2VkIGFueSBt
b3JlLgorICAgKgorICAgKiBUaGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlciBjYW4gYmUgZGV0ZXJt
aW5lZCB3aXRoIGdldENhcGFjaXR5KCkuCisgICAqIFRoZSBwYXJ0IGFmdGVyIGxlbmd0aCgpIG1h
eSBvciBtYXkgbm90IGJlIGluaXRpYWxpemVkIGFuZCB2YWxpZCwKKyAgICogZGVwZW5kaW5nIG9u
IHRoZSBoaXN0b3J5IG9mIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdC4KKyAgICoKKyAgICogVGhl
IGJ1ZmZlciBjb250ZW50cyBpcyAocHJvYmFibHkpIG5vdCBOVUwtdGVybWluYXRlZC4KKyAgICog
WW91IGNhbiBjaGVjayBpZiBpdCBpcyB3aXRoCisgICAqIDxjb2RlPihzLmxlbmd0aCgpPHMuZ2V0
Q2FwYWNpdHkoKSAmJiBidWZmZXJbcy5sZW5ndGgoKV09PTApPC9jb2RlPi4KKyAgICogKFNlZSBn
ZXRUZXJtaW5hdGVkQnVmZmVyKCkuKQorICAgKgorICAgKiBUaGUgYnVmZmVyIG1heSByZXNpZGUg
aW4gcmVhZC1vbmx5IG1lbW9yeS4gSXRzIGNvbnRlbnRzIG11c3Qgbm90CisgICAqIGJlIG1vZGlm
aWVkLgorICAgKgorICAgKiBAcmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVy
bmFsIHN0cmluZyBidWZmZXIsCisgICAqICAgICAgICAgb3IgMCBpZiB0aGUgc3RyaW5nIGlzIGVt
cHR5IG9yIGJvZ3VzCisgICAqCisgICAqIEBzZWUgZ2V0QnVmZmVyKGludDMyX3QgbWluQ2FwYWNp
dHkpCisgICAqIEBzZWUgZ2V0VGVybWluYXRlZEJ1ZmZlcigpCisgICAqIEBzdGFibGUgSUNVIDIu
MAorICAgKi8KKyAgaW5saW5lIGNvbnN0IFVDaGFyICpnZXRCdWZmZXIoKSBjb25zdDsKKworICAv
KioKKyAgICogR2V0IGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlciwK
KyAgICogbWFraW5nIHN1cmUgdGhhdCBpdCBpcyBOVUwtdGVybWluYXRlZC4KKyAgICogVGhpcyBj
YW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lIG9uIGEgdmFsaWQgVW5pY29kZVN0cmluZy4KKyAgICoK
KyAgICogSXQgcmV0dXJucyAwIGlmIHRoZSBzdHJpbmcgaXMgYm9ndXMsIG9yCisgICAqIGR1cmlu
ZyBhbiAib3BlbiIgZ2V0QnVmZmVyKG1pbkNhcGFjaXR5KSwgb3IgaWYgdGhlIGJ1ZmZlciBjYW5u
b3QKKyAgICogYmUgTlVMLXRlcm1pbmF0ZWQgKGJlY2F1c2UgbWVtb3J5IGFsbG9jYXRpb24gZmFp
bGVkKS4KKyAgICoKKyAgICogSXQgY2FuIGJlIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGRlc2ly
ZWQuCisgICAqIFRoZSBwb2ludGVyIHRoYXQgaXQgcmV0dXJucyB3aWxsIHJlbWFpbiB2YWxpZCB1
bnRpbCB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QgaXMgbW9kaWZpZWQsCisgICAqIGF0IHdoaWNo
IHRpbWUgdGhlIHBvaW50ZXIgaXMgc2VtYW50aWNhbGx5IGludmFsaWRhdGVkIGFuZCBtdXN0IG5v
dCBiZSB1c2VkIGFueSBtb3JlLgorICAgKgorICAgKiBUaGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZl
ciBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRoIGdldENhcGFjaXR5KCkuCisgICAqIFRoZSBwYXJ0IGFm
dGVyIGxlbmd0aCgpKzEgbWF5IG9yIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkLAor
ICAgKiBkZXBlbmRpbmcgb24gdGhlIGhpc3Rvcnkgb2YgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0
LgorICAgKgorICAgKiBUaGUgYnVmZmVyIGNvbnRlbnRzIGlzIGd1YXJhbnRlZWQgdG8gYmUgTlVM
LXRlcm1pbmF0ZWQuCisgICAqIGdldFRlcm1pbmF0ZWRCdWZmZXIoKSBtYXkgcmVhbGxvY2F0ZSB0
aGUgYnVmZmVyIGlmIGEgdGVybWluYXRpbmcgTlVMCisgICAqIGlzIHdyaXR0ZW4uCisgICAqIEZv
ciB0aGlzIHJlYXNvbiwgdGhpcyBmdW5jdGlvbiBpcyBub3QgY29uc3QsIHVubGlrZSBnZXRCdWZm
ZXIoKS4KKyAgICogTm90ZSB0aGF0IGEgVW5pY29kZVN0cmluZyBtYXkgYWxzbyBjb250YWluIE5V
TCBjaGFyYWN0ZXJzIGFzIHBhcnQgb2YgaXRzIGNvbnRlbnRzLgorICAgKgorICAgKiBUaGUgYnVm
ZmVyIG1heSByZXNpZGUgaW4gcmVhZC1vbmx5IG1lbW9yeS4gSXRzIGNvbnRlbnRzIG11c3Qgbm90
CisgICAqIGJlIG1vZGlmaWVkLgorICAgKgorICAgKiBAcmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50
ZXIgdG8gdGhlIGludGVybmFsIHN0cmluZyBidWZmZXIsCisgICAqICAgICAgICAgb3IgMCBpZiB0
aGUgc3RyaW5nIGlzIGVtcHR5IG9yIGJvZ3VzCisgICAqCisgICAqIEBzZWUgZ2V0QnVmZmVyKGlu
dDMyX3QgbWluQ2FwYWNpdHkpCisgICAqIEBzZWUgZ2V0QnVmZmVyKCkKKyAgICogQHN0YWJsZSBJ
Q1UgMi4yCisgICAqLworICBpbmxpbmUgY29uc3QgVUNoYXIgKmdldFRlcm1pbmF0ZWRCdWZmZXIo
KTsKKworICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgLy8g
Q29uc3RydWN0b3JzCisgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorCisgIC8qKiBDb25zdHJ1Y3QgYW4gZW1wdHkgVW5pY29kZVN0cmluZy4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKCk7CisKKyAgLyoqCisgICAqIENvbnN0
cnVjdCBhIFVuaWNvZGVTdHJpbmcgd2l0aCBjYXBhY2l0eSB0byBob2xkIDxUVD5jYXBhY2l0eTwv
VFQ+IFVDaGFycworICAgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIG51bWJlciBvZiBVQ2hhcnMgdGhp
cyBVbmljb2RlU3RyaW5nIHNob3VsZCBob2xkCisgICAqIGJlZm9yZSBhIHJlc2l6ZSBpcyBuZWNl
c3Nhcnk7IGlmIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwIGFuZCBjb3VudAorICAgKiBjb2RlIHBv
aW50cyBjIHRha2UgdXAgbW9yZSBzcGFjZSB0aGFuIGNhcGFjaXR5LCB0aGVuIGNhcGFjaXR5IGlz
IGFkanVzdGVkCisgICAqIGFjY29yZGluZ2x5LgorICAgKiBAcGFyYW0gYyBpcyB1c2VkIHRvIGlu
aXRpYWxseSBmaWxsIHRoZSBzdHJpbmcKKyAgICogQHBhcmFtIGNvdW50IHNwZWNpZmllcyBob3cg
bWFueSBjb2RlIHBvaW50cyBjIGFyZSB0byBiZSB3cml0dGVuIGluIHRoZQorICAgKiAgICAgICAg
ICAgICAgc3RyaW5nCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmlu
ZyhpbnQzMl90IGNhcGFjaXR5LCBVQ2hhcjMyIGMsIGludDMyX3QgY291bnQpOworCisgIC8qKgor
ICAgKiBTaW5nbGUgVUNoYXIgKGNvZGUgdW5pdCkgY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSBj
aCB0aGUgY2hhcmFjdGVyIHRvIHBsYWNlIGluIHRoZSBVbmljb2RlU3RyaW5nCisgICAqIEBzdGFi
bGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZyhVQ2hhciBjaCk7CisKKyAgLyoqCisg
ICAqIFNpbmdsZSBVQ2hhcjMyIChjb2RlIHBvaW50KSBjb25zdHJ1Y3Rvci4KKyAgICogQHBhcmFt
IGNoIHRoZSBjaGFyYWN0ZXIgdG8gcGxhY2UgaW4gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKFVDaGFyMzIgY2gpOworCisgIC8q
KgorICAgKiBVQ2hhciogY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSB0ZXh0IFRoZSBjaGFyYWN0
ZXJzIHRvIHBsYWNlIGluIHRoZSBVbmljb2RlU3RyaW5nLiAgPFRUPnRleHQ8L1RUPgorICAgKiBt
dXN0IGJlIE5VTEwgKFUrMDAwMCkgdGVybWluYXRlZC4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisg
ICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IFVDaGFyICp0ZXh0KTsKKworICAvKioKKyAgICog
VUNoYXIqIGNvbnN0cnVjdG9yLgorICAgKiBAcGFyYW0gdGV4dCBUaGUgY2hhcmFjdGVycyB0byBw
bGFjZSBpbiB0aGUgVW5pY29kZVN0cmluZy4KKyAgICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51
bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gPFRUPnRleHQ8L1RUPgorICAgKiB0byBjb3B5
LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3QgVUNo
YXIgKnRleHQsCisgICAgICAgIGludDMyX3QgdGV4dExlbmd0aCk7CisKKyAgLyoqCisgICAqIFJl
YWRvbmx5LWFsaWFzaW5nIFVDaGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogVGhlIHRleHQgd2lsbCBi
ZSB1c2VkIGZvciB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QsIGJ1dAorICAgKiBpdCB3aWxsIG5v
dCBiZSByZWxlYXNlZCB3aGVuIHRoZSBVbmljb2RlU3RyaW5nIGlzIGRlc3Ryb3llZC4KKyAgICog
VGhpcyBoYXMgY29weS1vbi13cml0ZSBzZW1hbnRpY3M6CisgICAqIFdoZW4gdGhlIHN0cmluZyBp
cyBtb2RpZmllZCwgdGhlbiB0aGUgYnVmZmVyIGlzIGZpcnN0IGNvcGllZCBpbnRvCisgICAqIG5l
d2x5IGFsbG9jYXRlZCBtZW1vcnkuCisgICAqIFRoZSBhbGlhc2VkIGJ1ZmZlciBpcyBuZXZlciBt
b2RpZmllZC4KKyAgICogSW4gYW4gYXNzaWdubWVudCB0byBhbm90aGVyIFVuaWNvZGVTdHJpbmcs
IHRoZSB0ZXh0IHdpbGwgYmUgYWxpYXNlZCBhZ2FpbiwKKyAgICogc28gdGhhdCBib3RoIHN0cmlu
Z3MgdGhlbiBhbGlhcyB0aGUgc2FtZSByZWFkb25seS10ZXh0LgorICAgKgorICAgKiBAcGFyYW0g
aXNUZXJtaW5hdGVkIHNwZWNpZmllcyBpZiA8Y29kZT50ZXh0PC9jb2RlPiBpcyA8Y29kZT5OVUw8
L2NvZGU+LXRlcm1pbmF0ZWQuCisgICAqICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJl
IHRydWUgaWYgPGNvZGU+dGV4dExlbmd0aD09LTE8L2NvZGU+LgorICAgKiBAcGFyYW0gdGV4dCBU
aGUgY2hhcmFjdGVycyB0byBhbGlhcyBmb3IgdGhlIFVuaWNvZGVTdHJpbmcuCisgICAqIEBwYXJh
bSB0ZXh0TGVuZ3RoIFRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnRl
eHQ8L2NvZGU+IHRvIGFsaWFzLgorICAgKiAgICAgICAgICAgICAgICAgICBJZiAtMSwgdGhlbiB0
aGlzIGNvbnN0cnVjdG9yIHdpbGwgZGV0ZXJtaW5lIHRoZSBsZW5ndGgKKyAgICogICAgICAgICAg
ICAgICAgICAgYnkgY2FsbGluZyA8Y29kZT51X3N0cmxlbigpPC9jb2RlPi4KKyAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKFVCb29sIGlzVGVybWluYXRlZCwKKyAg
ICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqdGV4dCwKKyAgICAgICAgICAgICAgICBpbnQzMl90
IHRleHRMZW5ndGgpOworCisgIC8qKgorICAgKiBXcml0YWJsZS1hbGlhc2luZyBVQ2hhciogY29u
c3RydWN0b3IuCisgICAqIFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJp
bmcgb2JqZWN0LCBidXQKKyAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5p
Y29kZVN0cmluZyBpcyBkZXN0cm95ZWQuCisgICAqIFRoaXMgaGFzIHdyaXRlLXRocm91Z2ggc2Vt
YW50aWNzOgorICAgKiBGb3IgYXMgbG9uZyBhcyB0aGUgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlciBp
cyBzdWZmaWNpZW50LCB3cml0ZSBvcGVyYXRpb25zCisgICAqIHdpbGwgZGlyZWN0bHkgYWZmZWN0
IHRoZSBidWZmZXIuIFdoZW4gbW9yZSBjYXBhY2l0eSBpcyBuZWNlc3NhcnksIHRoZW4KKyAgICog
YSBuZXcgYnVmZmVyIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCB0aGUgY29udGVudHMgY29waWVkIGFz
IHdpdGggcmVndWxhcmx5CisgICAqIGNvbnN0cnVjdGVkIHN0cmluZ3MuCisgICAqIEluIGFuIGFz
c2lnbm1lbnQgdG8gYW5vdGhlciBVbmljb2RlU3RyaW5nLCB0aGUgYnVmZmVyIHdpbGwgYmUgY29w
aWVkLgorICAgKiBUaGUgZXh0cmFjdChVQ2hhciAqZHN0KSBmdW5jdGlvbiBkZXRlY3RzIHdoZXRo
ZXIgdGhlIGRzdCBwb2ludGVyIGlzIHRoZSBzYW1lCisgICAqIGFzIHRoZSBzdHJpbmcgYnVmZmVy
IGl0c2VsZiBhbmQgd2lsbCBpbiB0aGlzIGNhc2Ugbm90IGNvcHkgdGhlIGNvbnRlbnRzLgorICAg
KgorICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBjaGFyYWN0ZXJzIHRvIGFsaWFzIGZvciB0aGUgVW5p
Y29kZVN0cmluZy4KKyAgICogQHBhcmFtIGJ1ZmZMZW5ndGggVGhlIG51bWJlciBvZiBVbmljb2Rl
IGNoYXJhY3RlcnMgaW4gPGNvZGU+YnVmZmVyPC9jb2RlPiB0byBhbGlhcy4KKyAgICogQHBhcmFt
IGJ1ZmZDYXBhY2l0eSBUaGUgc2l6ZSBvZiA8Y29kZT5idWZmZXI8L2NvZGU+IGluIFVDaGFycy4K
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKFVDaGFyICpidWZm
ZXIsIGludDMyX3QgYnVmZkxlbmd0aCwgaW50MzJfdCBidWZmQ2FwYWNpdHkpOworCisjaWYgVV9D
SEFSU0VUX0lTX1VURjggfHwgIVVDT05GSUdfTk9fQ09OVkVSU0lPTgorCisgIC8qKgorICAgKiBj
aGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogQHBhcmFtIGNvZGVwYWdlRGF0YSBhbiBhcnJheSBvZiBi
eXRlcywgbnVsbC10ZXJtaW5hdGVkLAorICAgKiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBw
bGF0Zm9ybSdzIGRlZmF1bHQgY29kZXBhZ2UuCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8K
KyAgVW5pY29kZVN0cmluZyhjb25zdCBjaGFyICpjb2RlcGFnZURhdGEpOworCisgIC8qKgorICAg
KiBjaGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogQHBhcmFtIGNvZGVwYWdlRGF0YSBhbiBhcnJheSBv
ZiBieXRlcyBpbiB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNvZGVwYWdlLgorICAgKiBAcGFyYW0g
ZGF0YUxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIDxUVD5jb2RlcGFnZURhdGE8L1RUPi4K
KyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIg
KmNvZGVwYWdlRGF0YSwgaW50MzJfdCBkYXRhTGVuZ3RoKTsKKworI2VuZGlmCisKKyNpZiAhVUNP
TkZJR19OT19DT05WRVJTSU9OCisKKyAgLyoqCisgICAqIGNoYXIqIGNvbnN0cnVjdG9yLgorICAg
KiBAcGFyYW0gY29kZXBhZ2VEYXRhIGFuIGFycmF5IG9mIGJ5dGVzLCBudWxsLXRlcm1pbmF0ZWQK
KyAgICogQHBhcmFtIGNvZGVwYWdlIHRoZSBlbmNvZGluZyBvZiA8VFQ+Y29kZXBhZ2VEYXRhPC9U
VD4uICBUaGUgc3BlY2lhbAorICAgKiB2YWx1ZSAwIGZvciA8VFQ+Y29kZXBhZ2U8L1RUPiBpbmRp
Y2F0ZXMgdGhhdCB0aGUgdGV4dCBpcyBpbiB0aGUKKyAgICogcGxhdGZvcm0ncyBkZWZhdWx0IGNv
ZGVwYWdlLgorICAgKgorICAgKiBJZiA8Y29kZT5jb2RlcGFnZTwvY29kZT4gaXMgYW4gZW1wdHkg
c3RyaW5nICg8Y29kZT4iIjwvY29kZT4pLAorICAgKiB0aGVuIGEgc2ltcGxlIGNvbnZlcnNpb24g
aXMgcGVyZm9ybWVkIG9uIHRoZSBjb2RlcGFnZS1pbnZhcmlhbnQKKyAgICogc3Vic2V0ICgiaW52
YXJpYW50IGNoYXJhY3RlcnMiKSBvZiB0aGUgcGxhdGZvcm0gZW5jb2RpbmcuIFNlZSB1dHlwZXMu
aC4KKyAgICogUmVjb21tZW5kYXRpb246IEZvciBpbnZhcmlhbnQtY2hhcmFjdGVyIHN0cmluZ3Mg
dXNlIHRoZSBjb25zdHJ1Y3RvcgorICAgKiBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKnNyYywg
aW50MzJfdCBsZW5ndGgsIGVudW0gRUludmFyaWFudCBpbnYpCisgICAqIGJlY2F1c2UgaXQgYXZv
aWRzIG9iamVjdCBjb2RlIGRlcGVuZGVuY2llcyBvZiBVbmljb2RlU3RyaW5nIG9uCisgICAqIHRo
ZSBjb252ZXJzaW9uIGNvZGUuCisgICAqCisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAg
VW5pY29kZVN0cmluZyhjb25zdCBjaGFyICpjb2RlcGFnZURhdGEsIGNvbnN0IGNoYXIgKmNvZGVw
YWdlKTsKKworICAvKioKKyAgICogY2hhciogY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSBjb2Rl
cGFnZURhdGEgYW4gYXJyYXkgb2YgYnl0ZXMuCisgICAqIEBwYXJhbSBkYXRhTGVuZ3RoIFRoZSBu
dW1iZXIgb2YgYnl0ZXMgaW4gPFRUPmNvZGVwYWdlRGF0YTwvVFQ+LgorICAgKiBAcGFyYW0gY29k
ZXBhZ2UgdGhlIGVuY29kaW5nIG9mIDxUVD5jb2RlcGFnZURhdGE8L1RUPi4gIFRoZSBzcGVjaWFs
CisgICAqIHZhbHVlIDAgZm9yIDxUVD5jb2RlcGFnZTwvVFQ+IGluZGljYXRlcyB0aGF0IHRoZSB0
ZXh0IGlzIGluIHRoZQorICAgKiBwbGF0Zm9ybSdzIGRlZmF1bHQgY29kZXBhZ2UuCisgICAqIElm
IDxjb2RlPmNvZGVwYWdlPC9jb2RlPiBpcyBhbiBlbXB0eSBzdHJpbmcgKDxjb2RlPiIiPC9jb2Rl
PiksCisgICAqIHRoZW4gYSBzaW1wbGUgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQgb24gdGhlIGNv
ZGVwYWdlLWludmFyaWFudAorICAgKiBzdWJzZXQgKCJpbnZhcmlhbnQgY2hhcmFjdGVycyIpIG9m
IHRoZSBwbGF0Zm9ybSBlbmNvZGluZy4gU2VlIHV0eXBlcy5oLgorICAgKiBSZWNvbW1lbmRhdGlv
bjogRm9yIGludmFyaWFudC1jaGFyYWN0ZXIgc3RyaW5ncyB1c2UgdGhlIGNvbnN0cnVjdG9yCisg
ICAqIFVuaWNvZGVTdHJpbmcoY29uc3QgY2hhciAqc3JjLCBpbnQzMl90IGxlbmd0aCwgZW51bSBF
SW52YXJpYW50IGludikKKyAgICogYmVjYXVzZSBpdCBhdm9pZHMgb2JqZWN0IGNvZGUgZGVwZW5k
ZW5jaWVzIG9mIFVuaWNvZGVTdHJpbmcgb24KKyAgICogdGhlIGNvbnZlcnNpb24gY29kZS4KKyAg
ICoKKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNo
YXIgKmNvZGVwYWdlRGF0YSwgaW50MzJfdCBkYXRhTGVuZ3RoLCBjb25zdCBjaGFyICpjb2RlcGFn
ZSk7CisKKyAgLyoqCisgICAqIGNoYXIgKiAvIFVDb252ZXJ0ZXIgY29uc3RydWN0b3IuCisgICAq
IFRoaXMgY29uc3RydWN0b3IgdXNlcyBhbiBleGlzdGluZyBVQ29udmVydGVyIG9iamVjdCB0bwor
ICAgKiBjb252ZXJ0IHRoZSBjb2RlcGFnZSBzdHJpbmcgdG8gVW5pY29kZSBhbmQgY29uc3RydWN0
IGEgVW5pY29kZVN0cmluZworICAgKiBmcm9tIHRoYXQuCisgICAqCisgICAqIFRoZSBjb252ZXJ0
ZXIgaXMgcmVzZXQgYXQgZmlyc3QuCisgICAqIElmIHRoZSBlcnJvciBjb2RlIGluZGljYXRlcyBh
IGZhaWx1cmUgYmVmb3JlIHRoaXMgY29uc3RydWN0b3IgaXMgY2FsbGVkLAorICAgKiBvciBpZiBh
biBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbnZlcnNpb24gb3IgY29uc3RydWN0aW9uLAorICAgKiB0
aGVuIHRoZSBzdHJpbmcgd2lsbCBiZSBib2d1cy4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiBh
dm9pZHMgdGhlIG92ZXJoZWFkIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBjb252ZXJ0ZXIgaWYK
KyAgICogbXVsdGlwbGUgc3RyaW5ncyBhcmUgY29uc3RydWN0ZWQuCisgICAqCisgICAqIEBwYXJh
bSBzcmMgaW5wdXQgY29kZXBhZ2Ugc3RyaW5nCisgICAqIEBwYXJhbSBzcmNMZW5ndGggbGVuZ3Ro
IG9mIHRoZSBpbnB1dCBzdHJpbmcsIGNhbiBiZSAtMSBmb3IgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
cworICAgKiBAcGFyYW0gY252IGNvbnZlcnRlciBvYmplY3QgKHVjbnZfcmVzZXRUb1VuaWNvZGUo
KSB3aWxsIGJlIGNhbGxlZCksCisgICAqICAgICAgICBjYW4gYmUgTlVMTCBmb3IgdGhlIGRlZmF1
bHQgY29udmVydGVyCisgICAqIEBwYXJhbSBlcnJvckNvZGUgbm9ybWFsIElDVSBlcnJvciBjb2Rl
CisgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKi8KKyAgVW5pY29kZVN0cmluZygKKyAgICAgICAg
Y29uc3QgY2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgVUNvbnZlcnRlciAq
Y252LAorICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNvZGUpOworCisjZW5kaWYKKworICAvKioK
KyAgICogQ29uc3RydWN0cyBhIFVuaWNvZGUgc3RyaW5nIGZyb20gYW4gaW52YXJpYW50LWNoYXJh
Y3RlciBjaGFyICogc3RyaW5nLgorICAgKiBBYm91dCBpbnZhcmlhbnQgY2hhcmFjdGVycyBzZWUg
dXR5cGVzLmguCisgICAqIFRoaXMgY29uc3RydWN0b3IgaGFzIG5vIHJ1bnRpbWUgZGVwZW5kZW5j
eSBvbiBjb252ZXJzaW9uIGNvZGUgYW5kIGlzCisgICAqIHRoZXJlZm9yZSByZWNvbW1lbmRlZCBv
dmVyIG9uZXMgdGFraW5nIGEgY2hhcnNldCBuYW1lIHN0cmluZworICAgKiAod2hlcmUgdGhlIGVt
cHR5IHN0cmluZyAiIiBpbmRpY2F0ZXMgaW52YXJpYW50LWNoYXJhY3RlciBjb252ZXJzaW9uKS4K
KyAgICoKKyAgICogVXNlIHRoZSBtYWNybyBVU19JTlYgYXMgdGhlIHRoaXJkLCBzaWduYXR1cmUt
ZGlzdGluZ3Vpc2hpbmcgcGFyYW1ldGVyLgorICAgKgorICAgKiBGb3IgZXhhbXBsZToKKyAgICog
XGNvZGUKKyAgICogdm9pZCBmbihjb25zdCBjaGFyICpzKSB7CisgICAqICAgVW5pY29kZVN0cmlu
ZyB1c3RyKHMsIC0xLCBVU19JTlYpOworICAgKiAgIC8vIHVzZSB1c3RyIC4uLgorICAgKiB9Cisg
ICAqIFxlbmRjb2RlCisgICAqCisgICAqIEBwYXJhbSBzcmMgU3RyaW5nIHVzaW5nIG9ubHkgaW52
YXJpYW50IGNoYXJhY3RlcnMuCisgICAqIEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIHNyYywgb3Ig
LTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgICAqIEBwYXJhbSBpbnYgU2lnbmF0dXJlLWRpc3Rpbmd1
aXNoaW5nIHBhcmFtYXRlciwgdXNlIFVTX0lOVi4KKyAgICoKKyAgICogQHNlZSBVU19JTlYKKyAg
ICogQHN0YWJsZSBJQ1UgMy4yCisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIgKnNy
YywgaW50MzJfdCBsZW5ndGgsIGVudW0gRUludmFyaWFudCBpbnYpOworCisKKyAgLyoqCisgICAq
IENvcHkgY29uc3RydWN0b3IuCisgICAqIEBwYXJhbSB0aGF0IFRoZSBVbmljb2RlU3RyaW5nIG9i
amVjdCB0byBjb3B5LgorICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJp
bmcoY29uc3QgVW5pY29kZVN0cmluZyYgdGhhdCk7CisKKyAgLyoqCisgICAqICdTdWJzdHJpbmcn
IGNvbnN0cnVjdG9yIGZyb20gdGFpbCBvZiBzb3VyY2Ugc3RyaW5nLgorICAgKiBAcGFyYW0gc3Jj
IFRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byBjb3B5LgorICAgKiBAcGFyYW0gc3JjU3RhcnQg
VGhlIG9mZnNldCBpbnRvIDx0dD5zcmM8L3R0PiBhdCB3aGljaCB0byBzdGFydCBjb3B5aW5nLgor
ICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3QgVW5pY29k
ZVN0cmluZyYgc3JjLCBpbnQzMl90IHNyY1N0YXJ0KTsKKworICAvKioKKyAgICogJ1N1YnN0cmlu
ZycgY29uc3RydWN0b3IgZnJvbSBzdWJyYW5nZSBvZiBzb3VyY2Ugc3RyaW5nLgorICAgKiBAcGFy
YW0gc3JjIFRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byBjb3B5LgorICAgKiBAcGFyYW0gc3Jj
U3RhcnQgVGhlIG9mZnNldCBpbnRvIDx0dD5zcmM8L3R0PiBhdCB3aGljaCB0byBzdGFydCBjb3B5
aW5nLgorICAgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBmcm9t
IDx0dD5zcmM8L3R0PiB0byBjb3B5LgorICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICovCisgIFVu
aWNvZGVTdHJpbmcoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjLCBpbnQzMl90IHNyY1N0YXJ0LCBp
bnQzMl90IHNyY0xlbmd0aCk7CisKKyAgLyoqCisgICAqIENsb25lIHRoaXMgb2JqZWN0LCBhbiBp
bnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIFJlcGxhY2VhYmxlLgorICAgKiBDbG9uZXMgY2FuIGJl
IHVzZWQgY29uY3VycmVudGx5IGluIG11bHRpcGxlIHRocmVhZHMuCisgICAqIElmIGEgc3ViY2xh
c3MgZG9lcyBub3QgaW1wbGVtZW50IGNsb25lKCksIG9yIGlmIGFuIGVycm9yIG9jY3VycywKKyAg
ICogdGhlbiBOVUxMIGlzIHJldHVybmVkLgorICAgKiBUaGUgY2xvbmUgZnVuY3Rpb25zIGluIGFs
bCBzdWJjbGFzc2VzIHJldHVybiBhIHBvaW50ZXIgdG8gYSBSZXBsYWNlYWJsZQorICAgKiBiZWNh
dXNlIHNvbWUgY29tcGlsZXJzIGRvIG5vdCBzdXBwb3J0IGNvdmFyaWFudCAoc2FtZS1hcy10aGlz
KQorICAgKiByZXR1cm4gdHlwZXM7IGNhc3QgdG8gdGhlIGFwcHJvcHJpYXRlIHN1YmNsYXNzIGlm
IG5lY2Vzc2FyeS4KKyAgICogVGhlIGNhbGxlciBtdXN0IGRlbGV0ZSB0aGUgY2xvbmUuCisgICAq
CisgICAqIEByZXR1cm4gYSBjbG9uZSBvZiB0aGlzIG9iamVjdAorICAgKgorICAgKiBAc2VlIFJl
cGxhY2VhYmxlOjpjbG9uZQorICAgKiBAc2VlIGdldER5bmFtaWNDbGFzc0lECisgICAqIEBzdGFi
bGUgSUNVIDIuNgorICAgKi8KKyAgdmlydHVhbCBSZXBsYWNlYWJsZSAqY2xvbmUoKSBjb25zdDsK
KworICAvKiogRGVzdHJ1Y3Rvci4KKyAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqLworICB2aXJ0
dWFsIH5Vbmljb2RlU3RyaW5nKCk7CisKKyAgLyoqCisgICAqIENyZWF0ZSBhIFVuaWNvZGVTdHJp
bmcgZnJvbSBhIFVURi04IHN0cmluZy4KKyAgICogSWxsZWdhbCBpbnB1dCBpcyByZXBsYWNlZCB3
aXRoIFUrRkZGRC4gT3RoZXJ3aXNlLCBlcnJvcnMgcmVzdWx0IGluIGEgYm9ndXMgc3RyaW5nLgor
ICAgKiBDYWxscyB1X3N0ckZyb21VVEY4V2l0aFN1YigpLgorICAgKgorICAgKiBAcGFyYW0gdXRm
OCBVVEYtOCBpbnB1dCBzdHJpbmcuCisgICAqICAgICAgICAgICAgIE5vdGUgdGhhdCBhIFN0cmlu
Z1BpZWNlIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnN0cnVjdGVkCisgICAqICAgICAgICAgICAgIGZy
b20gYSBzdGQ6OnN0cmluZyBvciBhIE5VTC10ZXJtaW5hdGVkIGNvbnN0IGNoYXIgKiBzdHJpbmcu
CisgICAqIEByZXR1cm4gQSBVbmljb2RlU3RyaW5nIHdpdGggZXF1aXZhbGVudCBVVEYtMTYgY29u
dGVudHMuCisgICAqIEBzZWUgdG9VVEY4CisgICAqIEBzZWUgdG9VVEY4U3RyaW5nCisgICAqIEBz
dGFibGUgSUNVIDQuMgorICAgKi8KKyAgc3RhdGljIFVuaWNvZGVTdHJpbmcgZnJvbVVURjgoY29u
c3QgU3RyaW5nUGllY2UgJnV0ZjgpOworCisgIC8qKgorICAgKiBDcmVhdGUgYSBVbmljb2RlU3Ry
aW5nIGZyb20gYSBVVEYtMzIgc3RyaW5nLgorICAgKiBJbGxlZ2FsIGlucHV0IGlzIHJlcGxhY2Vk
IHdpdGggVStGRkZELiBPdGhlcndpc2UsIGVycm9ycyByZXN1bHQgaW4gYSBib2d1cyBzdHJpbmcu
CisgICAqIENhbGxzIHVfc3RyRnJvbVVURjMyV2l0aFN1YigpLgorICAgKgorICAgKiBAcGFyYW0g
dXRmMzIgVVRGLTMyIGlucHV0IHN0cmluZy4gTXVzdCBub3QgYmUgTlVMTC4KKyAgICogQHBhcmFt
IGxlbmd0aCBMZW5ndGggb2YgdGhlIGlucHV0IHN0cmluZywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0
ZWQuCisgICAqIEByZXR1cm4gQSBVbmljb2RlU3RyaW5nIHdpdGggZXF1aXZhbGVudCBVVEYtMTYg
Y29udGVudHMuCisgICAqIEBzZWUgdG9VVEYzMgorICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICov
CisgIHN0YXRpYyBVbmljb2RlU3RyaW5nIGZyb21VVEYzMihjb25zdCBVQ2hhcjMyICp1dGYzMiwg
aW50MzJfdCBsZW5ndGgpOworCisgIC8qIE1pc2NlbGxhbmVvdXMgb3BlcmF0aW9ucyAqLworCisg
IC8qKgorICAgKiBVbmVzY2FwZSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCByZXR1cm4gYSBz
dHJpbmcgY29udGFpbmluZworICAgKiB0aGUgcmVzdWx0LiAgVGhlIGZvbGxvd2luZyBlc2NhcGUg
c2VxdWVuY2VzIGFyZSByZWNvZ25pemVkOgorICAgKgorICAgKiBcXHVoaGhoICAgICAgIDQgaGV4
IGRpZ2l0czsgaCBpbiBbMC05QS1GYS1mXQorICAgKiBcXFVoaGhoaGhoaCAgIDggaGV4IGRpZ2l0
cworICAgKiBcXHhoaCAgICAgICAgIDEtMiBoZXggZGlnaXRzCisgICAqIFxcb29vICAgICAgICAg
MS0zIG9jdGFsIGRpZ2l0czsgbyBpbiBbMC03XQorICAgKiBcXGNYICAgICAgICAgIGNvbnRyb2wt
WDsgWCBpcyBtYXNrZWQgd2l0aCAweDFGCisgICAqCisgICAqIGFzIHdlbGwgYXMgdGhlIHN0YW5k
YXJkIEFOU0kgQyBlc2NhcGVzOgorICAgKgorICAgKiBcXGEgPT4gVSswMDA3LCBcXGIgPT4gVSsw
MDA4LCBcXHQgPT4gVSswMDA5LCBcXG4gPT4gVSswMDBBLAorICAgKiBcXHYgPT4gVSswMDBCLCBc
XGYgPT4gVSswMDBDLCBcXHIgPT4gVSswMDBELCBcXGUgPT4gVSswMDFCLAorICAgKiBcXCZxdW90
OyA9PiBVKzAwMjIsIFxcJyA9PiBVKzAwMjcsIFxcPyA9PiBVKzAwM0YsIFxcXFwgPT4gVSswMDVD
CisgICAqCisgICAqIEFueXRoaW5nIGVsc2UgZm9sbG93aW5nIGEgYmFja3NsYXNoIGlzIGdlbmVy
aWNhbGx5IGVzY2FwZWQuICBGb3IKKyAgICogZXhhbXBsZSwgIlthXFwtel0iIHJldHVybnMgIlth
LXpdIi4KKyAgICoKKyAgICogSWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIGlsbC1mb3JtZWQsIHRo
aXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkKKyAgICogc3RyaW5nLiAgQW4gZXhhbXBsZSBvZiBh
biBpbGwtZm9ybWVkIHNlcXVlbmNlIGlzICJcXHUiIGZvbGxvd2VkIGJ5CisgICAqIGZld2VyIHRo
YW4gNCBoZXggZGlnaXRzLgorICAgKgorICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8g
dV91bmVzY2FwZSgpIGJ1dCBub3QgaWRlbnRpY2FsIHRvIGl0LgorICAgKiBUaGUgbGF0dGVyIHRh
a2VzIGEgc291cmNlIGNoYXIqLCBzbyBpdCBkb2VzIGVzY2FwZSByZWNvZ25pdGlvbgorICAgKiBh
bmQgYWxzbyBpbnZhcmlhbnQgY29udmVyc2lvbi4KKyAgICoKKyAgICogQHJldHVybiBhIHN0cmlu
ZyB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIGludGVycHJldGVkLCBvciBhbgorICAgKiBlbXB0eSBz
dHJpbmcgb24gZXJyb3IuCisgICAqIEBzZWUgVW5pY29kZVN0cmluZyN1bmVzY2FwZUF0KCkKKyAg
ICogQHNlZSB1X3VuZXNjYXBlKCkKKyAgICogQHNlZSB1X3VuZXNjYXBlQXQoKQorICAgKiBAc3Rh
YmxlIElDVSAyLjAKKyAgICovCisgIFVuaWNvZGVTdHJpbmcgdW5lc2NhcGUoKSBjb25zdDsKKwor
ICAvKioKKyAgICogVW5lc2NhcGUgYSBzaW5nbGUgZXNjYXBlIHNlcXVlbmNlIGFuZCByZXR1cm4g
dGhlIHJlcHJlc2VudGVkCisgICAqIGNoYXJhY3Rlci4gIFNlZSB1bmVzY2FwZSgpIGZvciBhIGxp
c3Rpbmcgb2YgdGhlIHJlY29nbml6ZWQgZXNjYXBlCisgICAqIHNlcXVlbmNlcy4gIFRoZSBjaGFy
YWN0ZXIgYXQgb2Zmc2V0LTEgaXMgYXNzdW1lZCAod2l0aG91dAorICAgKiBjaGVja2luZykgdG8g
YmUgYSBiYWNrc2xhc2guICBJZiB0aGUgZXNjYXBlIHNlcXVlbmNlIGlzCisgICAqIGlsbC1mb3Jt
ZWQsIG9yIHRoZSBvZmZzZXQgaXMgb3V0IG9mIHJhbmdlLCAoVUNoYXIzMikweEZGRkZGRkZGIGlz
CisgICAqIHJldHVybmVkLgorICAgKgorICAgKiBAcGFyYW0gb2Zmc2V0IGFuIGlucHV0IG91dHB1
dCBwYXJhbWV0ZXIuICBPbiBpbnB1dCwgaXQgaXMgdGhlCisgICAqIG9mZnNldCBpbnRvIHRoaXMg
c3RyaW5nIHdoZXJlIHRoZSBlc2NhcGUgc2VxdWVuY2UgaXMgbG9jYXRlZCwKKyAgICogYWZ0ZXIg
dGhlIGluaXRpYWwgYmFja3NsYXNoLiAgT24gb3V0cHV0LCBpdCBpcyBhZHZhbmNlZCBhZnRlciB0
aGUKKyAgICogbGFzdCBjaGFyYWN0ZXIgcGFyc2VkLiAgT24gZXJyb3IsIGl0IGlzIG5vdCBhZHZh
bmNlZCBhdCBhbGwuCisgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciByZXByZXNlbnRlZCBieSB0
aGUgZXNjYXBlIHNlcXVlbmNlIGF0CisgICAqIG9mZnNldCwgb3IgKFVDaGFyMzIpMHhGRkZGRkZG
RiBvbiBlcnJvci4KKyAgICogQHNlZSBVbmljb2RlU3RyaW5nI3VuZXNjYXBlKCkKKyAgICogQHNl
ZSB1X3VuZXNjYXBlKCkKKyAgICogQHNlZSB1X3VuZXNjYXBlQXQoKQorICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICovCisgIFVDaGFyMzIgdW5lc2NhcGVBdChpbnQzMl90ICZvZmZzZXQpIGNvbnN0
OworCisgIC8qKgorICAgKiBJQ1UgInBvb3IgbWFuJ3MgUlRUSSIsIHJldHVybnMgYSBVQ2xhc3NJ
RCBmb3IgdGhpcyBjbGFzcy4KKyAgICoKKyAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAqLworICBz
dGF0aWMgVUNsYXNzSUQgVV9FWFBPUlQyIGdldFN0YXRpY0NsYXNzSUQoKTsKKworICAvKioKKyAg
ICogSUNVICJwb29yIG1hbidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoZSBhY3R1
YWwgY2xhc3MuCisgICAqCisgICAqIEBzdGFibGUgSUNVIDIuMgorICAgKi8KKyAgdmlydHVhbCBV
Q2xhc3NJRCBnZXREeW5hbWljQ2xhc3NJRCgpIGNvbnN0OworCisgIC8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorICAvLyBJbXBsZW1lbnRhdGlvbiBtZXRob2RzCisg
IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwcm90ZWN0ZWQ6
CisgIC8qKgorICAgKiBJbXBsZW1lbnQgUmVwbGFjZWFibGU6OmdldExlbmd0aCgpIChzZWUgaml0
dGVyYnVnIDEwMjcpLgorICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICovCisgIHZpcnR1YWwgaW50
MzJfdCBnZXRMZW5ndGgoKSBjb25zdDsKKworICAvKioKKyAgICogVGhlIGNoYW5nZSBpbiBSZXBs
YWNlYWJsZSB0byB1c2UgdmlydHVhbCBnZXRDaGFyQXQoKSBhbGxvd3MKKyAgICogVW5pY29kZVN0
cmluZzo6Y2hhckF0KCkgdG8gYmUgaW5saW5lIGFnYWluIChzZWUgaml0dGVyYnVnIDcwOSkuCisg
ICAqIEBzdGFibGUgSUNVIDIuNAorICAgKi8KKyAgdmlydHVhbCBVQ2hhciBnZXRDaGFyQXQoaW50
MzJfdCBvZmZzZXQpIGNvbnN0OworCisgIC8qKgorICAgKiBUaGUgY2hhbmdlIGluIFJlcGxhY2Vh
YmxlIHRvIHVzZSB2aXJ0dWFsIGdldENoYXIzMkF0KCkgYWxsb3dzCisgICAqIFVuaWNvZGVTdHJp
bmc6OmNoYXIzMkF0KCkgdG8gYmUgaW5saW5lIGFnYWluIChzZWUgaml0dGVyYnVnIDcwOSkuCisg
ICAqIEBzdGFibGUgSUNVIDIuNAorICAgKi8KKyAgdmlydHVhbCBVQ2hhcjMyIGdldENoYXIzMkF0
KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgLy8gRm9yIGNoYXIqIGNvbnN0
cnVjdG9ycy4gQ291bGQgYmUgbWFkZSBwdWJsaWMuCisgIFVuaWNvZGVTdHJpbmcgJnNldFRvVVRG
OChjb25zdCBTdHJpbmdQaWVjZSAmdXRmOCk7CisgIC8vIEZvciBleHRyYWN0KGNoYXIqKS4KKyAg
Ly8gV2UgY291bGQgbWFrZSBhIHRvVVRGOCh0YXJnZXQsIGNhcGFjaXR5LCBlcnJvckNvZGUpIHB1
YmxpYyBidXQgbm90CisgIC8vIHRoaXMgdmVyc2lvbjogTmV3IEFQSSB3aWxsIGJlIGNsZWFuZXIg
aWYgd2UgbWFrZSBjYWxsZXJzIGNyZWF0ZSBzdWJzdHJpbmdzCisgIC8vIHJhdGhlciB0aGFuIGhh
dmluZyBzdGFydCtsZW5ndGggb24gZXZlcnkgbWV0aG9kLAorICAvLyBhbmQgaXQgc2hvdWxkIHRh
a2UgYSBVRXJyb3JDb2RlJi4KKyAgaW50MzJfdAorICB0b1VURjgoaW50MzJfdCBzdGFydCwgaW50
MzJfdCBsZW4sCisgICAgICAgICBjaGFyICp0YXJnZXQsIGludDMyX3QgY2FwYWNpdHkpIGNvbnN0
OworCisKKyAgaW5saW5lIGludDhfdAorICBkb0NvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNy
Y1RleHQsCisgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKSBjb25zdDsKKworICBpbnQ4X3QgZG9Db21wYXJlKGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgIGludDMyX3Qgc3Jj
TGVuZ3RoKSBjb25zdDsKKworICBpbmxpbmUgaW50OF90CisgIGRvQ29tcGFyZUNvZGVQb2ludE9y
ZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CisKKyAgaW50OF90
IGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CisKKyAgaW5saW5lIGludDhfdAorICBkb0Nh
c2VDb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCwKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoLAorICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OworCisgIGludDhf
dAorICBkb0Nhc2VDb21wYXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAg
ICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgsCisgICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7CisKKyAgaW50
MzJfdCBkb0luZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7CisKKyAgaW50MzJfdCBkb0luZGV4T2YoVUNo
YXIzMiBjLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICBpbnQzMl90IGRvTGFz
dEluZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKKworICBpbnQzMl90IGRvTGFzdEluZGV4
T2YoVUNoYXIzMiBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OworCisg
IHZvaWQgZG9FeHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICBpbnQzMl90IGxlbmd0aCwK
KyAgICAgICAgIFVDaGFyICpkc3QsCisgICAgICAgICBpbnQzMl90IGRzdFN0YXJ0KSBjb25zdDsK
KworICBpbmxpbmUgdm9pZCBkb0V4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAorICAgICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdDsKKworICBp
bmxpbmUgVUNoYXIgZG9DaGFyQXQoaW50MzJfdCBvZmZzZXQpICBjb25zdDsKKworICBVbmljb2Rl
U3RyaW5nJiBkb1JlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoLAorICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAg
ICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNy
Y0xlbmd0aCk7CisKKyAgVW5pY29kZVN0cmluZyYgZG9SZXBsYWNlKGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CisKKyAgVW5pY29kZVN0cmluZyYgZG9SZXZlcnNlKGlu
dDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCk7CisKKyAgLy8gY2Fs
Y3VsYXRlIGhhc2ggY29kZQorICBpbnQzMl90IGRvSGFzaENvZGUodm9pZCkgY29uc3Q7CisKKyAg
Ly8gZ2V0IHBvaW50ZXIgdG8gc3RhcnQgb2YgYXJyYXkKKyAgLy8gdGhlc2UgZG8gbm90IGNoZWNr
IGZvciBrT3BlbkdldEJ1ZmZlciwgdW5saWtlIHRoZSBwdWJsaWMgZ2V0QnVmZmVyKCkgZnVuY3Rp
b24KKyAgaW5saW5lIFVDaGFyKiBnZXRBcnJheVN0YXJ0KHZvaWQpOworICBpbmxpbmUgY29uc3Qg
VUNoYXIqIGdldEFycmF5U3RhcnQodm9pZCkgY29uc3Q7CisKKyAgLy8gQSBVbmljb2RlU3RyaW5n
IG9iamVjdCAobm90IG5lY2Vzc2FyaWx5IGl0cyBjdXJyZW50IGJ1ZmZlcikKKyAgLy8gaXMgd3Jp
dGFibGUgdW5sZXNzIGl0IGlzQm9ndXMoKSBvciBpdCBoYXMgYW4gIm9wZW4iIGdldEJ1ZmZlciht
aW5DYXBhY2l0eSkuCisgIGlubGluZSBVQm9vbCBpc1dyaXRhYmxlKCkgY29uc3Q7CisKKyAgLy8g
SXMgdGhlIGN1cnJlbnQgYnVmZmVyIHdyaXRhYmxlPworICBpbmxpbmUgVUJvb2wgaXNCdWZmZXJX
cml0YWJsZSgpIGNvbnN0OworCisgIC8vIE5vbmUgb2YgdGhlIGZvbGxvd2luZyBkb2VzIHJlbGVh
c2VBcnJheSgpLgorICBpbmxpbmUgdm9pZCBzZXRMZW5ndGgoaW50MzJfdCBsZW4pOyAgICAgICAg
Ly8gc2V0cyBvbmx5IGZTaG9ydExlbmd0aCBhbmQgZkxlbmd0aAorICBpbmxpbmUgdm9pZCBzZXRU
b0VtcHR5KCk7ICAgICAgICAgICAgICAgICAgLy8gc2V0cyBmRmxhZ3M9a1Nob3J0U3RyaW5nCisg
IGlubGluZSB2b2lkIHNldEFycmF5KFVDaGFyICphcnJheSwgaW50MzJfdCBsZW4sIGludDMyX3Qg
Y2FwYWNpdHkpOyAvLyBkb2VzIG5vdCBzZXQgZkZsYWdzCisKKyAgLy8gYWxsb2NhdGUgdGhlIGFy
cmF5OyByZXN1bHQgbWF5IGJlIGZTdGFja0J1ZmZlcgorICAvLyBzZXRzIHJlZkNvdW50IHRvIDEg
aWYgYXBwcm9wcmlhdGUKKyAgLy8gc2V0cyBmQXJyYXksIGZDYXBhY2l0eSwgYW5kIGZGbGFncwor
ICAvLyByZXR1cm5zIGJvb2xlYW4gZm9yIHN1Y2Nlc3Mgb3IgZmFpbHVyZQorICBVQm9vbCBhbGxv
Y2F0ZShpbnQzMl90IGNhcGFjaXR5KTsKKworICAvLyByZWxlYXNlIHRoZSBhcnJheSBpZiBvd25l
ZAorICB2b2lkIHJlbGVhc2VBcnJheSh2b2lkKTsKKworICAvLyB0dXJuIGEgYm9ndXMgc3RyaW5n
IGludG8gYW4gZW1wdHkgb25lCisgIHZvaWQgdW5Cb2d1cygpOworCisgIC8vIGltcGxlbWVudHMg
YXNzaWdtZW50IG9wZXJhdG9yLCBjb3B5IGNvbnN0cnVjdG9yLCBhbmQgZmFzdENvcHlGcm9tKCkK
KyAgVW5pY29kZVN0cmluZyAmY29weUZyb20oY29uc3QgVW5pY29kZVN0cmluZyAmc3JjLCBVQm9v
bCBmYXN0Q29weT1GQUxTRSk7CisKKyAgLy8gUGluIHN0YXJ0IGFuZCBsaW1pdCB0byBhY2NlcHRh
YmxlIHZhbHVlcy4KKyAgaW5saW5lIHZvaWQgcGluSW5kZXgoaW50MzJfdCYgc3RhcnQpIGNvbnN0
OworICBpbmxpbmUgdm9pZCBwaW5JbmRpY2VzKGludDMyX3QmIHN0YXJ0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QmIGxlbmd0aCkgY29uc3Q7CisKKyNpZiAhVUNPTkZJR19OT19D
T05WRVJTSU9OCisKKyAgLyogSW50ZXJuYWwgZXh0cmFjdCgpIHVzaW5nIFVDb252ZXJ0ZXIuICov
CisgIGludDMyX3QgZG9FeHRyYWN0KGludDMyX3Qgc3RhcnQsIGludDMyX3QgbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICBjaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAg
ICAgICAgICAgICAgICAgVUNvbnZlcnRlciAqY252LAorICAgICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworCisgIC8qCisgICAqIFJlYWwgY29uc3RydWN0b3Ig
Zm9yIGNvbnZlcnRpbmcgZnJvbSBjb2RlcGFnZSBkYXRhLgorICAgKiBJdCBhc3N1bWVzIHRoYXQg
aXQgaXMgY2FsbGVkIHdpdGggIWZSZWZDb3VudGVkLgorICAgKgorICAgKiBJZiA8Y29kZT5jb2Rl
cGFnZT09MDwvY29kZT4sIHRoZW4gdGhlIGRlZmF1bHQgY29udmVydGVyCisgICAqIGlzIHVzZWQg
Zm9yIHRoZSBwbGF0Zm9ybSBlbmNvZGluZy4KKyAgICogSWYgPGNvZGU+Y29kZXBhZ2U8L2NvZGU+
IGlzIGFuIGVtcHR5IHN0cmluZyAoPGNvZGU+IiI8L2NvZGU+KSwKKyAgICogdGhlbiBhIHNpbXBs
ZSBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCBvbiB0aGUgY29kZXBhZ2UtaW52YXJpYW50CisgICAq
IHN1YnNldCAoImludmFyaWFudCBjaGFyYWN0ZXJzIikgb2YgdGhlIHBsYXRmb3JtIGVuY29kaW5n
LiBTZWUgdXR5cGVzLmguCisgICAqLworICB2b2lkIGRvQ29kZXBhZ2VDcmVhdGUoY29uc3QgY2hh
ciAqY29kZXBhZ2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkYXRhTGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZXBhZ2UpOworCisg
IC8qCisgICAqIFdvcmtlciBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBVbmljb2RlU3RyaW5nIGZy
b20KKyAgICogYSBjb2RlcGFnZSBzdHJpbmcgdXNpbmcgYSBVQ29udmVydGVyLgorICAgKi8KKyAg
dm9pZAorICBkb0NvZGVwYWdlQ3JlYXRlKGNvbnN0IGNoYXIgKmNvZGVwYWdlRGF0YSwKKyAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IGRhdGFMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgVUNv
bnZlcnRlciAqY29udmVydGVyLAorICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1
cyk7CisKKyNlbmRpZgorCisgIC8qCisgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4g
d3JpdGUgYWNjZXNzIHRvIHRoZSBhcnJheQorICAgKiBpcyBuZWNlc3NhcnkuCisgICAqCisgICAq
IFdlIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGFycmF5IGlmCisgICAqIHRoZSBidWZmZXIg
aXMgcmVhZC1vbmx5LCBvcgorICAgKiB0aGUgYnVmZmVyIGlzIHJlZkNvdW50ZWQgKHNoYXJlZCks
IGFuZCByZWZDb3VudD4xLCBvcgorICAgKiB0aGUgYnVmZmVyIGlzIHRvbyBzbWFsbC4KKyAgICoK
KyAgICogUmV0dXJuIEZBTFNFIGlmIG1lbW9yeSBjb3VsZCBub3QgYmUgYWxsb2NhdGVkLgorICAg
Ki8KKyAgVUJvb2wgY2xvbmVBcnJheUlmTmVlZGVkKGludDMyX3QgbmV3Q2FwYWNpdHkgPSAtMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGdyb3dDYXBhY2l0eSA9IC0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGRvQ29weUFycmF5ID0gVFJVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICoqcEJ1ZmZlclRvRGVsZXRlID0gMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBmb3JjZUNsb25lID0gRkFMU0UpOwor
CisgIC8vIGNvbW1vbiBmdW5jdGlvbiBmb3IgY2FzZSBtYXBwaW5ncworICBVbmljb2RlU3RyaW5n
ICYKKyAgY2FzZU1hcChCcmVha0l0ZXJhdG9yICp0aXRsZUl0ZXIsCisgICAgICAgICAgY29uc3Qg
Y2hhciAqbG9jYWxlLAorICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMsCisgICAgICAgICAgaW50
MzJfdCB0b1doaWNoQ2FzZSk7CisKKyAgLy8gcmVmIGNvdW50aW5nCisgIHZvaWQgYWRkUmVmKHZv
aWQpOworICBpbnQzMl90IHJlbW92ZVJlZih2b2lkKTsKKyAgaW50MzJfdCByZWZDb3VudCh2b2lk
KSBjb25zdDsKKworICAvLyBjb25zdGFudHMKKyAgZW51bSB7CisgICAgLy8gU2V0IHRoZSBzdGFj
ayBidWZmZXIgc2l6ZSBzbyB0aGF0IHNpemVvZihVbmljb2RlU3RyaW5nKSBpcyBhIG11bHRpcGxl
IG9mIHNpemVvZihwb2ludGVyKToKKyAgICAvLyAzMi1iaXQgcG9pbnRlcnM6IDQrMSsxKzEzKjIg
PSAzMiBieXRlcworICAgIC8vIDY0LWJpdCBwb2ludGVyczogOCsxKzErMTUqMiA9IDQwIGJ5dGVz
CisgICAgVVNfU1RBQ0tCVUZfU0laRT0gc2l6ZW9mKHZvaWQgKik9PTQgPyAxMyA6IDE1LCAvLyBT
aXplIG9mIHN0YWNrIGJ1ZmZlciBmb3Igc21hbGwgc3RyaW5ncworICAgIGtJbnZhbGlkVUNoYXI9
MHhmZmZmLCAvLyBpbnZhbGlkIFVDaGFyIGluZGV4CisgICAga0dyb3dTaXplPTEyOCwgLy8gZ3Jv
dyBzaXplIGZvciB0aGlzIGJ1ZmZlcgorICAgIGtJbnZhbGlkSGFzaENvZGU9MCwgLy8gaW52YWxp
ZCBoYXNoIGNvZGUKKyAgICBrRW1wdHlIYXNoQ29kZT0xLCAvLyBoYXNoIGNvZGUgZm9yIGVtcHR5
IHN0cmluZworCisgICAgLy8gYml0IGZsYWcgdmFsdWVzIGZvciBmRmxhZ3MKKyAgICBrSXNCb2d1
cz0xLCAgICAgICAgIC8vIHRoaXMgc3RyaW5nIGlzIGJvZ3VzLCBpLmUuLCBub3QgdmFsaWQgb3Ig
TlVMTAorICAgIGtVc2luZ1N0YWNrQnVmZmVyPTIsLy8gZkFycmF5PT1mU3RhY2tCdWZmZXIKKyAg
ICBrUmVmQ291bnRlZD00LCAgICAgIC8vIHRoZXJlIGlzIGEgcmVmQ291bnQgZmllbGQgYmVmb3Jl
IHRoZSBjaGFyYWN0ZXJzIGluIGZBcnJheQorICAgIGtCdWZmZXJJc1JlYWRvbmx5PTgsLy8gZG8g
bm90IHdyaXRlIHRvIHRoaXMgYnVmZmVyCisgICAga09wZW5HZXRCdWZmZXI9MTYsICAvLyBnZXRC
dWZmZXIobWluQ2FwYWNpdHkpIHdhcyBjYWxsZWQgKGlzICJvcGVuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhbmQgcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpIG11c3QgYmUgY2FsbGVk
CisKKyAgICAvLyBjb21iaW5lZCB2YWx1ZXMgZm9yIGNvbnZlbmllbmNlCisgICAga1Nob3J0U3Ry
aW5nPWtVc2luZ1N0YWNrQnVmZmVyLAorICAgIGtMb25nU3RyaW5nPWtSZWZDb3VudGVkLAorICAg
IGtSZWFkb25seUFsaWFzPWtCdWZmZXJJc1JlYWRvbmx5LAorICAgIGtXcml0YWJsZUFsaWFzPTAK
KyAgfTsKKworICBmcmllbmQgY2xhc3MgU3RyaW5nVGhyZWFkVGVzdDsKKworICB1bmlvbiBTdGFj
a0J1ZmZlck9yRmllbGRzOyAgICAgICAgLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBuZWNlc3Nhcnkg
YmVmb3JlIGZyaWVuZCBkZWNsYXJhdGlvbgorICBmcmllbmQgdW5pb24gU3RhY2tCdWZmZXJPckZp
ZWxkczsgLy8gbWFrZSBVU19TVEFDS0JVRl9TSVpFIHZpc2libGUgaW5zaWRlIGZVbmlvbgorCisg
IC8qCisgICAqIFRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0aGUgY2xhc3MgZmllbGRzIHRoYXQgYXJl
IHN0b3JlZAorICAgKiBpbiBlYWNoIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICAgKiBOb3RlIHRo
YXQgVW5pY29kZVN0cmluZyBoYXMgdmlydHVhbCBmdW5jdGlvbnMsCisgICAqIHRoZXJlZm9yZSB0
aGVyZSBpcyBhbiBpbXBsaWNpdCB2dGFibGUgcG9pbnRlcgorICAgKiBhcyB0aGUgZmlyc3QgcmVh
bCBmaWVsZC4KKyAgICogVGhlIGZpZWxkcyBzaG91bGQgYmUgYWxpZ25lZCBzdWNoIHRoYXQgbm8g
cGFkZGluZyBpcworICAgKiBuZWNlc3NhcnksIG1vc3RseSBieSBoYXZpbmcgbGFyZ2VyIHR5cGVz
IGZpcnN0LgorICAgKiBPbiAzMi1iaXQgbWFjaGluZXMsIHRoZSBzaXplIHNob3VsZCBiZSAzMiBi
eXRlcywKKyAgICogb24gNjQtYml0IG1hY2hpbmVzICg4LWJ5dGUgcG9pbnRlcnMpLCBpdCBzaG91
bGQgYmUgNDAgYnl0ZXMuCisgICAqLworICAvLyAoaW1wbGljaXQpICp2dGFibGU7CisgIGludDhf
dCAgICBmU2hvcnRMZW5ndGg7ICAgLy8gMC4uMTI3OiBsZW5ndGggIDwwOiByZWFsIGxlbmd0aCBp
cyBpbiBmVW5pb24uZkZpZWxkcy5mTGVuZ3RoCisgIHVpbnQ4X3QgICBmRmxhZ3M7ICAgICAgICAg
Ly8gYml0IGZsYWdzOiBzZWUgY29uc3RhbnRzIGFib3ZlCisgIHVuaW9uIFN0YWNrQnVmZmVyT3JG
aWVsZHMgeworICAgIC8vIGZTdGFja0J1ZmZlciBpcyB1c2VkIGlmZiAoZkZsYWdzJmtVc2luZ1N0
YWNrQnVmZmVyKQorICAgIC8vIGVsc2UgZkZpZWxkcyBpcyB1c2VkCisgICAgVUNoYXIgICAgIGZT
dGFja0J1ZmZlciBbVVNfU1RBQ0tCVUZfU0laRV07IC8vIGJ1ZmZlciBmb3Igc21hbGwgc3RyaW5n
cworICAgIHN0cnVjdCB7CisgICAgICB1aW50MTZfdCAgZlBhZGRpbmc7ICAgLy8gYWxpZ24gdGhl
IGZvbGxvd2luZyBmaWVsZCBhdCA4QiAoMzJiIHBvaW50ZXJzKSBvciAxMkIgKDY0YikKKyAgICAg
IGludDMyX3QgICBmTGVuZ3RoOyAgICAvLyBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBmQXJyYXkg
aWYgPjEyNzsgZWxzZSB1bmRlZmluZWQKKyAgICAgIFVDaGFyICAgICAqZkFycmF5OyAgICAvLyB0
aGUgVW5pY29kZSBkYXRhIChhbGlnbmVkIGF0IDEyQiAoMzJiIHBvaW50ZXJzKSBvciAxNkIgKDY0
YikpCisgICAgICBpbnQzMl90ICAgZkNhcGFjaXR5OyAgLy8gc2l6ZW9mIGZBcnJheQorICAgIH0g
ZkZpZWxkczsKKyAgfSBmVW5pb247Cit9OworCisvKioKKyAqIENyZWF0ZSBhIG5ldyBVbmljb2Rl
U3RyaW5nIHdpdGggdGhlIGNvbmNhdGVuYXRpb24gb2YgdHdvIG90aGVycy4KKyAqCisgKiBAcGFy
YW0gczEgVGhlIGZpcnN0IHN0cmluZyB0byBiZSBjb3BpZWQgdG8gdGhlIG5ldyBvbmUuCisgKiBA
cGFyYW0gczIgVGhlIHNlY29uZCBzdHJpbmcgdG8gYmUgY29waWVkIHRvIHRoZSBuZXcgb25lLCBh
ZnRlciBzMS4KKyAqIEByZXR1cm4gVW5pY29kZVN0cmluZyhzMSkuYXBwZW5kKHMyKQorICogQHN0
YWJsZSBJQ1UgMi44CisgKi8KK1VfQ09NTU9OX0FQSSBVbmljb2RlU3RyaW5nIFVfRVhQT1JUMgor
b3BlcmF0b3IrIChjb25zdCBVbmljb2RlU3RyaW5nICZzMSwgY29uc3QgVW5pY29kZVN0cmluZyAm
czIpOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIElu
bGluZSBtZW1iZXJzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBQcml2YXRl
cworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2lubGluZSB2
b2lkCitVbmljb2RlU3RyaW5nOjpwaW5JbmRleChpbnQzMl90JiBzdGFydCkgY29uc3QKK3sKKyAg
Ly8gcGluIGluZGV4CisgIGlmKHN0YXJ0IDwgMCkgeworICAgIHN0YXJ0ID0gMDsKKyAgfSBlbHNl
IGlmKHN0YXJ0ID4gbGVuZ3RoKCkpIHsKKyAgICBzdGFydCA9IGxlbmd0aCgpOworICB9Cit9CisK
K2lubGluZSB2b2lkCitVbmljb2RlU3RyaW5nOjpwaW5JbmRpY2VzKGludDMyX3QmIHN0YXJ0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90JiBfbGVuZ3RoKSBjb25zdAoreworICAv
LyBwaW4gaW5kaWNlcworICBpbnQzMl90IGxlbiA9IGxlbmd0aCgpOworICBpZihzdGFydCA8IDAp
IHsKKyAgICBzdGFydCA9IDA7CisgIH0gZWxzZSBpZihzdGFydCA+IGxlbikgeworICAgIHN0YXJ0
ID0gbGVuOworICB9CisgIGlmKF9sZW5ndGggPCAwKSB7CisgICAgX2xlbmd0aCA9IDA7CisgIH0g
ZWxzZSBpZihfbGVuZ3RoID4gKGxlbiAtIHN0YXJ0KSkgeworICAgIF9sZW5ndGggPSAobGVuIC0g
c3RhcnQpOworICB9Cit9CisKK2lubGluZSBVQ2hhcioKK1VuaWNvZGVTdHJpbmc6OmdldEFycmF5
U3RhcnQoKQoreyByZXR1cm4gKGZGbGFncyZrVXNpbmdTdGFja0J1ZmZlcikgPyBmVW5pb24uZlN0
YWNrQnVmZmVyIDogZlVuaW9uLmZGaWVsZHMuZkFycmF5OyB9CisKK2lubGluZSBjb25zdCBVQ2hh
cioKK1VuaWNvZGVTdHJpbmc6OmdldEFycmF5U3RhcnQoKSBjb25zdAoreyByZXR1cm4gKGZGbGFn
cyZrVXNpbmdTdGFja0J1ZmZlcikgPyBmVW5pb24uZlN0YWNrQnVmZmVyIDogZlVuaW9uLmZGaWVs
ZHMuZkFycmF5OyB9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorLy8gUmVhZC1vbmx5IGltcGxlbWVudGF0aW9uIG1ldGhvZHMKKy8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6
Omxlbmd0aCgpIGNvbnN0Cit7IHJldHVybiBmU2hvcnRMZW5ndGg+PTAgPyBmU2hvcnRMZW5ndGgg
OiBmVW5pb24uZkZpZWxkcy5mTGVuZ3RoOyB9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3Ry
aW5nOjpnZXRDYXBhY2l0eSgpIGNvbnN0Cit7IHJldHVybiAoZkZsYWdzJmtVc2luZ1N0YWNrQnVm
ZmVyKSA/IFVTX1NUQUNLQlVGX1NJWkUgOiBmVW5pb24uZkZpZWxkcy5mQ2FwYWNpdHk7IH0KKwor
aW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omhhc2hDb2RlKCkgY29uc3QKK3sgcmV0dXJu
IGRvSGFzaENvZGUoKTsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OmlzQm9ndXMo
KSBjb25zdAoreyByZXR1cm4gKFVCb29sKShmRmxhZ3MgJiBrSXNCb2d1cyk7IH0KKworaW5saW5l
IFVCb29sCitVbmljb2RlU3RyaW5nOjppc1dyaXRhYmxlKCkgY29uc3QKK3sgcmV0dXJuIChVQm9v
bCkhKGZGbGFncyYoa09wZW5HZXRCdWZmZXJ8a0lzQm9ndXMpKTsgfQorCitpbmxpbmUgVUJvb2wK
K1VuaWNvZGVTdHJpbmc6OmlzQnVmZmVyV3JpdGFibGUoKSBjb25zdAoreworICByZXR1cm4gKFVC
b29sKSgKKyAgICAgICEoZkZsYWdzJihrT3BlbkdldEJ1ZmZlcnxrSXNCb2d1c3xrQnVmZmVySXNS
ZWFkb25seSkpICYmCisgICAgICAoIShmRmxhZ3Mma1JlZkNvdW50ZWQpIHx8IHJlZkNvdW50KCk9
PTEpKTsKK30KKworaW5saW5lIGNvbnN0IFVDaGFyICoKK1VuaWNvZGVTdHJpbmc6OmdldEJ1ZmZl
cigpIGNvbnN0IHsKKyAgaWYoZkZsYWdzJihrSXNCb2d1c3xrT3BlbkdldEJ1ZmZlcikpIHsKKyAg
ICByZXR1cm4gMDsKKyAgfSBlbHNlIGlmKGZGbGFncyZrVXNpbmdTdGFja0J1ZmZlcikgeworICAg
IHJldHVybiBmVW5pb24uZlN0YWNrQnVmZmVyOworICB9IGVsc2UgeworICAgIHJldHVybiBmVW5p
b24uZkZpZWxkcy5mQXJyYXk7CisgIH0KK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisvLyBSZWFkLW9ubHkgYWxpYXMgbWV0aG9kcworLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmxpbmUgaW50OF90CitVbmljb2RlU3Ry
aW5nOjpkb0NvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCB0aGlz
TGVuZ3RoLAorICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAorICAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCkgY29uc3QKK3sKKyAgaWYoc3JjVGV4dC5pc0JvZ3VzKCkpIHsKKyAgICByZXR1cm4gKGlu
dDhfdCkhaXNCb2d1cygpOyAvLyAwIGlmIGJvdGggYXJlIGJvZ3VzLCAxIG90aGVyd2lzZQorICB9
IGVsc2UgeworICAgIHNyY1RleHQucGluSW5kaWNlcyhzcmNTdGFydCwgc3JjTGVuZ3RoKTsKKyAg
ICByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCB0aGlzTGVuZ3RoLCBzcmNUZXh0LmdldEFycmF5U3Rh
cnQoKSwgc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgIH0KK30KKworaW5saW5lIFVCb29sCitVbmlj
b2RlU3RyaW5nOjpvcGVyYXRvcj09IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAor
eworICBpZihpc0JvZ3VzKCkpIHsKKyAgICByZXR1cm4gdGV4dC5pc0JvZ3VzKCk7CisgIH0gZWxz
ZSB7CisgICAgaW50MzJfdCBsZW4gPSBsZW5ndGgoKSwgdGV4dExlbmd0aCA9IHRleHQubGVuZ3Ro
KCk7CisgICAgcmV0dXJuCisgICAgICAhdGV4dC5pc0JvZ3VzKCkgJiYKKyAgICAgIGxlbiA9PSB0
ZXh0TGVuZ3RoICYmCisgICAgICBkb0NvbXBhcmUoMCwgbGVuLCB0ZXh0LCAwLCB0ZXh0TGVuZ3Ro
KSA9PSAwOworICB9Cit9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3BlcmF0b3Ih
PSAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3QKK3sgcmV0dXJuICghIG9wZXJhdG9y
PT0odGV4dCkpOyB9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6b3BlcmF0b3I+IChj
b25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlKDAsIGxl
bmd0aCgpLCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpKSA9PSAxOyB9CisKK2lubGluZSBVQm9vbAor
VW5pY29kZVN0cmluZzo6b3BlcmF0b3I8IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25z
dAoreyByZXR1cm4gZG9Db21wYXJlKDAsIGxlbmd0aCgpLCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgp
KSA9PSAtMTsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6Om9wZXJhdG9yPj0gKGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVu
Z3RoKCksIHRleHQsIDAsIHRleHQubGVuZ3RoKCkpICE9IC0xOyB9CisKK2lubGluZSBVQm9vbAor
VW5pY29kZVN0cmluZzo6b3BlcmF0b3I8PSAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29u
c3QKK3sgcmV0dXJuIGRvQ29tcGFyZSgwLCBsZW5ndGgoKSwgdGV4dCwgMCwgdGV4dC5sZW5ndGgo
KSkgIT0gMTsgfQorCitpbmxpbmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpjb21wYXJlKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVuZ3Ro
KCksIHRleHQsIDAsIHRleHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVT
dHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xl
bmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpIGNvbnN0
Cit7IHJldHVybiBkb0NvbXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIDAsIHNyY1RleHQu
bGVuZ3RoKCkpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoY29u
c3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNv
bnN0Cit7IHJldHVybiBkb0NvbXBhcmUoMCwgbGVuZ3RoKCksIHNyY0NoYXJzLCAwLCBzcmNMZW5n
dGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBz
dGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7IHJldHVybiBk
b0NvbXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9
CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyICpzcmNDaGFycykgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFyZShzdGFydCwgX2xlbmd0aCwg
c3JjQ2hhcnMsIDAsIF9sZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6
OmNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwK
KyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGlu
dDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QK
K3sgcmV0dXJuIGRvQ29tcGFyZShzdGFydCwgX2xlbmd0aCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBz
cmNMZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmVCZXR3
ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAg
ICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xp
bWl0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBsaW1pdCAtIHN0YXJ0LAorICAg
ICAgICAgICBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGltaXQgLSBzcmNTdGFydCk7IH0KKworaW5s
aW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6ZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJf
dCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
dGhpc0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7CisgIGlmKHNyY1RleHQuaXNCb2d1
cygpKSB7CisgICAgcmV0dXJuIChpbnQ4X3QpIWlzQm9ndXMoKTsgLy8gMCBpZiBib3RoIGFyZSBi
b2d1cywgMSBvdGhlcndpc2UKKyAgfSBlbHNlIHsKKyAgICBzcmNUZXh0LnBpbkluZGljZXMoc3Jj
U3RhcnQsIHNyY0xlbmd0aCk7CisgICAgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKHN0
YXJ0LCB0aGlzTGVuZ3RoLCBzcmNUZXh0LmdldEFycmF5U3RhcnQoKSwgc3JjU3RhcnQsIHNyY0xl
bmd0aCk7CisgIH0KK30KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNv
ZGVQb2ludE9yZGVyKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0Cit7IHJldHVybiBk
b0NvbXBhcmVDb2RlUG9pbnRPcmRlcigwLCBsZW5ndGgoKSwgdGV4dCwgMCwgdGV4dC5sZW5ndGgo
KSk7IH0KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9y
ZGVyKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpIGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmVDb2Rl
UG9pbnRPcmRlcihzdGFydCwgX2xlbmd0aCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7
IH0KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVy
KGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2lu
dE9yZGVyKDAsIGxlbmd0aCgpLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUg
aW50OF90CitVbmljb2RlU3RyaW5nOjpjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmlu
ZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQs
IF9sZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4
X3QKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMp
IGNvbnN0Cit7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcihzdGFydCwgX2xlbmd0aCwg
c3JjQ2hhcnMsIDAsIF9sZW5ndGgpOyB9CisKK2lubGluZSBpbnQ4X3QKK1VuaWNvZGVTdHJpbmc6
OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRv
Q29tcGFyZUNvZGVQb2ludE9yZGVyKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQs
IHNyY0xlbmd0aCk7IH0KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y29tcGFyZUNv
ZGVQb2ludE9yZGVyQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xpbWl0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQs
IGxpbWl0IC0gc3RhcnQsCisgICAgICAgICAgIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMaW1pdCAt
IHNyY1N0YXJ0KTsgfQorCitpbmxpbmUgaW50OF90CitVbmljb2RlU3RyaW5nOjpkb0Nhc2VDb21w
YXJlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
dGhpc0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0
cmluZyAmc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0Cit7Cisg
IGlmKHNyY1RleHQuaXNCb2d1cygpKSB7CisgICAgcmV0dXJuIChpbnQ4X3QpIWlzQm9ndXMoKTsg
Ly8gMCBpZiBib3RoIGFyZSBib2d1cywgMSBvdGhlcndpc2UKKyAgfSBlbHNlIHsKKyAgICBzcmNU
ZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgcmV0dXJuIGRvQ2FzZUNv
bXBhcmUoc3RhcnQsIHRoaXNMZW5ndGgsIHNyY1RleHQuZ2V0QXJyYXlTdGFydCgpLCBzcmNTdGFy
dCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKKyAgfQorfQorCitpbmxpbmUgaW50OF90CitVbmljb2Rl
U3RyaW5nOjpjYXNlQ29tcGFyZShjb25zdCBVbmljb2RlU3RyaW5nICZ0ZXh0LCB1aW50MzJfdCBv
cHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKDAsIGxlbmd0aCgpLCB0ZXh0
LCAwLCB0ZXh0Lmxlbmd0aCgpLCBvcHRpb25zKTsKK30KKworaW5saW5lIGludDhfdAorVW5pY29k
ZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVuaWNvZGVTdHJpbmcgJnNyY1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKHN0YXJ0LCBfbGVu
Z3RoLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpLCBvcHRpb25zKTsKK30KKworaW5saW5l
IGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBk
b0Nhc2VDb21wYXJlKDAsIGxlbmd0aCgpLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoLCBvcHRpb25z
KTsKK30KKworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJf
dCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNyY1RleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJldHVybiBkb0Nhc2VDb21wYXJlKHN0
YXJ0LCBfbGVuZ3RoLCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKK30K
KworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0IHsKKyAgcmV0dXJuIGRvQ2FzZUNv
bXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJzLCAwLCBfbGVuZ3RoLCBvcHRpb25zKTsKK30K
KworaW5saW5lIGludDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IG9wdGlvbnMpIGNvbnN0IHsKKyAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUoc3RhcnQsIF9sZW5ndGgs
IHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBvcHRpb25zKTsKK30KKworaW5saW5lIGlu
dDhfdAorVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmVCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nICZzcmNUZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMaW1pdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CisgIHJl
dHVybiBkb0Nhc2VDb21wYXJlKHN0YXJ0LCBsaW1pdCAtIHN0YXJ0LCBzcmNUZXh0LCBzcmNTdGFy
dCwgc3JjTGltaXQgLSBzcmNTdGFydCwgb3B0aW9ucyk7Cit9CisKK2lubGluZSBpbnQzMl90CitV
bmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50
MzJfdCBfbGVuZ3RoKSBjb25zdAoreworICBpZighc3JjVGV4dC5pc0JvZ3VzKCkpIHsKKyAgICBz
cmNUZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgaWYoc3JjTGVuZ3Ro
ID4gMCkgeworICAgICAgcmV0dXJuIGluZGV4T2Yoc3JjVGV4dC5nZXRBcnJheVN0YXJ0KCksIHNy
Y1N0YXJ0LCBzcmNMZW5ndGgsIHN0YXJ0LCBfbGVuZ3RoKTsKKyAgICB9CisgIH0KKyAgcmV0dXJu
IC0xOworfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdAoreyByZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0
Lmxlbmd0aCgpLCAwLCBsZW5ndGgoKSk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJp
bmc6OmluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwKKyAgICAgICAgICAgICAgIGlu
dDMyX3Qgc3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICByZXR1cm4gaW5kZXhP
Zih0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpLCBzdGFydCwgbGVuZ3RoKCkgLSBzdGFydCk7Cit9CisK
K2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAg
aW50MzJfdCBfbGVuZ3RoKSBjb25zdAoreyByZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxl
bmd0aCgpLCBzdGFydCwgX2xlbmd0aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJp
bmc6OmluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdCB7CisgIHBp
bkluZGV4KHN0YXJ0KTsKKyAgcmV0dXJuIGluZGV4T2Yoc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCwg
c3RhcnQsIGxlbmd0aCgpIC0gc3RhcnQpOworfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0
cmluZzo6aW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCisgICAgICAgICAg
ICAgICBpbnQzMl90IF9sZW5ndGgpIGNvbnN0Cit7IHJldHVybiBpbmRleE9mKHNyY0NoYXJzLCAw
LCBzcmNMZW5ndGgsIHN0YXJ0LCBfbGVuZ3RoKTsgfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29k
ZVN0cmluZzo6aW5kZXhPZihVQ2hhciBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwK
KyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhP
ZihjLCBzdGFydCwgX2xlbmd0aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6
OmluZGV4T2YoVUNoYXIzMiBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAg
ICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhPZihjLCBz
dGFydCwgX2xlbmd0aCk7IH0KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4
T2YoVUNoYXIgYykgY29uc3QKK3sgcmV0dXJuIGRvSW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7IH0K
KworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIzMiBjKSBjb25z
dAoreyByZXR1cm4gaW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7IH0KKworaW5saW5lIGludDMyX3QK
K1VuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIgYywKKyAgICAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICByZXR1cm4gZG9JbmRleE9mKGMs
IHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVT
dHJpbmc6OmluZGV4T2YoVUNoYXIzMiBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkg
Y29uc3QgeworICBwaW5JbmRleChzdGFydCk7CisgIHJldHVybiBpbmRleE9mKGMsIHN0YXJ0LCBs
ZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxh
c3RJbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAg
IGludDMyX3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGxhc3RJbmRleE9mKHNyY0NoYXJzLCAw
LCBzcmNMZW5ndGgsIHN0YXJ0LCBfbGVuZ3RoKTsgfQorCitpbmxpbmUgaW50MzJfdAorVW5pY29k
ZVN0cmluZzo6bGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25z
dCB7CisgIHBpbkluZGV4KHN0YXJ0KTsKKyAgcmV0dXJuIGxhc3RJbmRleE9mKHNyY0NoYXJzLCAw
LCBzcmNMZW5ndGgsIHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5saW5lIGludDMy
X3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1Rl
eHQsCisgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAoreworICBpZighc3JjVGV4dC5pc0JvZ3VzKCkp
IHsKKyAgICBzcmNUZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7CisgICAgaWYo
c3JjTGVuZ3RoID4gMCkgeworICAgICAgcmV0dXJuIGxhc3RJbmRleE9mKHNyY1RleHQuZ2V0QXJy
YXlTdGFydCgpLCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBzdGFydCwgX2xlbmd0aCk7CisgICAgfQor
ICB9CisgIHJldHVybiAtMTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxh
c3RJbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAgICBpbnQz
Ml90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAoreyByZXR1
cm4gbGFzdEluZGV4T2YodGV4dCwgMCwgdGV4dC5sZW5ndGgoKSwgc3RhcnQsIF9sZW5ndGgpOyB9
CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVbmlj
b2RlU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3Qgewor
ICBwaW5JbmRleChzdGFydCk7CisgIHJldHVybiBsYXN0SW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxl
bmd0aCgpLCBzdGFydCwgbGVuZ3RoKCkgLSBzdGFydCk7Cit9CisKK2lubGluZSBpbnQzMl90CitV
bmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25z
dAoreyByZXR1cm4gbGFzdEluZGV4T2YodGV4dCwgMCwgdGV4dC5sZW5ndGgoKSwgMCwgbGVuZ3Ro
KCkpOyB9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hh
ciBjLAorICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMy
X3QgX2xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvTGFzdEluZGV4T2YoYywgc3RhcnQsIF9sZW5n
dGgpOyB9CisKK2lubGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hh
cjMyIGMsCisgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50
MzJfdCBfbGVuZ3RoKSBjb25zdCB7CisgIHJldHVybiBkb0xhc3RJbmRleE9mKGMsIHN0YXJ0LCBf
bGVuZ3RoKTsKK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9m
KFVDaGFyIGMpIGNvbnN0Cit7IHJldHVybiBkb0xhc3RJbmRleE9mKGMsIDAsIGxlbmd0aCgpKTsg
fQorCitpbmxpbmUgaW50MzJfdAorVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoVUNoYXIzMiBj
KSBjb25zdCB7CisgIHJldHVybiBsYXN0SW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7Cit9CisKK2lu
bGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hhciBjLAorICAgICAg
ICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QgeworICBwaW5JbmRleChzdGFydCk7CisgIHJl
dHVybiBkb0xhc3RJbmRleE9mKGMsIHN0YXJ0LCBsZW5ndGgoKSAtIHN0YXJ0KTsKK30KKworaW5s
aW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyMzIgYywKKyAgICAg
ICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICBy
ZXR1cm4gbGFzdEluZGV4T2YoYywgc3RhcnQsIGxlbmd0aCgpIC0gc3RhcnQpOworfQorCitpbmxp
bmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVW5pY29kZVN0cmluZyYg
dGV4dCkgY29uc3QKK3sgcmV0dXJuIGNvbXBhcmUoMCwgdGV4dC5sZW5ndGgoKSwgdGV4dCwgMCwg
dGV4dC5sZW5ndGgoKSkgPT0gMDsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0
YXJ0c1dpdGgoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Cit7
IHJldHVybiBkb0NvbXBhcmUoMCwgc3JjTGVuZ3RoLCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVu
Z3RoKSA9PSAwOyB9CisKK2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6c3RhcnRzV2l0aChj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBj
b25zdAoreyByZXR1cm4gZG9Db21wYXJlKDAsIHNyY0xlbmd0aCwgc3JjQ2hhcnMsIDAsIHNyY0xl
bmd0aCkgPT0gMDsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgo
Y29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAor
ICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKK3sgcmV0dXJuIGRvQ29tcGFy
ZSgwLCBzcmNMZW5ndGgsIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwO30KKwor
aW5saW5lIFVCb29sCitVbmljb2RlU3RyaW5nOjplbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5n
JiB0ZXh0KSBjb25zdAoreyByZXR1cm4gZG9Db21wYXJlKGxlbmd0aCgpIC0gdGV4dC5sZW5ndGgo
KSwgdGV4dC5sZW5ndGgoKSwKKyAgICAgICAgICAgdGV4dCwgMCwgdGV4dC5sZW5ndGgoKSkgPT0g
MDsgfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAg
ICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0IHsKKyAgc3JjVGV4dC5waW5JbmRpY2VzKHNy
Y1N0YXJ0LCBzcmNMZW5ndGgpOworICByZXR1cm4gZG9Db21wYXJlKGxlbmd0aCgpIC0gc3JjTGVu
Z3RoLCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgc3JjVGV4dCwgc3JjU3RhcnQsIHNy
Y0xlbmd0aCkgPT0gMDsKK30KKworaW5saW5lIFVCb29sCitVbmljb2RlU3RyaW5nOjplbmRzV2l0
aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkg
Y29uc3QgeworICBpZihzcmNMZW5ndGggPCAwKSB7CisgICAgc3JjTGVuZ3RoID0gdV9zdHJsZW4o
c3JjQ2hhcnMpOworICB9CisgIHJldHVybiBkb0NvbXBhcmUobGVuZ3RoKCkgLSBzcmNMZW5ndGgs
IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKSA9
PSAwOworfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVD
aGFyICpzcmNDaGFycywKKyAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCisgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QgeworICBpZihzcmNMZW5ndGggPCAwKSB7CisgICAg
c3JjTGVuZ3RoID0gdV9zdHJsZW4oc3JjQ2hhcnMgKyBzcmNTdGFydCk7CisgIH0KKyAgcmV0dXJu
IGRvQ29tcGFyZShsZW5ndGgoKSAtIHNyY0xlbmd0aCwgc3JjTGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwOworfQorCisvLz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIHJlcGxhY2UKKy8vPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5saW5lIFVuaWNvZGVTdHJpbmcm
CitVbmljb2RlU3RyaW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBp
bnQzMl90IF9sZW5ndGgsCisgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0KQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNUZXh0LCAwLCBzcmNU
ZXh0Lmxlbmd0aCgpKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6
OnJlcGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwK
KyAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisgICAgICAgICAg
ICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgp
Cit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBz
cmNMZW5ndGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6cmVw
bGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAg
ICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJz
LCAwLCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmlu
Zzo6cmVwbGFjZShpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3Ro
LAorICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreyBy
ZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xl
bmd0aCk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpyZXBsYWNl
KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCisgICAgICAg
ICAgICAgICBVQ2hhciBzcmNDaGFyKQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3Ro
LCAmc3JjQ2hhciwgMCwgMSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3Ry
aW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5n
dGgsCisgICAgICAgICAgICAgICBVQ2hhcjMyIHNyY0NoYXIpIHsKKyAgVUNoYXIgYnVmZmVyW1Ux
Nl9NQVhfTEVOR1RIXTsKKyAgaW50MzJfdCBjb3VudCA9IDA7CisgIFVCb29sIGlzRXJyb3IgPSBG
QUxTRTsKKyAgVTE2X0FQUEVORChidWZmZXIsIGNvdW50LCBVMTZfTUFYX0xFTkdUSCwgc3JjQ2hh
ciwgaXNFcnJvcik7CisgIHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIGJ1ZmZlciwg
MCwgY291bnQpOworfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJl
cGxhY2VCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxp
bWl0LAorICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKK3sg
cmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGltaXQgLSBzdGFydCwgc3JjVGV4dCwgMCwgc3JjVGV4
dC5sZW5ndGgoKSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpy
ZXBsYWNlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgaW50MzJfdCBs
aW1pdCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCisg
ICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNMaW1pdCkKK3sgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGltaXQgLSBzdGFydCwg
c3JjVGV4dCwgc3JjU3RhcnQsIHNyY0xpbWl0IC0gc3JjU3RhcnQpOyB9CisKK2lubGluZSBVbmlj
b2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6ZmluZEFuZFJlcGxhY2UoY29uc3QgVW5pY29kZVN0
cmluZyYgb2xkVGV4dCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5l
d1RleHQpCit7IHJldHVybiBmaW5kQW5kUmVwbGFjZSgwLCBsZW5ndGgoKSwgb2xkVGV4dCwgMCwg
b2xkVGV4dC5sZW5ndGgoKSwKKyAgICAgICAgICAgIG5ld1RleHQsIDAsIG5ld1RleHQubGVuZ3Ro
KCkpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6ZmluZEFuZFJl
cGxhY2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwK
KyAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsCisgICAgICAg
ICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBuZXdUZXh0KQoreyByZXR1cm4gZmluZEFu
ZFJlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIG9sZFRleHQsIDAsIG9sZFRleHQubGVuZ3RoKCksCisg
ICAgICAgICAgICBuZXdUZXh0LCAwLCBuZXdUZXh0Lmxlbmd0aCgpKTsgfQorCisvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisvLyBleHRyYWN0CisvLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09CitpbmxpbmUgdm9pZAorVW5pY29kZVN0cmluZzo6ZG9FeHRyYWN0KGludDMyX3Qg
c3RhcnQsCisgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAgICAgIFVuaWNv
ZGVTdHJpbmcmIHRhcmdldCkgY29uc3QKK3sgdGFyZ2V0LnJlcGxhY2UoMCwgdGFyZ2V0Lmxlbmd0
aCgpLCAqdGhpcywgc3RhcnQsIF9sZW5ndGgpOyB9CisKK2lubGluZSB2b2lkCitVbmljb2RlU3Ry
aW5nOjpleHRyYWN0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5n
dGgsCisgICAgICAgICAgICAgICBVQ2hhciAqdGFyZ2V0LAorICAgICAgICAgICAgICAgaW50MzJf
dCB0YXJnZXRTdGFydCkgY29uc3QKK3sgZG9FeHRyYWN0KHN0YXJ0LCBfbGVuZ3RoLCB0YXJnZXQs
IHRhcmdldFN0YXJ0KTsgfQorCitpbmxpbmUgdm9pZAorVW5pY29kZVN0cmluZzo6ZXh0cmFjdChp
bnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAorICAgICAgICAg
ICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdAoreyBkb0V4dHJhY3Qoc3RhcnQsIF9s
ZW5ndGgsIHRhcmdldCk7IH0KKworI2lmICFVQ09ORklHX05PX0NPTlZFUlNJT04KKworaW5saW5l
IGludDMyX3QKK1VuaWNvZGVTdHJpbmc6OmV4dHJhY3QoaW50MzJfdCBzdGFydCwKKyAgICAgICAg
ICAgICAgIGludDMyX3QgX2xlbmd0aCwKKyAgICAgICAgICAgICAgIGNoYXIgKmRzdCwKKyAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGVwYWdlKSBjb25zdAorCit7CisgIC8vIFRoaXMgZHN0
U2l6ZSB2YWx1ZSB3aWxsIGJlIGNoZWNrZWQgZXhwbGljaXRseQorI2lmIGRlZmluZWQoX19HTlVD
X18pCisgIC8vIFRpY2tldCAjNzAzOTogQ2xpcCBsZW5ndGggdG8gdGhlIG1heGltdW0gdmFsaWQg
bGVuZ3RoIHRvIHRoZSBlbmQgb2YgYWRkcmVzc2FibGUgbWVtb3J5IGdpdmVuIHRoZSBzdGFydGlu
ZyBhZGRyZXNzCisgIC8vIFRoaXMgaXMgb25seSBhbiBpc3N1ZSB3aGVuIHVzaW5nIEdDQyBhbmQg
Y2VydGFpbiBvcHRpbWl6YXRpb25zIGFyZSB0dXJuZWQgb24uCisgIHJldHVybiBleHRyYWN0KHN0
YXJ0LCBfbGVuZ3RoLCBkc3QsIGRzdCE9MCA/ICgoZHN0ID49IChjaGFyKikoKHNpemVfdCktMSkg
LSBVSU5UMzJfTUFYKSA/ICgoKGNoYXIqKVVJTlQzMl9NQVgpIC0gZHN0KSA6IFVJTlQzMl9NQVgp
IDogMCwgY29kZXBhZ2UpOworI2Vsc2UKKyAgcmV0dXJuIGV4dHJhY3Qoc3RhcnQsIF9sZW5ndGgs
IGRzdCwgZHN0IT0wID8gMHhmZmZmZmZmZiA6IDAsIGNvZGVwYWdlKTsKKyNlbmRpZgorfQorCisj
ZW5kaWYKKworaW5saW5lIHZvaWQKK1VuaWNvZGVTdHJpbmc6OmV4dHJhY3RCZXR3ZWVuKGludDMy
X3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAorICAgICAgICAgICAg
ICAgICAgVUNoYXIgKmRzdCwKKyAgICAgICAgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQpIGNv
bnN0IHsKKyAgcGluSW5kZXgoc3RhcnQpOworICBwaW5JbmRleChsaW1pdCk7CisgIGRvRXh0cmFj
dChzdGFydCwgbGltaXQgLSBzdGFydCwgZHN0LCBkc3RTdGFydCk7Cit9CisKK2lubGluZSBVbmlj
b2RlU3RyaW5nCitVbmljb2RlU3RyaW5nOjp0ZW1wU3ViU3RyaW5nQmV0d2VlbihpbnQzMl90IHN0
YXJ0LCBpbnQzMl90IGxpbWl0KSBjb25zdCB7CisgICAgcmV0dXJuIHRlbXBTdWJTdHJpbmcoc3Rh
cnQsIGxpbWl0IC0gc3RhcnQpOworfQorCitpbmxpbmUgVUNoYXIKK1VuaWNvZGVTdHJpbmc6OmRv
Q2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreworICBpZigodWludDMyX3Qpb2Zmc2V0IDwg
KHVpbnQzMl90KWxlbmd0aCgpKSB7CisgICAgcmV0dXJuIGdldEFycmF5U3RhcnQoKVtvZmZzZXRd
OworICB9IGVsc2UgeworICAgIHJldHVybiBrSW52YWxpZFVDaGFyOworICB9Cit9CisKK2lubGlu
ZSBVQ2hhcgorVW5pY29kZVN0cmluZzo6Y2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreyBy
ZXR1cm4gZG9DaGFyQXQob2Zmc2V0KTsgfQorCitpbmxpbmUgVUNoYXIKK1VuaWNvZGVTdHJpbmc6
Om9wZXJhdG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreyByZXR1cm4gZG9DaGFyQXQob2Zm
c2V0KTsgfQorCitpbmxpbmUgVUNoYXIzMgorVW5pY29kZVN0cmluZzo6Y2hhcjMyQXQoaW50MzJf
dCBvZmZzZXQpIGNvbnN0Cit7CisgIGludDMyX3QgbGVuID0gbGVuZ3RoKCk7CisgIGlmKCh1aW50
MzJfdClvZmZzZXQgPCAodWludDMyX3QpbGVuKSB7CisgICAgY29uc3QgVUNoYXIgKmFycmF5ID0g
Z2V0QXJyYXlTdGFydCgpOworICAgIFVDaGFyMzIgYzsKKyAgICBVMTZfR0VUKGFycmF5LCAwLCBv
ZmZzZXQsIGxlbiwgYyk7CisgICAgcmV0dXJuIGM7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGtJ
bnZhbGlkVUNoYXI7CisgIH0KK30KKworaW5saW5lIGludDMyX3QKK1VuaWNvZGVTdHJpbmc6Omdl
dENoYXIzMlN0YXJ0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCB7CisgIGlmKCh1aW50MzJfdClvZmZz
ZXQgPCAodWludDMyX3QpbGVuZ3RoKCkpIHsKKyAgICBjb25zdCBVQ2hhciAqYXJyYXkgPSBnZXRB
cnJheVN0YXJ0KCk7CisgICAgVTE2X1NFVF9DUF9TVEFSVChhcnJheSwgMCwgb2Zmc2V0KTsKKyAg
ICByZXR1cm4gb2Zmc2V0OworICB9IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2lu
bGluZSBpbnQzMl90CitVbmljb2RlU3RyaW5nOjpnZXRDaGFyMzJMaW1pdChpbnQzMl90IG9mZnNl
dCkgY29uc3QgeworICBpbnQzMl90IGxlbiA9IGxlbmd0aCgpOworICBpZigodWludDMyX3Qpb2Zm
c2V0IDwgKHVpbnQzMl90KWxlbikgeworICAgIGNvbnN0IFVDaGFyICphcnJheSA9IGdldEFycmF5
U3RhcnQoKTsKKyAgICBVMTZfU0VUX0NQX0xJTUlUKGFycmF5LCAwLCBvZmZzZXQsIGxlbik7Cisg
ICAgcmV0dXJuIG9mZnNldDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbGVuOworICB9Cit9CisK
K2lubGluZSBVQm9vbAorVW5pY29kZVN0cmluZzo6aXNFbXB0eSgpIGNvbnN0IHsKKyAgcmV0dXJu
IGZTaG9ydExlbmd0aCA9PSAwOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKy8vIFdyaXRlIGltcGxlbWVudGF0aW9uIG1ldGhvZHMKKy8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5saW5lIHZvaWQKK1VuaWNvZGVTdHJp
bmc6OnNldExlbmd0aChpbnQzMl90IGxlbikgeworICBpZihsZW4gPD0gMTI3KSB7CisgICAgZlNo
b3J0TGVuZ3RoID0gKGludDhfdClsZW47CisgIH0gZWxzZSB7CisgICAgZlNob3J0TGVuZ3RoID0g
KGludDhfdCktMTsKKyAgICBmVW5pb24uZkZpZWxkcy5mTGVuZ3RoID0gbGVuOworICB9Cit9CisK
K2lubGluZSB2b2lkCitVbmljb2RlU3RyaW5nOjpzZXRUb0VtcHR5KCkgeworICBmU2hvcnRMZW5n
dGggPSAwOworICBmRmxhZ3MgPSBrU2hvcnRTdHJpbmc7Cit9CisKK2lubGluZSB2b2lkCitVbmlj
b2RlU3RyaW5nOjpzZXRBcnJheShVQ2hhciAqYXJyYXksIGludDMyX3QgbGVuLCBpbnQzMl90IGNh
cGFjaXR5KSB7CisgIHNldExlbmd0aChsZW4pOworICBmVW5pb24uZkZpZWxkcy5mQXJyYXkgPSBh
cnJheTsKKyAgZlVuaW9uLmZGaWVsZHMuZkNhcGFjaXR5ID0gY2FwYWNpdHk7Cit9CisKK2lubGlu
ZSBjb25zdCBVQ2hhciAqCitVbmljb2RlU3RyaW5nOjpnZXRUZXJtaW5hdGVkQnVmZmVyKCkgewor
ICBpZighaXNXcml0YWJsZSgpKSB7CisgICAgcmV0dXJuIDA7CisgIH0gZWxzZSB7CisgICAgVUNo
YXIgKmFycmF5ID0gZ2V0QXJyYXlTdGFydCgpOworICAgIGludDMyX3QgbGVuID0gbGVuZ3RoKCk7
CisgICAgaWYobGVuIDwgZ2V0Q2FwYWNpdHkoKSAmJiAoKGZGbGFncyZrUmVmQ291bnRlZCkgPT0g
MCB8fCByZWZDb3VudCgpID09IDEpKSB7CisgICAgICAvKgorICAgICAgICoga1JlZkNvdW50ZWQ6
IERvIG5vdCB3cml0ZSB0aGUgTlVMIGlmIHRoZSBidWZmZXIgaXMgc2hhcmVkLgorICAgICAgICog
VGhhdCBpcyBtb3N0bHkgc2FmZSwgZXhjZXB0IHdoZW4gdGhlIGxlbmd0aCBvZiBvbmUgY29weSB3
YXMgbW9kaWZpZWQKKyAgICAgICAqIHdpdGhvdXQgY29weS1vbi13cml0ZSwgZS5nLiwgdmlhIHRy
dW5jYXRlKG5ld0xlbmd0aCkgb3IgcmVtb3ZlKHZvaWQpLgorICAgICAgICogVGhlbiB0aGUgTlVM
IHdvdWxkIGJlIHdyaXR0ZW4gaW50byB0aGUgbWlkZGxlIG9mIGFub3RoZXIgY29weSdzIHN0cmlu
Zy4KKyAgICAgICAqLworICAgICAgaWYoIShmRmxhZ3Mma0J1ZmZlcklzUmVhZG9ubHkpKSB7Cisg
ICAgICAgIC8qCisgICAgICAgICAqIFdlIG11c3Qgbm90IHdyaXRlIHRvIGEgcmVhZG9ubHkgYnVm
ZmVyLCBidXQgaXQgaXMga25vd24gdG8gYmUKKyAgICAgICAgICogTlVMLXRlcm1pbmF0ZWQgaWYg
bGVuPGNhcGFjaXR5LgorICAgICAgICAgKiBBIHNoYXJlZCwgYWxsb2NhdGVkIGJ1ZmZlciAocmVm
Q291bnQoKT4xKSBtdXN0IG5vdCBoYXZlIGl0cyBjb250ZW50cworICAgICAgICAgKiBtb2RpZmll
ZCwgYnV0IHRoZSBOVUwgYXQgW2xlbl0gaXMgYmV5b25kIHRoZSBzdHJpbmcgY29udGVudHMsCisg
ICAgICAgICAqIGFuZCBtdWx0aXBsZSBzdHJpbmcgb2JqZWN0cyBhbmQgdGhyZWFkcyB3cml0aW5n
IHRoZSBzYW1lIE5VTCBpbnRvIHRoZQorICAgICAgICAgKiBzYW1lIGxvY2F0aW9uIGlzIGhhcm1s
ZXNzLgorICAgICAgICAgKiBJbiBhbGwgb3RoZXIgY2FzZXMsIHRoZSBidWZmZXIgaXMgZnVsbHkg
d3JpdGFibGUgYW5kIGl0IGlzIGFueXdheSBzYWZlCisgICAgICAgICAqIHRvIHdyaXRlIHRoZSBO
VUwuCisgICAgICAgICAqCisgICAgICAgICAqIE5vdGU6IEFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0
aGlzIGNvZGUgdGVzdGVkIHdoZXRoZXIgdGhlcmUgaXMgYSBOVUwKKyAgICAgICAgICogYXQgW2xl
bl0gYWxyZWFkeSwgYnV0LCB3aGlsZSBzYWZlLCBpdCBnZW5lcmF0ZWQgbG90cyBvZiB3YXJuaW5n
cyBmcm9tCisgICAgICAgICAqIHRvb2xzIGxpa2UgdmFsZ3JpbmQgYW5kIFB1cmlmeS4KKyAgICAg
ICAgICovCisgICAgICAgIGFycmF5W2xlbl0gPSAwOworICAgICAgfQorICAgICAgcmV0dXJuIGFy
cmF5OworICAgIH0gZWxzZSBpZihjbG9uZUFycmF5SWZOZWVkZWQobGVuKzEpKSB7CisgICAgICBh
cnJheSA9IGdldEFycmF5U3RhcnQoKTsKKyAgICAgIGFycmF5W2xlbl0gPSAwOworICAgICAgcmV0
dXJuIGFycmF5OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH0KK30K
KworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcj0gKFVDaGFy
IGNoKQoreyByZXR1cm4gZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCAmY2gsIDAsIDEpOyB9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6b3BlcmF0b3I9IChVQ2hhcjMyIGNo
KQoreyByZXR1cm4gcmVwbGFjZSgwLCBsZW5ndGgoKSwgY2gpOyB9CisKK2lubGluZSBVbmljb2Rl
U3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0VG8oY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4
dCwKKyAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAorICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKQoreworICB1bkJvZ3VzKCk7CisgIHJldHVybiBkb1JlcGxhY2UoMCwgbGVuZ3Ro
KCksIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOworfQorCitpbmxpbmUgVW5pY29kZVN0
cmluZyYKK1VuaWNvZGVTdHJpbmc6OnNldFRvKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQs
CisgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCkKK3sKKyAgdW5Cb2d1cygpOworICBzcmNU
ZXh0LnBpbkluZGV4KHNyY1N0YXJ0KTsKKyAgcmV0dXJuIGRvUmVwbGFjZSgwLCBsZW5ndGgoKSwg
c3JjVGV4dCwgc3JjU3RhcnQsIHNyY1RleHQubGVuZ3RoKCkgLSBzcmNTdGFydCk7Cit9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0VG8oY29uc3QgVW5pY29kZVN0
cmluZyYgc3JjVGV4dCkKK3sKKyAgdW5Cb2d1cygpOworICByZXR1cm4gZG9SZXBsYWNlKDAsIGxl
bmd0aCgpLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsKK30KKworaW5saW5lIFVuaWNv
ZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisg
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7CisgIHVuQm9ndXMoKTsKKyAgcmV0dXJu
IGRvUmVwbGFjZSgwLCBsZW5ndGgoKSwgc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCk7Cit9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0VG8oVUNoYXIgc3JjQ2hhcikK
K3sKKyAgdW5Cb2d1cygpOworICByZXR1cm4gZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCAmc3JjQ2hh
ciwgMCwgMSk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6c2V0
VG8oVUNoYXIzMiBzcmNDaGFyKQoreworICB1bkJvZ3VzKCk7CisgIHJldHVybiByZXBsYWNlKDAs
IGxlbmd0aCgpLCBzcmNDaGFyKTsKK30KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2Rl
U3RyaW5nOjphcHBlbmQoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKKyAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCit7
IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCksIDAsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5n
dGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6YXBwZW5kKGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpCit7IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCks
IDAsIHNyY1RleHQsIDAsIHNyY1RleHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBVbmljb2RlU3Ry
aW5nJgorVW5pY29kZVN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpCit7IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCksIDAsIHNyY0NoYXJzLCBzcmNTdGFydCwg
c3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OmFw
cGVuZChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoKQoreyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCBzcmNDaGFycywgMCwgc3JjTGVu
Z3RoKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OmFwcGVuZChV
Q2hhciBzcmNDaGFyKQoreyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCAmc3JjQ2hhciwg
MCwgMSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjphcHBlbmQo
VUNoYXIzMiBzcmNDaGFyKSB7CisgIFVDaGFyIGJ1ZmZlcltVMTZfTUFYX0xFTkdUSF07CisgIGlu
dDMyX3QgX2xlbmd0aCA9IDA7CisgIFVCb29sIGlzRXJyb3IgPSBGQUxTRTsKKyAgVTE2X0FQUEVO
RChidWZmZXIsIF9sZW5ndGgsIFUxNl9NQVhfTEVOR1RILCBzcmNDaGFyLCBpc0Vycm9yKTsKKyAg
cmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgYnVmZmVyLCAwLCBfbGVuZ3RoKTsKK30KKwor
aW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcis9IChVQ2hhciBj
aCkKK3sgcmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgJmNoLCAwLCAxKTsgfQorCitpbmxp
bmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6Om9wZXJhdG9yKz0gKFVDaGFyMzIgY2gp
IHsKKyAgcmV0dXJuIGFwcGVuZChjaCk7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5p
Y29kZVN0cmluZzo6b3BlcmF0b3IrPSAoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKK3sg
cmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgo
KSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjppbnNlcnQoaW50
MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwK
KyAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJfdCBz
cmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIHNyY1N0YXJ0
LCBzcmNMZW5ndGgpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6
aW5zZXJ0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIDAsIHNyY1Rl
eHQubGVuZ3RoKCkpOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6
aW5zZXJ0KGludDMyX3Qgc3RhcnQsCisgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFy
cywKKyAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY0NoYXJzLCBzcmNT
dGFydCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJp
bmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoreyByZXR1cm4gZG9SZXBs
YWNlKHN0YXJ0LCAwLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQorCitpbmxpbmUgVW5pY29k
ZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAorICAgICAgICAg
ICAgICBVQ2hhciBzcmNDaGFyKQoreyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCAwLCAmc3JjQ2hh
ciwgMCwgMSk7IH0KKworaW5saW5lIFVuaWNvZGVTdHJpbmcmCitVbmljb2RlU3RyaW5nOjppbnNl
cnQoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgVUNoYXIzMiBzcmNDaGFyKQoreyByZXR1
cm4gcmVwbGFjZShzdGFydCwgMCwgc3JjQ2hhcik7IH0KKworCitpbmxpbmUgVW5pY29kZVN0cmlu
ZyYKK1VuaWNvZGVTdHJpbmc6OnJlbW92ZSgpCit7CisgIC8vIHJlbW92ZSgpIG9mIGEgYm9ndXMg
c3RyaW5nIG1ha2VzIHRoZSBzdHJpbmcgZW1wdHkgYW5kIG5vbi1ib2d1cworICAvLyB3ZSBhbHNv
IHVuLWFsaWFzIGEgcmVhZC1vbmx5IGFsaWFzIHRvIGRlYWwgd2l0aCBOVUwtdGVybWluYXRpb24K
KyAgLy8gaXNzdWVzIHdpdGggZ2V0VGVybWluYXRlZEJ1ZmZlcigpCisgIGlmKGZGbGFncyAmIChr
SXNCb2d1c3xrQnVmZmVySXNSZWFkb25seSkpIHsKKyAgICBzZXRUb0VtcHR5KCk7CisgIH0gZWxz
ZSB7CisgICAgZlNob3J0TGVuZ3RoID0gMDsKKyAgfQorICByZXR1cm4gKnRoaXM7Cit9CisKK2lu
bGluZSBVbmljb2RlU3RyaW5nJgorVW5pY29kZVN0cmluZzo6cmVtb3ZlKGludDMyX3Qgc3RhcnQs
CisgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKQoreworICAgIGlmKHN0YXJ0IDw9IDAgJiYg
X2xlbmd0aCA9PSBJTlQzMl9NQVgpIHsKKyAgICAgICAgLy8gcmVtb3ZlKGd1YXJhbnRlZWQgZXZl
cnl0aGluZykgb2YgYSBib2d1cyBzdHJpbmcgbWFrZXMgdGhlIHN0cmluZyBlbXB0eSBhbmQgbm9u
LWJvZ3VzCisgICAgICAgIHJldHVybiByZW1vdmUoKTsKKyAgICB9CisgICAgcmV0dXJuIGRvUmVw
bGFjZShzdGFydCwgX2xlbmd0aCwgTlVMTCwgMCwgMCk7Cit9CisKK2lubGluZSBVbmljb2RlU3Ry
aW5nJgorVW5pY29kZVN0cmluZzo6cmVtb3ZlQmV0d2VlbihpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICAgIGludDMyX3QgbGltaXQpCit7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxpbWl0
IC0gc3RhcnQsIE5VTEwsIDAsIDApOyB9CisKK2lubGluZSBVbmljb2RlU3RyaW5nICYKK1VuaWNv
ZGVTdHJpbmc6OnJldGFpbkJldHdlZW4oaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCkgewor
ICB0cnVuY2F0ZShsaW1pdCk7CisgIHJldHVybiBkb1JlcGxhY2UoMCwgc3RhcnQsIE5VTEwsIDAs
IDApOworfQorCitpbmxpbmUgVUJvb2wKK1VuaWNvZGVTdHJpbmc6OnRydW5jYXRlKGludDMyX3Qg
dGFyZ2V0TGVuZ3RoKQoreworICBpZihpc0JvZ3VzKCkgJiYgdGFyZ2V0TGVuZ3RoID09IDApIHsK
KyAgICAvLyB0cnVuY2F0ZSgwKSBvZiBhIGJvZ3VzIHN0cmluZyBtYWtlcyB0aGUgc3RyaW5nIGVt
cHR5IGFuZCBub24tYm9ndXMKKyAgICB1bkJvZ3VzKCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9
IGVsc2UgaWYoKHVpbnQzMl90KXRhcmdldExlbmd0aCA8ICh1aW50MzJfdClsZW5ndGgoKSkgewor
ICAgIHNldExlbmd0aCh0YXJnZXRMZW5ndGgpOworICAgIGlmKGZGbGFncyZrQnVmZmVySXNSZWFk
b25seSkgeworICAgICAgZlVuaW9uLmZGaWVsZHMuZkNhcGFjaXR5ID0gdGFyZ2V0TGVuZ3RoOyAg
Ly8gbm90IE5VTC10ZXJtaW5hdGVkIGFueSBtb3JlCisgICAgfQorICAgIHJldHVybiBUUlVFOwor
ICB9IGVsc2UgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCitpbmxpbmUgVW5pY29kZVN0
cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJldmVyc2UoKQoreyByZXR1cm4gZG9SZXZlcnNlKDAsIGxl
bmd0aCgpKTsgfQorCitpbmxpbmUgVW5pY29kZVN0cmluZyYKK1VuaWNvZGVTdHJpbmc6OnJldmVy
c2UoaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkKK3sgcmV0
dXJuIGRvUmV2ZXJzZShzdGFydCwgX2xlbmd0aCk7IH0KKworVV9OQU1FU1BBQ0VfRU5ECisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3VudW0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bnVtLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTEwMmJhYjU4YjNkMWJiMmUyYjIwODJjYjU1ODljNWRkZWZlOGNjMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91bnVtLmgKQEAgLTAsMCArMSw5
OTkgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ny0y
MDEwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhl
cnMuCisqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIE1vZGlmaWNhdGlvbiBIaXN0b3J5OgorKgor
KiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMDYvMjQvOTkgICAg
aGVsZW5hICAgICAgSW50ZWdyYXRlZCBBbGFuJ3MgTkYgZW5oYW5jZW1lbnRzIGFuZCBKYXZhMiBi
dWcgZml4ZXMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyNpZm5kZWYgX1VOVU0KKyNk
ZWZpbmUgX1VOVU0KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisKKyNpZiAhVUNPTkZJ
R19OT19GT1JNQVRUSU5HCisKKyNpbmNsdWRlICJ1bmljb2RlL2xvY2FscG9pbnRlci5oIgorI2lu
Y2x1ZGUgInVuaWNvZGUvdWxvYy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdW1pc2MuaCIKKyNpbmNs
dWRlICJ1bmljb2RlL3BhcnNlZXJyLmgiCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6
IE51bWJlckZvcm1hdAorICoKKyAqIDxoMj4gTnVtYmVyIEZvcm1hdCBDIEFQSSA8L2gyPgorICoK
KyAqIE51bWJlciBGb3JtYXQgQyBBUEkgIFByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IKKyAqIGZvcm1h
dHRpbmcgYW5kIHBhcnNpbmcgYSBudW1iZXIuICBBbHNvIHByb3ZpZGVzIG1ldGhvZHMgZm9yCisg
KiBkZXRlcm1pbmluZyB3aGljaCBsb2NhbGVzIGhhdmUgbnVtYmVyIGZvcm1hdHMsIGFuZCB3aGF0
IHRoZWlyIG5hbWVzCisgKiBhcmUuCisgKiA8UD4KKyAqIFVOdW1iZXJGb3JtYXQgaGVscHMgeW91
IHRvIGZvcm1hdCBhbmQgcGFyc2UgbnVtYmVycyBmb3IgYW55IGxvY2FsZS4KKyAqIFlvdXIgY29k
ZSBjYW4gYmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgbG9jYWxlIGNvbnZlbnRpb25z
CisgKiBmb3IgZGVjaW1hbCBwb2ludHMsIHRob3VzYW5kcy1zZXBhcmF0b3JzLCBvciBldmVuIHRo
ZSBwYXJ0aWN1bGFyCisgKiBkZWNpbWFsIGRpZ2l0cyB1c2VkLCBvciB3aGV0aGVyIHRoZSBudW1i
ZXIgZm9ybWF0IGlzIGV2ZW4gZGVjaW1hbC4KKyAqIFRoZXJlIGFyZSBkaWZmZXJlbnQgbnVtYmVy
IGZvcm1hdCBzdHlsZXMgbGlrZSBkZWNpbWFsLCBjdXJyZW5jeSwKKyAqIHBlcmNlbnQgYW5kIHNw
ZWxsb3V0LgorICogPFA+CisgKiBUbyBmb3JtYXQgYSBudW1iZXIgZm9yIHRoZSBjdXJyZW50IExv
Y2FsZSwgdXNlIG9uZSBvZiB0aGUgc3RhdGljCisgKiBmYWN0b3J5IG1ldGhvZHM6CisgKiA8cHJl
PgorICogXGNvZGUKKyAqICAgIFVDaGFyIG15U3RyaW5nWzIwXTsKKyAqICAgIGRvdWJsZSBteU51
bWJlciA9IDcuMDsKKyAqICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICog
ICAgVU51bWJlckZvcm1hdCogbmYgPSB1bnVtX29wZW4oVU5VTV9ERUZBVUxULCBOVUxMLCAtMSwg
TlVMTCwgTlVMTCwgJnN0YXR1cyk7CisgKiAgICB1bnVtX2Zvcm1hdERvdWJsZShuZiwgbXlOdW1i
ZXIsIG15U3RyaW5nLCAyMCwgTlVMTCwgJnN0YXR1cyk7CisgKiAgICBwcmludGYoIiBFeGFtcGxl
IDE6ICVzXG4iLCBhdXN0cmR1cChteVN0cmluZykgKTsgLy9hdXN0cmR1cCggYSBmdW5jdGlvbiB1
c2VkIHRvIGNvbnZlcnQgVUNoYXIqIHRvIGNoYXIqKQorICogXGVuZGNvZGUKKyAqIDwvcHJlPgor
ICogSWYgeW91IGFyZSBmb3JtYXR0aW5nIG11bHRpcGxlIG51bWJlcnMsIGl0IGlzIG1vcmUgZWZm
aWNpZW50IHRvIGdldAorICogdGhlIGZvcm1hdCBhbmQgdXNlIGl0IG11bHRpcGxlIHRpbWVzIHNv
IHRoYXQgdGhlIHN5c3RlbSBkb2Vzbid0CisgKiBoYXZlIHRvIGZldGNoIHRoZSBpbmZvcm1hdGlv
biBhYm91dCB0aGUgbG9jYWwgbGFuZ3VhZ2UgYW5kIGNvdW50cnkKKyAqIGNvbnZlbnRpb25zIG11
bHRpcGxlIHRpbWVzLgorICogPHByZT4KKyAqIFxjb2RlCisgKiB1aW50MzJfdCBpLCByZXN1bHRs
ZW5ndGgsIHJlc2xlbm5lZWRlZDsKKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICogVUZpZWxkUG9zaXRpb24gcG9zOworICogdWludDMyX3QgYVtdID0geyAxMjMsIDMzMzMs
IC0xMjM0NTY3IH07CisgKiBjb25zdCB1aW50MzJfdCBhX2xlbiA9IHNpemVvZihhKSAvIHNpemVv
ZihhWzBdKTsKKyAqIFVOdW1iZXJGb3JtYXQqIG5mOworICogVUNoYXIqIHJlc3VsdCA9IE5VTEw7
CisgKgorICogbmYgPSB1bnVtX29wZW4oVU5VTV9ERUZBVUxULCBOVUxMLCAtMSwgTlVMTCwgTlVM
TCwgJnN0YXR1cyk7CisgKiBmb3IgKGkgPSAwOyBpIDwgYV9sZW47IGkrKykgeworICogICAgcmVz
dWx0bGVuZ3RoPTA7CisgKiAgICByZXNsZW5uZWVkZWQ9dW51bV9mb3JtYXQobmYsIGFbaV0sIE5V
TEwsIHJlc3VsdGxlbmd0aCwgJnBvcywgJnN0YXR1cyk7CisgKiAgICByZXN1bHQgPSBOVUxMOwor
ICogICAgaWYoc3RhdHVzPT1VX0JVRkZFUl9PVkVSRkxPV19FUlJPUil7CisgKiAgICAgICBzdGF0
dXM9VV9aRVJPX0VSUk9SOworICogICAgICAgcmVzdWx0bGVuZ3RoPXJlc2xlbm5lZWRlZCsxOwor
ICogICAgICAgcmVzdWx0PShVQ2hhciopbWFsbG9jKHNpemVvZihVQ2hhcikgKiByZXN1bHRsZW5n
dGgpOworICogICAgICAgdW51bV9mb3JtYXQobmYsIGFbaV0sIHJlc3VsdCwgcmVzdWx0bGVuZ3Ro
LCAmcG9zLCAmc3RhdHVzKTsKKyAqICAgIH0KKyAqICAgIHByaW50ZiggIiBFeGFtcGxlIDI6ICVz
XG4iLCBhdXN0cmR1cChyZXN1bHQpKTsKKyAqICAgIGZyZWUocmVzdWx0KTsKKyAqIH0KKyAqIFxl
bmRjb2RlCisgKiA8L3ByZT4KKyAqIFRvIGZvcm1hdCBhIG51bWJlciBmb3IgYSBkaWZmZXJlbnQg
TG9jYWxlLCBzcGVjaWZ5IGl0IGluIHRoZQorICogY2FsbCB0byB1bnVtX29wZW4oKS4KKyAqIDxw
cmU+CisgKiBcY29kZQorICogICAgIFVOdW1iZXJGb3JtYXQqIG5mID0gdW51bV9vcGVuKFVOVU1f
REVGQVVMVCwgTlVMTCwgLTEsICJmcl9GUiIsIE5VTEwsICZzdWNjZXNzKQorICogXGVuZGNvZGUK
KyAqIDwvcHJlPgorICogWW91IGNhbiB1c2UgYSBOdW1iZXJGb3JtYXQgQVBJIHVudW1fcGFyc2Uo
KSB0byBwYXJzZS4KKyAqIDxwcmU+CisgKiBcY29kZQorICogICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CisgKiAgICBpbnQzMl90IHBvcz0wOworICogICAgaW50MzJfdCBudW07
CisgKiAgICBudW0gPSB1bnVtX3BhcnNlKG5mLCBzdHIsIHVfc3RybGVuKHN0ciksICZwb3MsICZz
dGF0dXMpOworICogXGVuZGNvZGUKKyAqIDwvcHJlPgorICogVXNlIFVOVU1fREVDSU1BTCB0byBn
ZXQgdGhlIG5vcm1hbCBudW1iZXIgZm9ybWF0IGZvciB0aGF0IGNvdW50cnkuCisgKiBUaGVyZSBh
cmUgb3RoZXIgc3RhdGljIG9wdGlvbnMgYXZhaWxhYmxlLiAgVXNlIFVOVU1fQ1VSUkVOQ1kKKyAq
IHRvIGdldCB0aGUgY3VycmVuY3kgbnVtYmVyIGZvcm1hdCBmb3IgdGhhdCBjb3VudHJ5LiAgVXNl
IFVOVU1fUEVSQ0VOVAorICogdG8gZ2V0IGEgZm9ybWF0IGZvciBkaXNwbGF5aW5nIHBlcmNlbnRh
Z2VzLiBXaXRoIHRoaXMgZm9ybWF0LCBhCisgKiBmcmFjdGlvbiBmcm9tIDAuNTMgaXMgZGlzcGxh
eWVkIGFzIDUzJS4KKyAqIDxQPgorICogVXNlIGEgcGF0dGVybiB0byBjcmVhdGUgZWl0aGVyIGEg
RGVjaW1hbEZvcm1hdCBvciBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdAorICogZm9ybWF0dGVyLiAg
VGhlIHBhdHRlcm4gbXVzdCBjb25mb3JtIHRvIHRoZSBzeW50YXggZGVmaW5lZCBmb3IgdGhvc2UK
KyAqIGZvcm1hdHRlcnMuCisgKiA8UD4KKyAqIFlvdSBjYW4gYWxzbyBjb250cm9sIHRoZSBkaXNw
bGF5IG9mIG51bWJlcnMgd2l0aCBzdWNoIGZ1bmN0aW9uIGFzCisgKiB1bnVtX2dldEF0dHJpYnVl
cygpIGFuZCB1bnVtX3NldEF0cmlidXRlcygpLCB3aGljaCBsZXQgeW91IHNldCB0aGUKKyAqIG1p
bWludW0gZnJhY3Rpb24gZGlnaXRzLCBncm91cGluZywgZXRjLgorICogQHNlZSBVTnVtYmVyRm9y
bWF0QXR0cmlidXRlcyBmb3IgbW9yZSBkZXRhaWxzCisgKiA8UD4KKyAqIFlvdSBjYW4gYWxzbyB1
c2UgZm9ybXMgb2YgdGhlIHBhcnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCisgKiBQYXJzZVBv
c2l0aW9uIGFuZCBVRmllbGRQb3NpdGlvbiB0byBhbGxvdyB5b3UgdG86CisgKiA8dWwgdHlwZT1y
b3VuZD4KKyAqICAgPGxpPihhKSBwcm9ncmVzc2l2ZWx5IHBhcnNlIHRocm91Z2ggcGllY2VzIG9m
IGEgc3RyaW5nLgorICogICA8bGk+KGIpIGFsaWduIHRoZSBkZWNpbWFsIHBvaW50IGFuZCBvdGhl
ciBhcmVhcy4KKyAqIDwvdWw+CisgKiA8cD4KKyAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY2hh
bmdlIG9yIHNldCB0aGUgc3ltYm9scyB1c2VkIGZvciBhIHBhcnRpY3VsYXIKKyAqIGxvY2FsZSBs
aWtlIHRoZSBjdXJyZW5jeSBzeW1ib2wsIHRoZSBncm91cGluZyBzZXBlcmF0b3IgLCBtb25ldGFy
eSBzZXBlcmF0b3IKKyAqIGV0YyBieSBtYWtpbmcgdXNlIG9mIGZ1bmN0aW9ucyB1bnVtX3NldFN5
bWJvbHMoKSBhbmQgdW51bV9nZXRTeW1ib2xzKCkuCisgKi8KKworLyoqIEEgbnVtYmVyIGZvcm1h
dHRlci4KKyAqICBGb3IgdXNhZ2UgaW4gQyBwcm9ncmFtcy4KKyAqICBAc3RhYmxlIElDVSAyLjAK
KyAqLwordHlwZWRlZiB2b2lkKiBVTnVtYmVyRm9ybWF0OworCisvKiogVGhlIHBvc3NpYmxlIG51
bWJlciBmb3JtYXQgc3R5bGVzLiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBl
bnVtIFVOdW1iZXJGb3JtYXRTdHlsZSB7CisgICAgLyoqCisgICAgICogRGVjaW1hbCBmb3JtYXQg
ZGVmaW5lZCBieSBwYXR0ZXJuIAorICAgICAqIEBzdGFibGUgSUNVIDMuMAorICAgICAqLworICAg
IFVOVU1fUEFUVEVSTl9ERUNJTUFMPTAsCisgICAgLyoqIERlY2ltYWwgZm9ybWF0ICovCisgICAg
VU5VTV9ERUNJTUFMPTEsCisgICAgLyoqIEN1cnJlbmN5IGZvcm1hdCAqLworICAgIFVOVU1fQ1VS
UkVOQ1ksCisgICAgLyoqIFBlcmNlbnQgZm9ybWF0ICovCisgICAgVU5VTV9QRVJDRU5ULAorICAg
IC8qKiBTY2llbnRpZmljIGZvcm1hdCAqLworICAgIFVOVU1fU0NJRU5USUZJQywKKyAgICAvKiog
U3BlbGxvdXQgcnVsZS1iYXNlZCBmb3JtYXQgKi8KKyAgICBVTlVNX1NQRUxMT1VULAorICAgIC8q
KiAKKyAgICAgKiBPcmRpbmFsIHJ1bGUtYmFzZWQgZm9ybWF0IAorICAgICAqIEBzdGFibGUgSUNV
IDMuMAorICAgICAqLworICAgIFVOVU1fT1JESU5BTCwKKyAgICAvKiogCisgICAgICogRHVyYXRp
b24gcnVsZS1iYXNlZCBmb3JtYXQgCisgICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAgICovCisg
ICAgVU5VTV9EVVJBVElPTiwKKyAgICAvKiogCisgICAgICogTnVtYmVyaW5nIHN5c3RlbSBydWxl
LWJhc2VkIGZvcm1hdCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjIKKyAgICAgKi8KKyAgICBVTlVN
X05VTUJFUklOR19TWVNURU0sCisgICAgLyoqIAorICAgICAqIFJ1bGUtYmFzZWQgZm9ybWF0IGRl
ZmluZWQgYnkgcGF0dGVybiAKKyAgICAgKiBAc3RhYmxlIElDVSAzLjAKKyAgICAgKi8KKyAgICBV
TlVNX1BBVFRFUk5fUlVMRUJBU0VELAorICAgIC8qKiBEZWZhdWx0IGZvcm1hdCAqLworICAgIFVO
VU1fREVGQVVMVCA9IFVOVU1fREVDSU1BTCwKKyAgICAvKiogKEFsaWFzIGZvciBVTlVNX1BBVFRF
Uk5fREVDSU1BTCkgKi8KKyAgICBVTlVNX0lHTk9SRSA9IFVOVU1fUEFUVEVSTl9ERUNJTUFMCit9
IFVOdW1iZXJGb3JtYXRTdHlsZTsKKworLyoqIFRoZSBwb3NzaWJsZSBudW1iZXIgZm9ybWF0IHJv
dW5kaW5nIG1vZGVzLiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRlZiBlbnVtIFVO
dW1iZXJGb3JtYXRSb3VuZGluZ01vZGUgeworICAgIFVOVU1fUk9VTkRfQ0VJTElORywKKyAgICBV
TlVNX1JPVU5EX0ZMT09SLAorICAgIFVOVU1fUk9VTkRfRE9XTiwKKyAgICBVTlVNX1JPVU5EX1VQ
LAorICAgIC8qKgorICAgICAqIEhhbGYtZXZlbiByb3VuZGluZywgbWlzc3BlbGxlZCBuYW1lCisg
ICAgICogQGRlcHJlY2F0ZWQsIElDVSAzLjgKKyAgICAgKi8KKyAgICBVTlVNX0ZPVU5EX0hBTEZF
VkVOLAorICAgIFVOVU1fUk9VTkRfSEFMRkRPV04sCisgICAgVU5VTV9ST1VORF9IQUxGVVAsCisg
ICAgLyoqCisgICAgICogSGFsZi1ldmVuIHJvdW5kaW5nCisgICAgICogQHN0YWJsZSwgSUNVIDMu
OAorICAgICAqLworICAgIFVOVU1fUk9VTkRfSEFMRkVWRU4gPSBVTlVNX0ZPVU5EX0hBTEZFVkVO
Cit9IFVOdW1iZXJGb3JtYXRSb3VuZGluZ01vZGU7CisKKy8qKiBUaGUgcG9zc2libGUgbnVtYmVy
IGZvcm1hdCBwYWQgcG9zaXRpb25zLiAKKyAqICBAc3RhYmxlIElDVSAyLjAKKyAqLwordHlwZWRl
ZiBlbnVtIFVOdW1iZXJGb3JtYXRQYWRQb3NpdGlvbiB7CisgICAgVU5VTV9QQURfQkVGT1JFX1BS
RUZJWCwKKyAgICBVTlVNX1BBRF9BRlRFUl9QUkVGSVgsCisgICAgVU5VTV9QQURfQkVGT1JFX1NV
RkZJWCwKKyAgICBVTlVNX1BBRF9BRlRFUl9TVUZGSVgKK30gVU51bWJlckZvcm1hdFBhZFBvc2l0
aW9uOworCisvKioKKyAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IFVOdW1iZXJGb3JtYXQgZm9y
IGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcKKyAqIG51bWJlcnMuICBBIFVOdW1iZXJGb3JtYXQgbWF5
IGJlIHVzZWQgdG8gZm9ybWF0IG51bWJlcnMgYnkgY2FsbGluZworICoge0BsaW5rICN1bnVtX2Zv
cm1hdCB9LCBhbmQgdG8gcGFyc2UgbnVtYmVycyBieSBjYWxsaW5nIHtAbGluayAjdW51bV9wYXJz
ZSB9LgorICogVGhlIGNhbGxlciBtdXN0IGNhbGwge0BsaW5rICN1bnVtX2Nsb3NlIH0gd2hlbiBk
b25lIHRvIHJlbGVhc2UgcmVzb3VyY2VzCisgKiB1c2VkIGJ5IHRoaXMgb2JqZWN0LgorICogQHBh
cmFtIHN0eWxlIFRoZSB0eXBlIG9mIG51bWJlciBmb3JtYXQgdG8gb3Blbjogb25lIG9mCisgKiBV
TlVNX0RFQ0lNQUwsIFVOVU1fQ1VSUkVOQ1ksIFVOVU1fUEVSQ0VOVCwgVU5VTV9TQ0lFTlRJRklD
LCBVTlVNX1NQRUxMT1VULAorICogVU5VTV9QQVRURVJOX0RFQ0lNQUwsIFVOVU1fUEFUVEVSTl9S
VUxFQkFTRUQsIG9yIFVOVU1fREVGQVVMVC4KKyAqIElmIFVOVU1fUEFUVEVSTl9ERUNJTUFMIG9y
IFVOVU1fUEFUVEVSTl9SVUxFQkFTRUQgaXMgcGFzc2VkIHRoZW4gdGhlCisgKiBudW1iZXIgZm9y
bWF0IGlzIG9wZW5lZCB1c2luZyB0aGUgZ2l2ZW4gcGF0dGVybiwgd2hpY2ggbXVzdCBjb25mb3Jt
CisgKiB0byB0aGUgc3ludGF4IGRlc2NyaWJlZCBpbiBEZWNpbWFsRm9ybWF0IG9yIFJ1bGVCYXNl
ZE51bWJlckZvcm1hdCwKKyAqIHJlc3BlY3RpdmVseS4KKyAqIEBwYXJhbSBwYXR0ZXJuIEEgcGF0
dGVybiBzcGVjaWZ5aW5nIHRoZSBmb3JtYXQgdG8gdXNlLiAKKyAqIFRoaXMgcGFyYW1ldGVyIGlz
IGlnbm9yZWQgdW5sZXNzIHRoZSBzdHlsZSBpcworICogVU5VTV9QQVRURVJOX0RFQ0lNQUwgb3Ig
VU5VTV9QQVRURVJOX1JVTEVCQVNFRC4KKyAqIEBwYXJhbSBwYXR0ZXJuTGVuZ3RoIFRoZSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybiwgb3IgLTEKKyAqIGlmIG51bGwtdGVybWlu
YXRlZC4gVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCB1bmxlc3MgdGhlIHN0eWxlIGlzCisgKiBV
TlVNX1BBVFRFUk4uCisgKiBAcGFyYW0gbG9jYWxlIEEgbG9jYWxlIGlkZW50aWZpZXIgdG8gdXNl
IHRvIGRldGVybWluZSBmb3JtYXR0aW5nCisgKiBhbmQgcGFyc2luZyBjb252ZW50aW9ucywgb3Ig
TlVMTCB0byB1c2UgdGhlIGRlZmF1bHQgbG9jYWxlLgorICogQHBhcmFtIHBhcnNlRXJyIEEgcG9p
bnRlciB0byBhIFVQYXJzZUVycm9yIHN0cnVjdCB0byByZWNlaXZlIHRoZQorICogZGV0YWlscyBv
ZiBhbnkgcGFyc2luZyBlcnJvcnMsIG9yIE5VTEwgaWYgbm8gcGFyc2luZyBlcnJvciBkZXRhaWxz
CisgKiBhcmUgZGVzaXJlZC4KKyAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIGlucHV0
LW91dHB1dCBVRXJyb3JDb2RlLgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gYSBuZXdseSBjcmVh
dGVkIFVOdW1iZXJGb3JtYXQsIG9yIE5VTEwgaWYgYW4KKyAqIGVycm9yIG9jY3VycmVkLgorICog
QHNlZSB1bnVtX2Nsb3NlCisgKiBAc2VlIERlY2ltYWxGb3JtYXQKKyAqIEBzdGFibGUgSUNVIDIu
MAorICovCitVX1NUQUJMRSBVTnVtYmVyRm9ybWF0KiBVX0VYUE9SVDIgCit1bnVtX29wZW4oICBV
TnVtYmVyRm9ybWF0U3R5bGUgICAgc3R5bGUsCisgICAgICAgICAgICBjb25zdCAgICBVQ2hhciog
ICAgcGF0dGVybiwKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICAgICBwYXR0ZXJuTGVuZ3Ro
LAorICAgICAgICAgICAgY29uc3QgICAgY2hhciogICAgIGxvY2FsZSwKKyAgICAgICAgICAgIFVQ
YXJzZUVycm9yKiAgICAgICBwYXJzZUVyciwKKyAgICAgICAgICAgIFVFcnJvckNvZGUqICAgICAg
ICBzdGF0dXMpOworCisKKy8qKgorKiBDbG9zZSBhIFVOdW1iZXJGb3JtYXQuCisqIE9uY2UgY2xv
c2VkLCBhIFVOdW1iZXJGb3JtYXQgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFyYW0gZm10
IFRoZSBmb3JtYXR0ZXIgdG8gY2xvc2UuCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyIAordW51bV9jbG9zZShVTnVtYmVyRm9ybWF0KiBmbXQpOworCisjaWYg
VV9TSE9XX0NQTFVTUExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xh
c3MgTG9jYWxVTnVtYmVyRm9ybWF0UG9pbnRlcgorICogIlNtYXJ0IHBvaW50ZXIiIGNsYXNzLCBj
bG9zZXMgYSBVTnVtYmVyRm9ybWF0IHZpYSB1bnVtX2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRo
b2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9j
YWxQb2ludGVyQmFzZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAor
ICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVTnVtYmVyRm9ybWF0UG9pbnRl
ciwgVU51bWJlckZvcm1hdCwgdW51bV9jbG9zZSk7CisKK1VfTkFNRVNQQUNFX0VORAorCisjZW5k
aWYKKworLyoqCisgKiBPcGVuIGEgY29weSBvZiBhIFVOdW1iZXJGb3JtYXQuCisgKiBUaGlzIGZ1
bmN0aW9uIHBlcmZvcm1zIGEgZGVlcCBjb3B5LgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0IHRv
IGNvcHkKKyAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVj
ZWl2ZSBhbnkgZXJyb3JzLgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gYSBVTnVtYmVyRm9ybWF0
IGlkZW50aWNhbCB0byBmbXQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVU51
bWJlckZvcm1hdCogVV9FWFBPUlQyIAordW51bV9jbG9uZShjb25zdCBVTnVtYmVyRm9ybWF0ICpm
bXQsCisgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworLyoqCisqIEZvcm1hdCBhbiBpbnRl
Z2VyIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KKyogVGhlIGludGVnZXIgd2lsbCBiZSBmb3JtYXR0
ZWQgYWNjb3JkaW5nIHRvIHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBAcGFyYW0gZm10
IFRoZSBmb3JtYXR0ZXIgdG8gdXNlLgorKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9y
bWF0LgorKiBAcGFyYW0gcmVzdWx0IEEgcG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZlIHRo
ZSBmb3JtYXR0ZWQgbnVtYmVyLgorKiBAcGFyYW0gcmVzdWx0TGVuZ3RoIFRoZSBtYXhpbXVtIHNp
emUgb2YgcmVzdWx0LgorKiBAcGFyYW0gcG9zICAgIEEgcG9pbnRlciB0byBhIFVGaWVsZFBvc2l0
aW9uLiAgT24gaW5wdXQsIHBvc2l0aW9uLT5maWVsZAorKiBpcyByZWFkLiAgT24gb3V0cHV0LCBw
b3NpdGlvbi0+YmVnaW5JbmRleCBhbmQgcG9zaXRpb24tPmVuZEluZGV4IGluZGljYXRlCisqIHRo
ZSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpbmRpY2VzIG9mIGZpZWxkIG51bWJlciBwb3NpdGlvbi0+
ZmllbGQsIGlmIHN1Y2gKKyogYSBmaWVsZCBleGlzdHMuICBUaGlzIHBhcmFtZXRlciBtYXkgYmUg
TlVMTCwgaW4gd2hpY2ggY2FzZSBubyBmaWVsZAorKiBAcGFyYW0gc3RhdHVzIEEgcG9pbnRlciB0
byBhbiBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycworKiBAcmV0dXJuIFRoZSB0b3Rh
bCBidWZmZXIgc2l6ZSBuZWVkZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1bHRMZW5ndGgsIHRoZSBv
dXRwdXQgd2FzIHRydW5jYXRlZC4KKyogQHNlZSB1bnVtX2Zvcm1hdEludDY0CisqIEBzZWUgdW51
bV9mb3JtYXREb3VibGUKKyogQHNlZSB1bnVtX3BhcnNlCisqIEBzZWUgdW51bV9wYXJzZUludDY0
CisqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIFVGaWVsZFBvc2l0aW9uCisqIEBzdGFi
bGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9mb3JtYXQo
ICAgIGNvbnN0ICAgIFVOdW1iZXJGb3JtYXQqICAgIGZtdCwKKyAgICAgICAgaW50MzJfdCAgICAg
ICAgICAgIG51bWJlciwKKyAgICAgICAgVUNoYXIqICAgICAgICAgICAgcmVzdWx0LAorICAgICAg
ICBpbnQzMl90ICAgICAgICAgICAgcmVzdWx0TGVuZ3RoLAorICAgICAgICBVRmllbGRQb3NpdGlv
biAgICAqcG9zLAorICAgICAgICBVRXJyb3JDb2RlKiAgICAgICAgc3RhdHVzKTsKKworLyoqCisq
IEZvcm1hdCBhbiBpbnQ2NCB1c2luZyBhIFVOdW1iZXJGb3JtYXQuCisqIFRoZSBpbnQ2NCB3aWxs
IGJlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisq
IEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBwYXJhbSBudW1iZXIgVGhlIG51
bWJlciB0byBmb3JtYXQuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRv
IHJlY2VpdmUgdGhlIGZvcm1hdHRlZCBudW1iZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhl
IG1heGltdW0gc2l6ZSBvZiByZXN1bHQuCisqIEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEg
VUZpZWxkUG9zaXRpb24uICBPbiBpbnB1dCwgcG9zaXRpb24tPmZpZWxkCisqIGlzIHJlYWQuICBP
biBvdXRwdXQsIHBvc2l0aW9uLT5iZWdpbkluZGV4IGFuZCBwb3NpdGlvbi0+ZW5kSW5kZXggaW5k
aWNhdGUKKyogdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nIGluZGljZXMgb2YgZmllbGQgbnVtYmVy
IHBvc2l0aW9uLT5maWVsZCwgaWYgc3VjaAorKiBhIGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1l
dGVyIG1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIGZpZWxkCisqIEBwYXJhbSBzdGF0dXMg
QSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1
cm4gVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExl
bmd0aCwgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBz
ZWUgdW51bV9mb3JtYXREb3VibGUKKyogQHNlZSB1bnVtX3BhcnNlCisqIEBzZWUgdW51bV9wYXJz
ZUludDY0CisqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIFVGaWVsZFBvc2l0aW9uCisq
IEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9m
b3JtYXRJbnQ2NChjb25zdCBVTnVtYmVyRm9ybWF0ICpmbXQsCisgICAgICAgIGludDY0X3QgICAg
ICAgICBudW1iZXIsCisgICAgICAgIFVDaGFyKiAgICAgICAgICByZXN1bHQsCisgICAgICAgIGlu
dDMyX3QgICAgICAgICByZXN1bHRMZW5ndGgsCisgICAgICAgIFVGaWVsZFBvc2l0aW9uICpwb3Ms
CisgICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisvKioKKyogRm9ybWF0IGEgZG91
YmxlIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KKyogVGhlIGRvdWJsZSB3aWxsIGJlIGZvcm1hdHRl
ZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisqIEBwYXJhbSBmbXQg
VGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3Jt
YXQuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhl
IGZvcm1hdHRlZCBudW1iZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhlIG1heGltdW0gc2l6
ZSBvZiByZXN1bHQuCisqIEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEgVUZpZWxkUG9zaXRp
b24uICBPbiBpbnB1dCwgcG9zaXRpb24tPmZpZWxkCisqIGlzIHJlYWQuICBPbiBvdXRwdXQsIHBv
c2l0aW9uLT5iZWdpbkluZGV4IGFuZCBwb3NpdGlvbi0+ZW5kSW5kZXggaW5kaWNhdGUKKyogdGhl
IGJlZ2lubmluZyBhbmQgZW5kaW5nIGluZGljZXMgb2YgZmllbGQgbnVtYmVyIHBvc2l0aW9uLT5m
aWVsZCwgaWYgc3VjaAorKiBhIGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBO
VUxMLCBpbiB3aGljaCBjYXNlIG5vIGZpZWxkCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRv
IGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHRvdGFs
IGJ1ZmZlciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlIG91
dHB1dCB3YXMgdHJ1bmNhdGVkLgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3Jt
YXRJbnQ2NAorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlSW50NjQKKyogQHNl
ZSB1bnVtX3BhcnNlRG91YmxlCisqIEBzZWUgVUZpZWxkUG9zaXRpb24KKyogQHN0YWJsZSBJQ1Ug
Mi4wCisqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCit1bnVtX2Zvcm1hdERvdWJsZSgg
ICAgY29uc3QgICAgVU51bWJlckZvcm1hdCogIGZtdCwKKyAgICAgICAgICAgIGRvdWJsZSAgICAg
ICAgICBudW1iZXIsCisgICAgICAgICAgICBVQ2hhciogICAgICAgICAgcmVzdWx0LAorICAgICAg
ICAgICAgaW50MzJfdCAgICAgICAgIHJlc3VsdExlbmd0aCwKKyAgICAgICAgICAgIFVGaWVsZFBv
c2l0aW9uICAqcG9zLCAvKiAwIGlmIGlnbm9yZSAqLworICAgICAgICAgICAgVUVycm9yQ29kZSog
ICAgIHN0YXR1cyk7CisKKy8qKgorKiBGb3JtYXQgYSBkZWNpbWFsIG51bWJlciB1c2luZyBhIFVO
dW1iZXJGb3JtYXQuCisqIFRoZSBudW1iZXIgd2lsbCBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRv
IHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBUaGUgc3ludGF4IG9mIHRoZSBpbnB1dCBu
dW1iZXIgaXMgYSAibnVtZXJpYyBzdHJpbmciCisqIGFzIGRlZmluZWQgaW4gdGhlIERlY2ltYWwg
QXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uLCBhdmFpbGFibGUgYXQKKyogaHR0cDovL3NwZWxlb3Ry
b3ZlLmNvbS9kZWNpbWFsCisqIEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBw
YXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQuCisqIEBwYXJhbSBsZW5ndGggVGhlIGxl
bmd0aCBvZiB0aGUgaW5wdXQgbnVtYmVyLCBvciAtMSBpZiB0aGUgaW5wdXQgaXMgbnVsLXRlcm1p
bmF0ZWQuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUg
dGhlIGZvcm1hdHRlZCBudW1iZXIuCisqIEBwYXJhbSByZXN1bHRMZW5ndGggVGhlIG1heGltdW0g
c2l6ZSBvZiByZXN1bHQuCisqIEBwYXJhbSBwb3MgICAgQSBwb2ludGVyIHRvIGEgVUZpZWxkUG9z
aXRpb24uICBPbiBpbnB1dCwgcG9zaXRpb24tPmZpZWxkCisqICAgICAgICAgICAgICAgaXMgcmVh
ZC4gIE9uIG91dHB1dCwgcG9zaXRpb24tPmJlZ2luSW5kZXggYW5kIHBvc2l0aW9uLT5lbmRJbmRl
eCBpbmRpY2F0ZQorKiAgICAgICAgICAgICAgIHRoZSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpbmRp
Y2VzIG9mIGZpZWxkIG51bWJlciBwb3NpdGlvbi0+ZmllbGQsIGlmIHN1Y2gKKyogICAgICAgICAg
ICAgICBhIGZpZWxkIGV4aXN0cy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBOVUxMLCBpbiB3aGlj
aCBjYXNlIGl0IGlzIGlnbm9yZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVF
cnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHRvdGFsIGJ1ZmZl
ciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlIG91dHB1dCB3
YXMgdHJ1bmNhdGVkLgorKiBAc2VlIHVudW1fZm9ybWF0CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2
NAorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlSW50NjQKKyogQHNlZSB1bnVt
X3BhcnNlRG91YmxlCisqIEBzZWUgVUZpZWxkUG9zaXRpb24KKyogQHN0YWJsZSBJQ1UgNC40IAor
Ki8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9mb3JtYXREZWNpbWFsKCAgICBj
b25zdCAgICBVTnVtYmVyRm9ybWF0KiAgZm10LAorICAgICAgICAgICAgY29uc3QgY2hhciAqICAg
IG51bWJlciwKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICBsZW5ndGgsCisgICAgICAgICAg
ICBVQ2hhciogICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIHJl
c3VsdExlbmd0aCwKKyAgICAgICAgICAgIFVGaWVsZFBvc2l0aW9uICAqcG9zLCAvKiAwIGlmIGln
bm9yZSAqLworICAgICAgICAgICAgVUVycm9yQ29kZSogICAgIHN0YXR1cyk7CisKKy8qKgorICog
Rm9ybWF0IGEgZG91YmxlIGN1cnJlbmN5IGFtb3VudCB1c2luZyBhIFVOdW1iZXJGb3JtYXQuCisg
KiBUaGUgZG91YmxlIHdpbGwgYmUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgVU51bWJlckZv
cm1hdCdzIGxvY2FsZS4KKyAqIEBwYXJhbSBmbXQgdGhlIGZvcm1hdHRlciB0byB1c2UKKyAqIEBw
YXJhbSBudW1iZXIgdGhlIG51bWJlciB0byBmb3JtYXQKKyAqIEBwYXJhbSBjdXJyZW5jeSB0aGUg
My1sZXR0ZXIgbnVsbC10ZXJtaW5hdGVkIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUKKyAqIEBwYXJh
bSByZXN1bHQgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgZm9ybWF0dGVk
IG51bWJlcgorICogQHBhcmFtIHJlc3VsdExlbmd0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgVUNo
YXJzIHRvIHdyaXRlIHRvIHJlc3VsdAorICogQHBhcmFtIHBvcyBhIHBvaW50ZXIgdG8gYSBVRmll
bGRQb3NpdGlvbi4gIE9uIGlucHV0LAorICogcG9zaXRpb24tPmZpZWxkIGlzIHJlYWQuICBPbiBv
dXRwdXQsIHBvc2l0aW9uLT5iZWdpbkluZGV4IGFuZAorICogcG9zaXRpb24tPmVuZEluZGV4IGlu
ZGljYXRlIHRoZSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpbmRpY2VzIG9mCisgKiBmaWVsZCBudW1i
ZXIgcG9zaXRpb24tPmZpZWxkLCBpZiBzdWNoIGEgZmllbGQgZXhpc3RzLiAgVGhpcworICogcGFy
YW1ldGVyIG1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIGl0IGlzIGlnbm9yZWQuCisgKiBAcGFy
YW0gc3RhdHVzIGEgcG9pbnRlciB0byBhbiBpbnB1dC1vdXRwdXQgVUVycm9yQ29kZQorICogQHJl
dHVybiB0aGUgdG90YWwgYnVmZmVyIHNpemUgbmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0
TGVuZ3RoLAorICogdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorICogQHNlZSB1bnVtX2Zvcm1h
dERvdWJsZQorICogQHNlZSB1bnVtX3BhcnNlRG91YmxlQ3VycmVuY3kKKyAqIEBzZWUgVUZpZWxk
UG9zaXRpb24KKyAqIEBzdGFibGUgSUNVIDMuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQ
T1JUMiAKK3VudW1fZm9ybWF0RG91YmxlQ3VycmVuY3koY29uc3QgVU51bWJlckZvcm1hdCogZm10
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBVQ2hhciogY3VycmVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IFVDaGFyKiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0
TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBVRmllbGRQb3NpdGlvbiogcG9zLCAv
KiBpZ25vcmVkIGlmIDAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSog
c3RhdHVzKTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8gYW4gaW50ZWdlciB1c2luZyBh
IFVOdW1iZXJGb3JtYXQuCisqIFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5nIHRv
IHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIg
dG8gdXNlLgorKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBwYXJzZS4KKyogQHBhcmFtIHRleHRM
ZW5ndGggVGhlIGxlbmd0aCBvZiB0ZXh0LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCisqIEBw
YXJhbSBwYXJzZVBvcyBJZiBub3QgMCwgb24gaW5wdXQgYSBwb2ludGVyIHRvIGFuIGludGVnZXIg
c3BlY2lmeWluZyB0aGUgb2Zmc2V0IGF0IHdoaWNoCisqIHRvIGJlZ2luIHBhcnNpbmcuICBJZiBu
b3QgMCwgb24gb3V0cHV0IHRoZSBvZmZzZXQgYXQgd2hpY2ggcGFyc2luZyBlbmRlZC4KKyogQHBh
cmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJv
cnMKKyogQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIHBhcnNlZCBpbnRlZ2VyCisqIEBzZWUgdW51
bV9wYXJzZUludDY0CisqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIHVudW1fZm9ybWF0
CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2NAorKiBAc2VlIHVudW1fZm9ybWF0RG91YmxlCisqIEBz
dGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9wYXJz
ZSggICAgY29uc3QgICBVTnVtYmVyRm9ybWF0KiAgZm10LAorICAgICAgICBjb25zdCAgIFVDaGFy
KiAgICAgICAgICB0ZXh0LAorICAgICAgICBpbnQzMl90ICAgICAgICAgdGV4dExlbmd0aCwKKyAg
ICAgICAgaW50MzJfdCAgICAgICAgICpwYXJzZVBvcyAvKiAwID0gc3RhcnQgKi8sCisgICAgICAg
IFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8g
YW4gaW50NjQgdXNpbmcgYSBVTnVtYmVyRm9ybWF0LgorKiBUaGUgc3RyaW5nIHdpbGwgYmUgcGFy
c2VkIGFjY29yZGluZyB0byB0aGUgVU51bWJlckZvcm1hdCdzIGxvY2FsZS4KKyogQHBhcmFtIGZt
dCBUaGUgZm9ybWF0dGVyIHRvIHVzZS4KKyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2Uu
CisqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10
ZXJtaW5hdGVkLgorKiBAcGFyYW0gcGFyc2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRl
ciB0byBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiB0byBiZWdp
biBwYXJzaW5nLiAgSWYgbm90IDAsIG9uIG91dHB1dCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHBhcnNp
bmcgZW5kZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8g
cmVjZWl2ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgaW50
ZWdlcgorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlRG91YmxlCisqIEBzZWUg
dW51bV9mb3JtYXQKKyogQHNlZSB1bnVtX2Zvcm1hdEludDY0CisqIEBzZWUgdW51bV9mb3JtYXRE
b3VibGUKKyogQHN0YWJsZSBJQ1UgMi44CisqLworVV9TVEFCTEUgaW50NjRfdCBVX0VYUE9SVDIg
Cit1bnVtX3BhcnNlSW50NjQoY29uc3QgVU51bWJlckZvcm1hdCogIGZtdCwKKyAgICAgICAgY29u
c3QgVUNoYXIqICB0ZXh0LAorICAgICAgICBpbnQzMl90ICAgICAgIHRleHRMZW5ndGgsCisgICAg
ICAgIGludDMyX3QgICAgICAgKnBhcnNlUG9zIC8qIDAgPSBzdGFydCAqLywKKyAgICAgICAgVUVy
cm9yQ29kZSAgICAqc3RhdHVzKTsKKworLyoqCisqIFBhcnNlIGEgc3RyaW5nIGludG8gYSBkb3Vi
bGUgdXNpbmcgYSBVTnVtYmVyRm9ybWF0LgorKiBUaGUgc3RyaW5nIHdpbGwgYmUgcGFyc2VkIGFj
Y29yZGluZyB0byB0aGUgVU51bWJlckZvcm1hdCdzIGxvY2FsZS4KKyogQHBhcmFtIGZtdCBUaGUg
Zm9ybWF0dGVyIHRvIHVzZS4KKyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCisqIEBw
YXJhbSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5h
dGVkLgorKiBAcGFyYW0gcGFyc2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRlciB0byBh
biBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiB0byBiZWdpbiBwYXJz
aW5nLiAgSWYgbm90IDAsIG9uIG91dHB1dCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHBhcnNpbmcgZW5k
ZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2
ZSBhbnkgZXJyb3JzCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgZG91YmxlCisq
IEBzZWUgdW51bV9wYXJzZQorKiBAc2VlIHVudW1fcGFyc2VJbnQ2NAorKiBAc2VlIHVudW1fZm9y
bWF0CisqIEBzZWUgdW51bV9mb3JtYXRJbnQ2NAorKiBAc2VlIHVudW1fZm9ybWF0RG91YmxlCisq
IEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGRvdWJsZSBVX0VYUE9SVDIgCit1bnVtX3Bh
cnNlRG91YmxlKCAgICBjb25zdCAgIFVOdW1iZXJGb3JtYXQqICBmbXQsCisgICAgICAgICAgICBj
b25zdCAgIFVDaGFyKiAgICAgICAgICB0ZXh0LAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAg
IHRleHRMZW5ndGgsCisgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgKnBhcnNlUG9zIC8qIDAg
PSBzdGFydCAqLywKKyAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKworCisv
KioKKyogUGFyc2UgYSBudW1iZXIgZnJvbSBhIHN0cmluZyBpbnRvIGFuIHVuZm9ybWF0dGVkIG51
bWVyaWMgc3RyaW5nIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KKyogVGhlIGlucHV0IHN0cmluZyB3
aWxsIGJlIHBhcnNlZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisq
IFRoZSBzeW50YXggb2YgdGhlIG91dHB1dCBpcyBhICJudW1lcmljIHN0cmluZyIKKyogYXMgZGVm
aW5lZCBpbiB0aGUgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24sIGF2YWlsYWJsZSBh
dAorKiBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwKKyogQHBhcmFtIGZtdCBUaGUgZm9y
bWF0dGVyIHRvIHVzZS4KKyogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCisqIEBwYXJh
bSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVk
LgorKiBAcGFyYW0gcGFyc2VQb3MgSWYgbm90IDAsIG9uIGlucHV0IGEgcG9pbnRlciB0byBhbiBp
bnRlZ2VyIHNwZWNpZnlpbmcgdGhlIG9mZnNldCBhdCB3aGljaAorKiAgICAgICAgICAgICAgICAg
dG8gYmVnaW4gcGFyc2luZy4gIElmIG5vdCAwLCBvbiBvdXRwdXQgdGhlIG9mZnNldCBhdCB3aGlj
aCBwYXJzaW5nIGVuZGVkLgorKiBAcGFyYW0gb3V0QnVmIEEgKGNoYXIgKikgYnVmZmVyIHRvIHJl
Y2VpdmUgdGhlIHBhcnNlZCBudW1iZXIgYXMgYSBzdHJpbmcuICBUaGUgb3V0cHV0IHN0cmluZwor
KiAgICAgICAgICAgICAgIHdpbGwgYmUgbnVsLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmlj
aWVudCBzcGFjZS4KKyogQHBhcmFtIG91dEJ1Zkxlbmd0aCBUaGUgc2l6ZSBvZiB0aGUgb3V0cHV0
IGJ1ZmZlci4gIE1heSBiZSB6ZXJvLCBpbiB3aGljaCBjYXNlCisqICAgICAgICAgICAgICAgdGhl
IG91dEJ1ZiBwb2ludGVyIG1heSBiZSBOVUxMLCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJu
IHRoZQorKiAgICAgICAgICAgICAgIHNpemUgb2YgdGhlIG91dHB1dCBzdHJpbmcuCisqIEBwYXJh
bSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3Jz
CisqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IHN0cmluZywgbm90IGluY2x1ZGlu
ZyBhbnkgdGVybWluYXRpbmcgbnVsLgorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3Bh
cnNlSW50NjQKKyogQHNlZSB1bnVtX2Zvcm1hdAorKiBAc2VlIHVudW1fZm9ybWF0SW50NjQKKyog
QHNlZSB1bnVtX2Zvcm1hdERvdWJsZQorKiBAc3RhYmxlIElDVSA0LjQKKyovCitVX1NUQUJMRSBp
bnQzMl90IFVfRVhQT1JUMiAKK3VudW1fcGFyc2VEZWNpbWFsKGNvbnN0ICAgVU51bWJlckZvcm1h
dCogIGZtdCwKKyAgICAgICAgICAgICAgICAgY29uc3QgICBVQ2hhciogICAgICAgICAgdGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgdGV4dExlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgKnBhcnNlUG9zIC8qIDAgPSBz
dGFydCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgKm91dEJ1
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgb3V0QnVmTGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKKwor
LyoqCisgKiBQYXJzZSBhIHN0cmluZyBpbnRvIGEgZG91YmxlIGFuZCBhIGN1cnJlbmN5IHVzaW5n
IGEgVU51bWJlckZvcm1hdC4KKyAqIFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5n
IHRvIHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorICogQHBhcmFtIGZtdCB0aGUgZm9ybWF0
dGVyIHRvIHVzZQorICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gcGFyc2UKKyAqIEBwYXJhbSB0
ZXh0TGVuZ3RoIHRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkCisg
KiBAcGFyYW0gcGFyc2VQb3MgYSBwb2ludGVyIHRvIGFuIG9mZnNldCBpbmRleCBpbnRvIHRleHQg
YXQgd2hpY2ggdG8KKyAqIGJlZ2luIHBhcnNpbmcuIE9uIG91dHB1dCwgKnBhcnNlUG9zIHdpbGwg
cG9pbnQgYWZ0ZXIgdGhlIGxhc3QKKyAqIHBhcnNlZCBjaGFyYWN0ZXIuICBUaGlzIHBhcmFtZXRl
ciBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBwYXJzaW5nCisgKiBiZWdpbnMgYXQgb2Zmc2V0IDAu
CisgKiBAcGFyYW0gY3VycmVuY3kgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0
aGUgcGFyc2VkIG51bGwtCisgKiB0ZXJtaW5hdGVkIGN1cnJlbmN5LiAgVGhpcyBidWZmZXIgbXVz
dCBoYXZlIGEgY2FwYWNpdHkgb2YgYXQgbGVhc3QKKyAqIDQgVUNoYXJzLgorICogQHBhcmFtIHN0
YXR1cyBhIHBvaW50ZXIgdG8gYW4gaW5wdXQtb3V0cHV0IFVFcnJvckNvZGUKKyAqIEByZXR1cm4g
dGhlIHBhcnNlZCBkb3VibGUKKyAqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorICogQHNlZSB1bnVt
X2Zvcm1hdERvdWJsZUN1cnJlbmN5CisgKiBAc3RhYmxlIElDVSAzLjAKKyAqLworVV9TVEFCTEUg
ZG91YmxlIFVfRVhQT1JUMgordW51bV9wYXJzZURvdWJsZUN1cnJlbmN5KGNvbnN0IFVOdW1iZXJG
b3JtYXQqIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogdGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCogcGFyc2VQb3MsIC8qIDAgPSBzdGFydCAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgIFVDaGFyKiBjdXJyZW5jeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisvKioKKyAqIFNldCB0aGUgcGF0dGVybiB1c2Vk
IGJ5IGEgVU51bWJlckZvcm1hdC4gIFRoaXMgY2FuIG9ubHkgYmUgdXNlZAorICogb24gYSBEZWNp
bWFsRm9ybWF0LCBvdGhlciBmb3JtYXRzIHJldHVybiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IK
KyAqIGluIHRoZSBzdGF0dXMuCisgKiBAcGFyYW0gZm9ybWF0IFRoZSBmb3JtYXR0ZXIgdG8gc2V0
LgorICogQHBhcmFtIGxvY2FsaXplZCBUUlVFIGlmIHRoZSBwYXR0ZXJuIGlzIGxvY2FsaXplZCwg
RkFMU0Ugb3RoZXJ3aXNlLgorICogQHBhcmFtIHBhdHRlcm4gVGhlIG5ldyBwYXR0ZXJuCisgKiBA
cGFyYW0gcGF0dGVybkxlbmd0aCBUaGUgbGVuZ3RoIG9mIHBhdHRlcm4sIG9yIC0xIGlmIG51bGwt
dGVybWluYXRlZC4KKyAqIEBwYXJhbSBwYXJzZUVycm9yIEEgcG9pbnRlciB0byBVUGFyc2VFcnJv
ciB0byByZWNpZXZlIGluZm9ybWF0aW9uCisgKiBhYm91dCBlcnJvcnMgb2NjdXJyZWQgZHVyaW5n
IHBhcnNpbmcsIG9yIE5VTEwgaWYgbm8gcGFyc2UgZXJyb3IKKyAqIGluZm9ybWF0aW9uIGlzIGRl
c2lyZWQuCisgKiBAcGFyYW0gc3RhdHVzIEEgcG9pbnRlciB0byBhbiBpbnB1dC1vdXRwdXQgVUVy
cm9yQ29kZS4KKyAqIEBzZWUgdW51bV90b1BhdHRlcm4KKyAqIEBzZWUgRGVjaW1hbEZvcm1hdAor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAordW51bV9h
cHBseVBhdHRlcm4oICAgICAgICAgIFVOdW1iZXJGb3JtYXQgICpmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUJvb2wgICAgICAgICAgbG9jYWxpemVkLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCAgIFVDaGFyICAgICAgICAgICpwYXR0ZXJuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgICAgICAgICBwYXR0ZXJuTGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVQYXJzZUVycm9yICAgICpwYXJzZUVycm9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICpzdGF0dXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CisKKy8qKgorKiBHZXQgYSBsb2NhbGUgZm9yIHdoaWNoIGRl
Y2ltYWwgZm9ybWF0dGluZyBwYXR0ZXJucyBhcmUgYXZhaWxhYmxlLgorKiBBIFVOdW1iZXJGb3Jt
YXQgaW4gYSBsb2NhbGUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhl
IGNvcnJlY3QKKyogZm9ybWF0dGluZyBhbmQgcGFyc2luZyBmb3IgdGhlIGxvY2FsZS4gIFRoZSBy
ZXN1bHRzIG9mIHRoaXMgY2FsbCBhcmUgbm90CisqIHZhbGlkIGZvciBydWxlLWJhc2VkIG51bWJl
ciBmb3JtYXRzLgorKiBAcGFyYW0gbG9jYWxlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBkZXNpcmVk
IGxvY2FsZS4KKyogQHJldHVybiBBIGxvY2FsZSBmb3Igd2hpY2ggbnVtYmVyIGZvcm1hdHRpbmcg
cGF0dGVybnMgYXJlIGF2YWlsYWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVudW1fY291bnRB
dmFpbGFibGUKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9F
WFBPUlQyIAordW51bV9nZXRBdmFpbGFibGUoaW50MzJfdCBsb2NhbGVJbmRleCk7CisKKy8qKgor
KiBEZXRlcm1pbmUgaG93IG1hbnkgbG9jYWxlcyBoYXZlIGRlY2ltYWwgZm9ybWF0dGluZyBwYXR0
ZXJucyBhdmFpbGFibGUuICBUaGUKKyogcmVzdWx0cyBvZiB0aGlzIGNhbGwgYXJlIG5vdCB2YWxp
ZCBmb3IgcnVsZS1iYXNlZCBudW1iZXIgZm9ybWF0cy4KKyogVGhpcyBmdW5jdGlvbiBpcyB1c2Vm
dWwgZm9yIGRldGVybWluaW5nIHRoZSBsb29wIGVuZGluZyBjb25kaXRpb24gZm9yCisqIGNhbGxz
IHRvIHtAbGluayAjdW51bV9nZXRBdmFpbGFibGUgfS4KKyogQHJldHVybiBUaGUgbnVtYmVyIG9m
IGxvY2FsZXMgZm9yIHdoaWNoIGRlY2ltYWwgZm9ybWF0dGluZyBwYXR0ZXJucyBhcmUgYXZhaWxh
YmxlLgorKiBAc2VlIHVudW1fZ2V0QXZhaWxhYmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1Vf
U1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9jb3VudEF2YWlsYWJsZSh2b2lkKTsKKwor
LyoqIFRoZSBwb3NzaWJsZSBVTnVtYmVyRm9ybWF0IG51bWVyaWMgYXR0cmlidXRlcyBAc3RhYmxl
IElDVSAyLjAgKi8KK3R5cGVkZWYgZW51bSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlIHsKKyAgLyoq
IFBhcnNlIGludGVnZXJzIG9ubHkgKi8KKyAgVU5VTV9QQVJTRV9JTlRfT05MWSwKKyAgLyoqIFVz
ZSBncm91cGluZyBzZXBhcmF0b3IgKi8KKyAgVU5VTV9HUk9VUElOR19VU0VELAorICAvKiogQWx3
YXlzIHNob3cgZGVjaW1hbCBwb2ludCAqLworICBVTlVNX0RFQ0lNQUxfQUxXQVlTX1NIT1dOLAor
ICAvKiogTWF4aW11bSBpbnRlZ2VyIGRpZ2l0cyAqLworICBVTlVNX01BWF9JTlRFR0VSX0RJR0lU
UywKKyAgLyoqIE1pbmltdW0gaW50ZWdlciBkaWdpdHMgKi8KKyAgVU5VTV9NSU5fSU5URUdFUl9E
SUdJVFMsCisgIC8qKiBJbnRlZ2VyIGRpZ2l0cyAqLworICBVTlVNX0lOVEVHRVJfRElHSVRTLAor
ICAvKiogTWF4aW11bSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgVU5VTV9NQVhfRlJBQ1RJT05fRElH
SVRTLAorICAvKiogTWluaW11bSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgVU5VTV9NSU5fRlJBQ1RJ
T05fRElHSVRTLAorICAvKiogRnJhY3Rpb24gZGlnaXRzICovCisgIFVOVU1fRlJBQ1RJT05fRElH
SVRTLAorICAvKiogTXVsdGlwbGllciAqLworICBVTlVNX01VTFRJUExJRVIsCisgIC8qKiBHcm91
cGluZyBzaXplICovCisgIFVOVU1fR1JPVVBJTkdfU0laRSwKKyAgLyoqIFJvdW5kaW5nIE1vZGUg
Ki8KKyAgVU5VTV9ST1VORElOR19NT0RFLAorICAvKiogUm91bmRpbmcgaW5jcmVtZW50ICovCisg
IFVOVU1fUk9VTkRJTkdfSU5DUkVNRU5ULAorICAvKiogVGhlIHdpZHRoIHRvIHdoaWNoIHRoZSBv
dXRwdXQgb2YgPGNvZGU+Zm9ybWF0KCk8L2NvZGU+IGlzIHBhZGRlZC4gKi8KKyAgVU5VTV9GT1JN
QVRfV0lEVEgsCisgIC8qKiBUaGUgcG9zaXRpb24gYXQgd2hpY2ggcGFkZGluZyB3aWxsIHRha2Ug
cGxhY2UuICovCisgIFVOVU1fUEFERElOR19QT1NJVElPTiwKKyAgLyoqIFNlY29uZGFyeSBncm91
cGluZyBzaXplICovCisgIFVOVU1fU0VDT05EQVJZX0dST1VQSU5HX1NJWkUsCisgIC8qKiBVc2Ug
c2lnbmlmaWNhbnQgZGlnaXRzCisgICAqIEBzdGFibGUgSUNVIDMuMCAqLworICBVTlVNX1NJR05J
RklDQU5UX0RJR0lUU19VU0VELAorICAvKiogTWluaW11bSBzaWduaWZpY2FudCBkaWdpdHMKKyAg
ICogQHN0YWJsZSBJQ1UgMy4wICovCisgIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywKKyAg
LyoqIE1heGltdW0gc2lnbmlmaWNhbnQgZGlnaXRzCisgICAqIEBzdGFibGUgSUNVIDMuMCAqLwor
ICBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsCisgIC8qKiBMZW5pZW50IHBhcnNlIG1vZGUg
dXNlZCBieSBydWxlLWJhc2VkIGZvcm1hdHMuCisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8K
KyAgVU5VTV9MRU5JRU5UX1BBUlNFCit9IFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGU7CisKKy8qKgor
KiBHZXQgYSBudW1lcmljIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0
LgorKiBBbiBleGFtcGxlIG9mIGEgbnVtZXJpYyBhdHRyaWJ1dGUgaXMgdGhlIG51bWJlciBvZiBp
bnRlZ2VyIGRpZ2l0cyBhIGZvcm1hdHRlciB3aWxsIHByb2R1Y2UuCisqIEBwYXJhbSBmbXQgVGhl
IGZvcm1hdHRlciB0byBxdWVyeS4KKyogQHBhcmFtIGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBxdWVy
eTsgb25lIG9mIFVOVU1fUEFSU0VfSU5UX09OTFksIFVOVU1fR1JPVVBJTkdfVVNFRCwKKyogVU5V
TV9ERUNJTUFMX0FMV0FZU19TSE9XTiwgVU5VTV9NQVhfSU5URUdFUl9ESUdJVFMsIFVOVU1fTUlO
X0lOVEVHRVJfRElHSVRTLCBVTlVNX0lOVEVHRVJfRElHSVRTLAorKiBVTlVNX01BWF9GUkFDVElP
Tl9ESUdJVFMsIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgVU5VTV9GUkFDVElPTl9ESUdJVFMs
IFVOVU1fTVVMVElQTElFUiwKKyogVU5VTV9HUk9VUElOR19TSVpFLCBVTlVNX1JPVU5ESU5HX01P
REUsIFVOVU1fRk9STUFUX1dJRFRILCBVTlVNX1BBRERJTkdfUE9TSVRJT04sIFVOVU1fU0VDT05E
QVJZX0dST1VQSU5HX1NJWkUuCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIGF0dHIuCisqIEBzZWUg
dW51bV9zZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX2dldERvdWJsZUF0dHJpYnV0ZQorKiBAc2Vl
IHVudW1fc2V0RG91YmxlQXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisq
IEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RB
QkxFIGludDMyX3QgVV9FWFBPUlQyIAordW51bV9nZXRBdHRyaWJ1dGUoY29uc3QgVU51bWJlckZv
cm1hdCogICAgICAgICAgZm10LAorICAgICAgICAgIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgIGF0
dHIpOworCisvKioKKyogU2V0IGEgbnVtZXJpYyBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIGEg
VU51bWJlckZvcm1hdC4KKyogQW4gZXhhbXBsZSBvZiBhIG51bWVyaWMgYXR0cmlidXRlIGlzIHRo
ZSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYSBmb3JtYXR0ZXIgd2lsbCBwcm9kdWNlLiAgSWYg
dGhlCisqIGZvcm1hdHRlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBhdHRyaWJ1dGUsIHRoZSBj
YWxsIGlzIGlnbm9yZWQuICBSdWxlLWJhc2VkIGZvcm1hdHRlcnMgb25seSB1bmRlcnN0YW5kCisq
IHRoZSBsZW5pZW50LXBhcnNlIGF0dHJpYnV0ZS4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVy
IHRvIHNldC4KKyogQHBhcmFtIGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBzZXQ7IG9uZSBvZiBVTlVN
X1BBUlNFX0lOVF9PTkxZLCBVTlVNX0dST1VQSU5HX1VTRUQsCisqIFVOVU1fREVDSU1BTF9BTFdB
WVNfU0hPV04sIFVOVU1fTUFYX0lOVEVHRVJfRElHSVRTLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lU
UywgVU5VTV9JTlRFR0VSX0RJR0lUUywKKyogVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBVTlVN
X01JTl9GUkFDVElPTl9ESUdJVFMsIFVOVU1fRlJBQ1RJT05fRElHSVRTLCBVTlVNX01VTFRJUExJ
RVIsCisqIFVOVU1fR1JPVVBJTkdfU0laRSwgVU5VTV9ST1VORElOR19NT0RFLCBVTlVNX0ZPUk1B
VF9XSURUSCwgVU5VTV9QQURESU5HX1BPU0lUSU9OLCBVTlVNX1NFQ09OREFSWV9HUk9VUElOR19T
SVpFLAorKiBvciBVTlVNX0xFTklFTlRfUEFSU0UuCisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3
IHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX2dl
dERvdWJsZUF0dHJpYnV0ZQorKiBAc2VlIHVudW1fc2V0RG91YmxlQXR0cmlidXRlCisqIEBzZWUg
dW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisqIEBz
dGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAordW51bV9zZXRBdHRy
aWJ1dGUoICAgIFVOdW1iZXJGb3JtYXQqICAgICAgICAgIGZtdCwKKyAgICAgICAgICAgIFVOdW1i
ZXJGb3JtYXRBdHRyaWJ1dGUgIGF0dHIsCisgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAg
ICAgICBuZXdWYWx1ZSk7CisKKworLyoqCisqIEdldCBhIG51bWVyaWMgYXR0cmlidXRlIGFzc29j
aWF0ZWQgd2l0aCBhIFVOdW1iZXJGb3JtYXQuCisqIEFuIGV4YW1wbGUgb2YgYSBudW1lcmljIGF0
dHJpYnV0ZSBpcyB0aGUgbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIGEgZm9ybWF0dGVyIHdpbGwg
cHJvZHVjZS4KKyogSWYgdGhlIGZvcm1hdHRlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBhdHRy
aWJ1dGUsIC0xIGlzIHJldHVybmVkLgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gcXVl
cnkuCisqIEBwYXJhbSBhdHRyIFRoZSBhdHRyaWJ1dGUgdG8gcXVlcnk7IGUuZy4gVU5VTV9ST1VO
RElOR19JTkNSRU1FTlQuCisqIEByZXR1cm4gVGhlIHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51
bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc2VlIHVudW1fc2V0
RG91YmxlQXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51
bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGRvdWJs
ZSBVX0VYUE9SVDIgCit1bnVtX2dldERvdWJsZUF0dHJpYnV0ZShjb25zdCBVTnVtYmVyRm9ybWF0
KiAgICAgICAgICBmbXQsCisgICAgICAgICAgVU51bWJlckZvcm1hdEF0dHJpYnV0ZSAgYXR0cik7
CisKKy8qKgorKiBTZXQgYSBudW1lcmljIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVt
YmVyRm9ybWF0LgorKiBBbiBleGFtcGxlIG9mIGEgbnVtZXJpYyBhdHRyaWJ1dGUgaXMgdGhlIG51
bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBhIGZvcm1hdHRlciB3aWxsIHByb2R1Y2UuCisqIElmIHRo
ZSBmb3JtYXR0ZXIgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgYXR0cmlidXRlLCB0aGlzIGNhbGwg
aXMgaWdub3JlZC4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHNldC4KKyogQHBhcmFt
IGF0dHIgVGhlIGF0dHJpYnV0ZSB0byBzZXQ7IGUuZy4gVU5VTV9ST1VORElOR19JTkNSRU1FTlQu
CisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIG9mIGF0dHIuCisqIEBzZWUgdW51bV9n
ZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc2VlIHVudW1fZ2V0RG91
YmxlQXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9z
ZXRUZXh0QXR0cmlidXRlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyIAordW51bV9zZXREb3VibGVBdHRyaWJ1dGUoICAgIFVOdW1iZXJGb3JtYXQqICAgICAg
ICAgIGZtdCwKKyAgICAgICAgICAgIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgIGF0dHIsCisgICAg
ICAgICAgICBkb3VibGUgICAgICAgICAgICAgICAgIG5ld1ZhbHVlKTsKKworLyoqIFRoZSBwb3Nz
aWJsZSBVTnVtYmVyRm9ybWF0IHRleHQgYXR0cmlidXRlcyBAc3RhYmxlIElDVSAyLjAqLwordHlw
ZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlIHsKKyAgLyoqIFBvc2l0aXZlIHBy
ZWZpeCAqLworICBVTlVNX1BPU0lUSVZFX1BSRUZJWCwKKyAgLyoqIFBvc2l0aXZlIHN1ZmZpeCAq
LworICBVTlVNX1BPU0lUSVZFX1NVRkZJWCwKKyAgLyoqIE5lZ2F0aXZlIHByZWZpeCAqLworICBV
TlVNX05FR0FUSVZFX1BSRUZJWCwKKyAgLyoqIE5lZ2F0aXZlIHN1ZmZpeCAqLworICBVTlVNX05F
R0FUSVZFX1NVRkZJWCwKKyAgLyoqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBwYWQgdG8gdGhlIGZv
cm1hdCB3aWR0aC4gKi8KKyAgVU5VTV9QQURESU5HX0NIQVJBQ1RFUiwKKyAgLyoqIFRoZSBJU08g
Y3VycmVuY3kgY29kZSAqLworICBVTlVNX0NVUlJFTkNZX0NPREUsCisgIC8qKgorICAgKiBUaGUg
ZGVmYXVsdCBydWxlIHNldC4gIFRoaXMgaXMgb25seSBhdmFpbGFibGUgd2l0aCBydWxlLWJhc2Vk
IGZvcm1hdHRlcnMuCisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8KKyAgVU5VTV9ERUZBVUxU
X1JVTEVTRVQsCisgIC8qKgorICAgKiBUaGUgcHVibGljIHJ1bGUgc2V0cy4gIFRoaXMgaXMgb25s
eSBhdmFpbGFibGUgd2l0aCBydWxlLWJhc2VkIGZvcm1hdHRlcnMuCisgICAqIFRoaXMgaXMgYSBy
ZWFkLW9ubHkgYXR0cmlidXRlLiAgVGhlIHB1YmxpYyBydWxlc2V0cyBhcmUgcmV0dXJuZWQgYXMg
YQorICAgKiBzaW5nbGUgc3RyaW5nLCB3aXRoIGVhY2ggcnVsZXNldCBuYW1lIGRlbGltaXRlZCBi
eSAnOycgKHNlbWljb2xvbikuCisgICAqIEBzdGFibGUgSUNVIDMuMAorICAgKi8KKyAgVU5VTV9Q
VUJMSUNfUlVMRVNFVFMKK30gVU51bWJlckZvcm1hdFRleHRBdHRyaWJ1dGU7CisKKy8qKgorKiBH
ZXQgYSB0ZXh0IGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVyRm9ybWF0LgorKiBB
biBleGFtcGxlIG9mIGEgdGV4dCBhdHRyaWJ1dGUgaXMgdGhlIHN1ZmZpeCBmb3IgcG9zaXRpdmUg
bnVtYmVycy4gIElmIHRoZSBmb3JtYXR0ZXIKKyogZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgYXR0
cmlidXRyZSwgVV9VTlNVUFBPUlRFRF9FUlJPUiBpcyByZXR1cm5lZCBhcyB0aGUgc3RhdHVzLgor
KiBSdWxlLWJhc2VkIGZvcm1hdHRlcnMgb25seSB1bmRlcnN0YW5kIFVOVU1fREVGQVVMVF9SVUxF
U0VUIGFuZCBVTlVNX1BVQkxJQ19SVUxFU0VUUy4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVy
IHRvIHF1ZXJ5LgorKiBAcGFyYW0gdGFnIFRoZSBhdHRyaWJ1dGUgdG8gcXVlcnk7IG9uZSBvZiBV
TlVNX1BPU0lUSVZFX1BSRUZJWCwgVU5VTV9QT1NJVElWRV9TVUZGSVgsCisqIFVOVU1fTkVHQVRJ
VkVfUFJFRklYLCBVTlVNX05FR0FUSVZFX1NVRkZJWCwgVU5VTV9QQURESU5HX0NIQVJBQ1RFUiwg
VU5VTV9DVVJSRU5DWV9DT0RFLAorKiBVTlVNX0RFRkFVTFRfUlVMRVNFVCwgb3IgVU5VTV9QVUJM
SUNfUlVMRVNFVFMuCisqIEBwYXJhbSByZXN1bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJl
Y2VpdmUgdGhlIGF0dHJpYnV0ZS4KKyogQHBhcmFtIHJlc3VsdExlbmd0aCBUaGUgbWF4aW11bSBz
aXplIG9mIHJlc3VsdC4KKyogQHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29k
ZSB0byByZWNlaXZlIGFueSBlcnJvcnMKKyogQHJldHVybiBUaGUgdG90YWwgYnVmZmVyIHNpemUg
bmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0TGVuZ3RoLCB0aGUgb3V0cHV0IHdhcyB0cnVu
Y2F0ZWQuCisqIEBzZWUgdW51bV9zZXRUZXh0QXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRBdHRy
aWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJpYnV0ZQorKiBAc3RhYmxlIElDVSAyLjAKKyovCitV
X1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK3VudW1fZ2V0VGV4dEF0dHJpYnV0ZSggICAgY29u
c3QgICAgVU51bWJlckZvcm1hdCogICAgICAgICAgICAgICAgICAgIGZtdCwKKyAgICAgICAgICAg
IFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlICAgICAgdGFnLAorICAgICAgICAgICAgVUNoYXIq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgIGludDMyX3Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGVuZ3RoLAorICAgICAgICAgICAgVUVy
cm9yQ29kZSogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworCisvKioKKyogU2V0IGEg
dGV4dCBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIGEgVU51bWJlckZvcm1hdC4KKyogQW4gZXhh
bXBsZSBvZiBhIHRleHQgYXR0cmlidXRlIGlzIHRoZSBzdWZmaXggZm9yIHBvc2l0aXZlIG51bWJl
cnMuICBSdWxlLWJhc2VkIGZvcm1hdHRlcnMKKyogb25seSB1bmRlcnN0YW5kIFVOVU1fREVGQVVM
VF9SVUxFU0VULgorKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gc2V0LgorKiBAcGFyYW0g
dGFnIFRoZSBhdHRyaWJ1dGUgdG8gc2V0OyBvbmUgb2YgVU5VTV9QT1NJVElWRV9QUkVGSVgsIFVO
VU1fUE9TSVRJVkVfU1VGRklYLAorKiBVTlVNX05FR0FUSVZFX1BSRUZJWCwgVU5VTV9ORUdBVElW
RV9TVUZGSVgsIFVOVU1fUEFERElOR19DSEFSQUNURVIsIFVOVU1fQ1VSUkVOQ1lfQ09ERSwKKyog
b3IgVU5VTV9ERUZBVUxUX1JVTEVTRVQuCisqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVl
IG9mIGF0dHIuCisqIEBwYXJhbSBuZXdWYWx1ZUxlbmd0aCBUaGUgbGVuZ3RoIG9mIG5ld1ZhbHVl
LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCisqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRv
IGFuIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCisqIEBzZWUgdW51bV9nZXRUZXh0
QXR0cmlidXRlCisqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUKKyogQHNlZSB1bnVtX3NldEF0dHJp
YnV0ZQorKiBAc3RhYmxlIElDVSAyLjAKKyovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK3Vu
dW1fc2V0VGV4dEF0dHJpYnV0ZSggICAgVU51bWJlckZvcm1hdCogICAgICAgICAgICAgICAgICAg
IGZtdCwKKyAgICAgICAgICAgIFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlICAgICAgdGFnLAor
ICAgICAgICAgICAgY29uc3QgICAgVUNoYXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1ZhbHVlLAorICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdWYWx1ZUxlbmd0aCwKKyAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdHVzKTsKKworLyoqCisgKiBFeHRyYWN0IHRoZSBwYXR0ZXJuIGZyb20gYSBVTnVt
YmVyRm9ybWF0LiAgVGhlIHBhdHRlcm4gd2lsbCBmb2xsb3cKKyAqIHRoZSBEZWNpbWFsRm9ybWF0
IHBhdHRlcm4gc3ludGF4LgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHF1ZXJ5Lgor
ICogQHBhcmFtIGlzUGF0dGVybkxvY2FsaXplZCBUUlVFIGlmIHRoZSBwYXR0ZXJuIHNob3VsZCBi
ZSBsb2NhbGl6ZWQsCisgKiBGQUxTRSBvdGhlcndpc2UuICBUaGlzIGlzIGlnbm9yZWQgaWYgdGhl
IGZvcm1hdHRlciBpcyBhIHJ1bGUtYmFzZWQKKyAqIGZvcm1hdHRlci4KKyAqIEBwYXJhbSByZXN1
bHQgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIHBhdHRlcm4uCisgKiBAcGFy
YW0gcmVzdWx0TGVuZ3RoIFRoZSBtYXhpbXVtIHNpemUgb2YgcmVzdWx0LgorICogQHBhcmFtIHN0
YXR1cyBBIHBvaW50ZXIgdG8gYW4gaW5wdXQtb3V0cHV0IFVFcnJvckNvZGUuCisgKiBAcmV0dXJu
IFRoZSB0b3RhbCBidWZmZXIgc2l6ZSBuZWVkZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1bHRMZW5n
dGgsCisgKiB0aGUgb3V0cHV0IHdhcyB0cnVuY2F0ZWQuCisgKiBAc2VlIHVudW1fYXBwbHlQYXR0
ZXJuCisgKiBAc2VlIERlY2ltYWxGb3JtYXQKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK3VudW1fdG9QYXR0ZXJuKCAgICBjb25zdCAgICBVTnVt
YmVyRm9ybWF0KiAgICAgICAgICBmbXQsCisgICAgICAgIFVCb29sICAgICAgICAgICAgICAgICAg
aXNQYXR0ZXJuTG9jYWxpemVkLAorICAgICAgICBVQ2hhciogICAgICAgICAgICAgICAgICByZXN1
bHQsCisgICAgICAgIGludDMyX3QgICAgICAgICAgICAgICAgIHJlc3VsdExlbmd0aCwKKyAgICAg
ICAgVUVycm9yQ29kZSogICAgICAgICAgICAgc3RhdHVzKTsKKworCisvKioKKyAqIENvbnN0YW50
cyBmb3Igc3BlY2lmeWluZyBhIG51bWJlciBmb3JtYXQgc3ltYm9sLgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KK3R5cGVkZWYgZW51bSBVTnVtYmVyRm9ybWF0U3ltYm9sIHsKKyAgLyoqIFRoZSBk
ZWNpbWFsIHNlcGFyYXRvciAqLworICBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX1NZTUJPTCA9IDAs
CisgIC8qKiBUaGUgZ3JvdXBpbmcgc2VwYXJhdG9yICovCisgIFVOVU1fR1JPVVBJTkdfU0VQQVJB
VE9SX1NZTUJPTCA9IDEsCisgIC8qKiBUaGUgcGF0dGVybiBzZXBhcmF0b3IgKi8KKyAgVU5VTV9Q
QVRURVJOX1NFUEFSQVRPUl9TWU1CT0wgPSAyLAorICAvKiogVGhlIHBlcmNlbnQgc2lnbiAqLwor
ICBVTlVNX1BFUkNFTlRfU1lNQk9MID0gMywKKyAgLyoqIFplcm8qLworICBVTlVNX1pFUk9fRElH
SVRfU1lNQk9MID0gNCwKKyAgLyoqIENoYXJhY3RlciByZXByZXNlbnRpbmcgYSBkaWdpdCBpbiB0
aGUgcGF0dGVybiAqLworICBVTlVNX0RJR0lUX1NZTUJPTCA9IDUsCisgIC8qKiBUaGUgbWludXMg
c2lnbiAqLworICBVTlVNX01JTlVTX1NJR05fU1lNQk9MID0gNiwKKyAgLyoqIFRoZSBwbHVzIHNp
Z24gKi8KKyAgVU5VTV9QTFVTX1NJR05fU1lNQk9MID0gNywKKyAgLyoqIFRoZSBjdXJyZW5jeSBz
eW1ib2wgKi8KKyAgVU5VTV9DVVJSRU5DWV9TWU1CT0wgPSA4LAorICAvKiogVGhlIGludGVybmF0
aW9uYWwgY3VycmVuY3kgc3ltYm9sICovCisgIFVOVU1fSU5UTF9DVVJSRU5DWV9TWU1CT0wgPSA5
LAorICAvKiogVGhlIG1vbmV0YXJ5IHNlcGFyYXRvciAqLworICBVTlVNX01PTkVUQVJZX1NFUEFS
QVRPUl9TWU1CT0wgPSAxMCwKKyAgLyoqIFRoZSBleHBvbmVudGlhbCBzeW1ib2wgKi8KKyAgVU5V
TV9FWFBPTkVOVElBTF9TWU1CT0wgPSAxMSwKKyAgLyoqIFBlciBtaWxsIHN5bWJvbCAqLworICBV
TlVNX1BFUk1JTExfU1lNQk9MID0gMTIsCisgIC8qKiBFc2NhcGUgcGFkZGluZyBjaGFyYWN0ZXIg
Ki8KKyAgVU5VTV9QQURfRVNDQVBFX1NZTUJPTCA9IDEzLAorICAvKiogSW5maW5pdHkgc3ltYm9s
ICovCisgIFVOVU1fSU5GSU5JVFlfU1lNQk9MID0gMTQsCisgIC8qKiBOYW4gc3ltYm9sICovCisg
IFVOVU1fTkFOX1NZTUJPTCA9IDE1LAorICAvKiogU2lnbmlmaWNhbnQgZGlnaXQgc3ltYm9sCisg
ICAqIEBzdGFibGUgSUNVIDMuMCAqLworICBVTlVNX1NJR05JRklDQU5UX0RJR0lUX1NZTUJPTCA9
IDE2LAorICAvKiogVGhlIG1vbmV0YXJ5IGdyb3VwaW5nIHNlcGFyYXRvciAKKyAgICogQHN0YWJs
ZSBJQ1UgMy42CisgICAqLworICBVTlVNX01PTkVUQVJZX0dST1VQSU5HX1NFUEFSQVRPUl9TWU1C
T0wgPSAxNywgIAorICAvKiogT25lCisgICAqIEBkcmFmdCBJQ1UgNC42CisgICAqLworICBVTlVN
X09ORV9ESUdJVF9TWU1CT0wgPSAxOCwKKyAgLyoqIFR3bworICAgKiBAZHJhZnQgSUNVIDQuNgor
ICAgKi8KKyAgVU5VTV9UV09fRElHSVRfU1lNQk9MID0gMTksCisgIC8qKiBUaHJlZQorICAgKiBA
ZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgVU5VTV9USFJFRV9ESUdJVF9TWU1CT0wgPSAyMCwKKyAg
LyoqIEZvdXIKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVOVU1fRk9VUl9ESUdJVF9T
WU1CT0wgPSAyMSwKKyAgLyoqIEZpdmUKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVO
VU1fRklWRV9ESUdJVF9TWU1CT0wgPSAyMiwKKyAgLyoqIFNpeAorICAgKiBAZHJhZnQgSUNVIDQu
NgorICAgKi8KKyAgVU5VTV9TSVhfRElHSVRfU1lNQk9MID0gMjMsCisgIC8qKiBTZXZlbgorICAg
ICogQGRyYWZ0IElDVSA0LjYKKyAgICovCisgIFVOVU1fU0VWRU5fRElHSVRfU1lNQk9MID0gMjQs
CisgIC8qKiBFaWdodAorICAgKiBAZHJhZnQgSUNVIDQuNgorICAgKi8KKyAgVU5VTV9FSUdIVF9E
SUdJVF9TWU1CT0wgPSAyNSwKKyAgLyoqIE5pbmUKKyAgICogQGRyYWZ0IElDVSA0LjYKKyAgICov
CisgIFVOVU1fTklORV9ESUdJVF9TWU1CT0wgPSAyNiwKKyAgLyoqIGNvdW50IHN5bWJvbCBjb25z
dGFudHMgKi8KKyAgVU5VTV9GT1JNQVRfU1lNQk9MX0NPVU5UID0gMjcKK30gVU51bWJlckZvcm1h
dFN5bWJvbDsKKworLyoqCisqIEdldCBhIHN5bWJvbCBhc3NvY2lhdGVkIHdpdGggYSBVTnVtYmVy
Rm9ybWF0LgorKiBBIFVOdW1iZXJGb3JtYXQgdXNlcyBzeW1ib2xzIHRvIHJlcHJlc2VudCB0aGUg
c3BlY2lhbCBsb2NhbGUtZGVwZW5kZW50CisqIGNoYXJhY3RlcnMgaW4gYSBudW1iZXIsIGZvciBl
eGFtcGxlIHRoZSBwZXJjZW50IHNpZ24uIFRoaXMgQVBJIGlzIG5vdAorKiBzdXBwb3J0ZWQgZm9y
IHJ1bGUtYmFzZWQgZm9ybWF0dGVycy4KKyogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHF1
ZXJ5LgorKiBAcGFyYW0gc3ltYm9sIFRoZSBVTnVtYmVyRm9ybWF0U3ltYm9sIGNvbnN0YW50IGZv
ciB0aGUgc3ltYm9sIHRvIGdldAorKiBAcGFyYW0gYnVmZmVyIFRoZSBzdHJpbmcgYnVmZmVyIHRo
YXQgd2lsbCByZWNlaXZlIHRoZSBzeW1ib2wgc3RyaW5nOworKiAgICAgICAgICAgICAgIGlmIGl0
IGlzIE5VTEwsIHRoZW4gb25seSB0aGUgbGVuZ3RoIG9mIHRoZSBzeW1ib2wgaXMgcmV0dXJuZWQK
KyogQHBhcmFtIHNpemUgVGhlIHNpemUgb2YgdGhlIHN0cmluZyBidWZmZXIKKyogQHBhcmFtIHN0
YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMKKyog
QHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSBzeW1ib2w7IHRoZSBidWZmZXIgaXMgbm90IG1vZGlm
aWVkIGlmCisqICAgICAgICAgPGNvZGU+bGVuZ3RoJmd0Oz1zaXplPC9jb2RlPgorKiBAc2VlIHVu
dW1fc2V0U3ltYm9sCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9F
WFBPUlQyCit1bnVtX2dldFN5bWJvbChjb25zdCBVTnVtYmVyRm9ybWF0ICpmbXQsCisgICAgICAg
ICAgICAgICBVTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCwKKyAgICAgICAgICAgICAgIFVDaGFy
ICpidWZmZXIsCisgICAgICAgICAgICAgICBpbnQzMl90IHNpemUsCisgICAgICAgICAgICAgICBV
RXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyogU2V0IGEgc3ltYm9sIGFzc29jaWF0ZWQgd2l0
aCBhIFVOdW1iZXJGb3JtYXQuCisqIEEgVU51bWJlckZvcm1hdCB1c2VzIHN5bWJvbHMgdG8gcmVw
cmVzZW50IHRoZSBzcGVjaWFsIGxvY2FsZS1kZXBlbmRlbnQKKyogY2hhcmFjdGVycyBpbiBhIG51
bWJlciwgZm9yIGV4YW1wbGUgdGhlIHBlcmNlbnQgc2lnbi4gIFRoaXMgQVBJIGlzIG5vdAorKiBz
dXBwb3J0ZWQgZm9yIHJ1bGUtYmFzZWQgZm9ybWF0dGVycy4KKyogQHBhcmFtIGZtdCBUaGUgZm9y
bWF0dGVyIHRvIHNldC4KKyogQHBhcmFtIHN5bWJvbCBUaGUgVU51bWJlckZvcm1hdFN5bWJvbCBj
b25zdGFudCBmb3IgdGhlIHN5bWJvbCB0byBzZXQKKyogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcg
dG8gc2V0IHRoZSBzeW1ib2wgdG8KKyogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBz
dHJpbmcsIG9yIC0xIGZvciBhIHplcm8tdGVybWluYXRlZCBzdHJpbmcKKyogQHBhcmFtIHN0YXR1
cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCisqIEBz
ZWUgdW51bV9nZXRTeW1ib2wKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgdm9pZCBV
X0VYUE9SVDIKK3VudW1fc2V0U3ltYm9sKFVOdW1iZXJGb3JtYXQgKmZtdCwKKyAgICAgICAgICAg
ICAgIFVOdW1iZXJGb3JtYXRTeW1ib2wgc3ltYm9sLAorICAgICAgICAgICAgICAgY29uc3QgVUNo
YXIgKnZhbHVlLAorICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCisgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisKKy8qKgorICogR2V0IHRoZSBsb2NhbGUgZm9yIHRo
aXMgbnVtYmVyIGZvcm1hdCBvYmplY3QuCisgKiBZb3UgY2FuIGNob29zZSBiZXR3ZWVuIHZhbGlk
IGFuZCBhY3R1YWwgbG9jYWxlLgorICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIGdldCB0
aGUgbG9jYWxlIGZyb20KKyAqIEBwYXJhbSB0eXBlIHR5cGUgb2YgdGhlIGxvY2FsZSB3ZSdyZSBs
b29raW5nIGZvciAodmFsaWQgb3IgYWN0dWFsKSAKKyAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29k
ZSBmb3IgdGhlIG9wZXJhdGlvbgorICogQHJldHVybiB0aGUgbG9jYWxlIG5hbWUKKyAqIEBzdGFi
bGUgSUNVIDIuOAorICovCitVX1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKK3VudW1fZ2V0
TG9jYWxlQnlUeXBlKGNvbnN0IFVOdW1iZXJGb3JtYXQgKmZtdCwKKyAgICAgICAgICAgICAgICAg
ICAgIFVMb2NEYXRhTG9jYWxlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgVUVycm9y
Q29kZSogc3RhdHVzKTsgCisKKyNlbmRpZiAvKiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORyAq
LworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29k
ZS91b2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW9iamVjdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3ZDRjODRkYTViNjc4ZTJkZjQ4YWU0M2I2ODJhYjU0OTA5MjgzNTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdW9iamVj
dC5oCkBAIC0wLDAgKzEsMzUyIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAg
Q29weXJpZ2h0IChDKSAyMDAyLTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
KyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorKiAgIGZpbGUgbmFtZTogIHVvYmplY3QuaAorKiAgIGVuY29k
aW5nOiAgIFVTLUFTQ0lJCisqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50
YXRpb246NAorKgorKiAgIGNyZWF0ZWQgb246IDIwMDJqdW4yNgorKiAgIGNyZWF0ZWQgYnk6IE1h
cmt1cyBXLiBTY2hlcmVyCisqLworCisjaWZuZGVmIF9fVU9CSkVDVF9IX18KKyNkZWZpbmUgX19V
T0JKRUNUX0hfXworCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKworVV9OQU1FU1BBQ0Vf
QkVHSU4KKworLyoqCisgKiBcZmlsZQorICogXGJyaWVmIEMrKyBBUEk6IENvbW1vbiBJQ1UgYmFz
ZSBjbGFzcyBVT2JqZWN0LgorICovCisKKy8qKiAgVV9PVkVSUklERV9DWFhfQUxMT0NBVElPTiAt
IERlZmluZSB0aGlzIHRvIG92ZXJyaWRlIG9wZXJhdG9yIG5ldyBhbmQKKyAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpbiBVTWVtb3J5LiBFbmFibGVkIGJ5IGRlZmF1bHQg
Zm9yIElDVS4KKyAqCisgKiAgICAgICAgIEVuYWJsaW5nIGZvcmNlcyBhbGwgYWxsb2NhdGlvbiBv
ZiBJQ1Ugb2JqZWN0IHR5cGVzIHRvIHVzZSBJQ1UncworICogICAgICAgICBtZW1vcnkgYWxsb2Nh
dGlvbi4gT24gV2luZG93cywgdGhpcyBhbGxvd3MgdGhlIElDVSBETEwgdG8gYmUgdXNlZCBieQor
ICogICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCBzdGF0aWNhbGx5IGxpbmsgdGhlIEMgUnVudGlt
ZSBsaWJyYXJ5LCBtZWFuaW5nIHRoYXQKKyAqICAgICAgICAgdGhlIGFwcCBhbmQgSUNVIHdpbGwg
YmUgdXNpbmcgZGlmZmVyZW50IGhlYXBzLgorICoKKyAqIEBzdGFibGUgSUNVIDIuMgorICovICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjaWZuZGVmIFVfT1ZFUlJJREVfQ1hYX0FMTE9D
QVRJT04KKyNkZWZpbmUgVV9PVkVSUklERV9DWFhfQUxMT0NBVElPTiAxCisjZW5kaWYKKworLyoq
IAorICogXGRlZiBVX0hBVkVfUExBQ0VNRU5UX05FVworICogIERlZmluZSB0aGlzIHRvIGRlZmlu
ZSB0aGUgcGxhY2VtZW50IG5ldyBhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgaW4gVU1lbW9yeSBmb3IgU1RMLgorICoKKyAqIEBzdGFibGUgSUNVIDIuNgorICovICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisjaWZuZGVmIFVfSEFWRV9QTEFDRU1FTlRfTkVXCisj
ZGVmaW5lIFVfSEFWRV9QTEFDRU1FTlRfTkVXIDEKKyNlbmRpZgorCisKKy8qKiAKKyAqIFxkZWYg
VV9IQVZFX0RFQlVHX0xPQ0FUSU9OX05FVyAKKyAqIERlZmluZSB0aGlzIHRvIGRlZmluZSB0aGUg
TUZDIGRlYnVnCisgKiB2ZXJzaW9uIG9mIHRoZSBvcGVyYXRvciBuZXcuCisgKgorICogQHN0YWJs
ZSBJQ1UgMy40CisgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNpZm5kZWYgVV9I
QVZFX0RFQlVHX0xPQ0FUSU9OX05FVworI2RlZmluZSBVX0hBVkVfREVCVUdfTE9DQVRJT05fTkVX
IDAKKyNlbmRpZgorCisvKioKKyAqIEB7CisgKiBcZGVmIFVfTk9fVEhST1cKKyAqICAgICAgICAg
RGVmaW5lIHRoaXMgdG8gZGVmaW5lIHRoZSB0aHJvdygpIHNwZWNpZmljYXRpb24gc28KKyAqICAg
ICAgICAgICAgICAgICBjZXJ0YWluIGZ1bmN0aW9ucyBkbyBub3QgdGhyb3cgYW55IGV4Y2VwdGlv
bnMKKyAqCisgKiAgICAgICAgIFVNZW1vcnkgb3BlcmF0b3IgbmV3IG1ldGhvZHMgc2hvdWxkIGhh
dmUgdGhlIHRocm93KCkgc3BlY2lmaWNhdGlvbiAKKyAqICAgICAgICAgYXBwZW5kZWQgdG8gdGhl
bSwgc28gdGhhdCB0aGUgY29tcGlsZXIgYWRkcyB0aGUgYWRkaXRpb25hbCBOVUxMIGNoZWNrIAor
ICogICAgICAgICBiZWZvcmUgY2FsbGluZyBjb25zdHJ1Y3RvcnMuIFdpdGhvdXQsIGlmIDxjb2Rl
Pm9wZXJhdG9yIG5ldzwvY29kZT4gcmV0dXJucyBOVUxMIHRoZSAKKyAqICAgICAgICAgY29uc3Ry
dWN0b3IgaXMgc3RpbGwgY2FsbGVkLCBhbmQgaWYgdGhlIGNvbnN0cnVjdG9yIHJlZmVyZW5jZXMg
bWVtYmVyIAorICogICAgICAgICBkYXRhLCAod2hpY2ggaXQgdHlwaWNhbGx5IGRvZXMpLCB0aGUg
cmVzdWx0IGlzIGEgc2VnbWVudGF0aW9uIHZpb2xhdGlvbi4KKyAqCisgKiBAZHJhZnQgSUNVIDQu
MgorICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjaWZuZGVmIFVfTk9fVEhST1cK
KyNkZWZpbmUgVV9OT19USFJPVyB0aHJvdygpCisjZW5kaWYKKworLyoqIEB9ICovCisKKy8qKgor
ICogVU1lbW9yeSBpcyB0aGUgY29tbW9uIElDVSBiYXNlIGNsYXNzLgorICogQWxsIG90aGVyIElD
VSBDKysgY2xhc3NlcyBhcmUgZGVyaXZlZCBmcm9tIFVNZW1vcnkgKHN0YXJ0aW5nIHdpdGggSUNV
IDIuNCkuCisgKgorICogVGhpcyBpcyBwcmltYXJpbHkgdG8gbWFrZSBpdCBwb3NzaWJsZSBhbmQg
c2ltcGxlIHRvIG92ZXJyaWRlIHRoZQorICogQysrIG1lbW9yeSBtYW5hZ2VtZW50IGJ5IGFkZGlu
ZyBuZXcvZGVsZXRlIG9wZXJhdG9ycyB0byB0aGlzIGJhc2UgY2xhc3MuCisgKgorICogVG8gb3Zl
cnJpZGUgQUxMIElDVSBtZW1vcnkgbWFuYWdlbWVudCwgaW5jbHVkaW5nIHRoYXQgZnJvbSBwbGFp
biBDIGNvZGUsCisgKiByZXBsYWNlIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBkZWNsYXJlZCBp
biBjbWVtb3J5LmgKKyAqCisgKiBVTWVtb3J5IGRvZXMgbm90IGNvbnRhaW4gYW55IHZpcnR1YWwg
ZnVuY3Rpb25zLgorICogQ29tbW9uICJib2lsZXJwbGF0ZSIgZnVuY3Rpb25zIGFyZSBkZWZpbmVk
IGluIFVPYmplY3QuCisgKgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KK2NsYXNzIFVfQ09NTU9O
X0FQSSBVTWVtb3J5IHsKK3B1YmxpYzoKKworLyogdGVzdCB2ZXJzaW9ucyBmb3IgZGVidWdnaW5n
IHNoYXBlciBoZWFwIG1lbW9yeSBwcm9ibGVtcyAqLworI2lmZGVmIFNIQVBFUl9NRU1PUllfREVC
VUcgIAorICAgIHN0YXRpYyB2b2lkICogTmV3QXJyYXkoaW50IHNpemUsIGludCBjb3VudCk7Cisg
ICAgc3RhdGljIHZvaWQgKiBHcm93QXJyYXkodm9pZCAqIGFycmF5LCBpbnQgbmV3U2l6ZSApOwor
ICAgIHN0YXRpYyB2b2lkICAgRnJlZUFycmF5KHZvaWQgKiBhcnJheSApOworI2VuZGlmCisKKyNp
ZiBVX09WRVJSSURFX0NYWF9BTExPQ0FUSU9OCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgZm9y
IElDVTRDIEMrKyBtZW1vcnkgbWFuYWdlbWVudC4KKyAgICAgKiBzaW1wbGUsIG5vbi1jbGFzcyB0
eXBlcyBhcmUgYWxsb2NhdGVkIHVzaW5nIHRoZSBtYWNyb3MgaW4gY29tbW9uL2NtZW1vcnkuaAor
ICAgICAqICh1cHJ2X21hbGxvYygpLCB1cHJ2X2ZyZWUoKSwgdXBydl9yZWFsbG9jKCkpOworICAg
ICAqIHRoZXkgb3Igc29tZXRoaW5nIGVsc2UgY291bGQgYmUgdXNlZCBoZXJlIHRvIGltcGxlbWVu
dCBDKysgbmV3L2RlbGV0ZQorICAgICAqIGZvciBJQ1U0QyBDKysgY2xhc3NlcworICAgICAqIEBz
dGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lkICogVV9FWFBPUlQyIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSkgVV9OT19USFJPVzsKKworICAgIC8qKgorICAgICAqIE92ZXJy
aWRlIGZvciBJQ1U0QyBDKysgbWVtb3J5IG1hbmFnZW1lbnQuCisgICAgICogU2VlIG5ldygpLgor
ICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lkICogVV9FWFBP
UlQyIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSBVX05PX1RIUk9XOworCisgICAgLyoqCisg
ICAgICogT3ZlcnJpZGUgZm9yIElDVTRDIEMrKyBtZW1vcnkgbWFuYWdlbWVudC4KKyAgICAgKiBz
aW1wbGUsIG5vbi1jbGFzcyB0eXBlcyBhcmUgYWxsb2NhdGVkIHVzaW5nIHRoZSBtYWNyb3MgaW4g
Y29tbW9uL2NtZW1vcnkuaAorICAgICAqICh1cHJ2X21hbGxvYygpLCB1cHJ2X2ZyZWUoKSwgdXBy
dl9yZWFsbG9jKCkpOworICAgICAqIHRoZXkgb3Igc29tZXRoaW5nIGVsc2UgY291bGQgYmUgdXNl
ZCBoZXJlIHRvIGltcGxlbWVudCBDKysgbmV3L2RlbGV0ZQorICAgICAqIGZvciBJQ1U0QyBDKysg
Y2xhc3NlcworICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0YXRpYyB2b2lk
IFVfRVhQT1JUMiBvcGVyYXRvciBkZWxldGUodm9pZCAqcCkgVV9OT19USFJPVzsKKworICAgIC8q
KgorICAgICAqIE92ZXJyaWRlIGZvciBJQ1U0QyBDKysgbWVtb3J5IG1hbmFnZW1lbnQuCisgICAg
ICogU2VlIGRlbGV0ZSgpLgorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHN0
YXRpYyB2b2lkIFVfRVhQT1JUMiBvcGVyYXRvciBkZWxldGVbXSh2b2lkICpwKSBVX05PX1RIUk9X
OworCisjaWYgVV9IQVZFX1BMQUNFTUVOVF9ORVcKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBm
b3IgSUNVNEMgQysrIG1lbW9yeSBtYW5hZ2VtZW50IGZvciBTVEwuCisgICAgICogU2VlIG5ldygp
LgorICAgICAqIEBzdGFibGUgSUNVIDIuNgorICAgICAqLworICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCAqIFVfRVhQT1JUMiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkICpwdHIpIFVfTk9fVEhST1cg
eyByZXR1cm4gcHRyOyB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBmb3IgSUNVNEMgQysr
IG1lbW9yeSBtYW5hZ2VtZW50IGZvciBTVEwuCisgICAgICogU2VlIGRlbGV0ZSgpLgorICAgICAq
IEBzdGFibGUgSUNVIDIuNgorICAgICAqLworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBVX0VYUE9S
VDIgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKiwgdm9pZCAqKSBVX05PX1RIUk9XIHt9CisjZW5kaWYg
LyogVV9IQVZFX1BMQUNFTUVOVF9ORVcgKi8KKyNpZiBVX0hBVkVfREVCVUdfTE9DQVRJT05fTkVX
CisgICAgLyoqCisgICAgICAqIFRoaXMgbWV0aG9kIG92ZXJyaWRlcyB0aGUgTUZDIGRlYnVnIHZl
cnNpb24gb2YgdGhlIG9wZXJhdG9yIG5ldworICAgICAgKiAKKyAgICAgICogQHBhcmFtIHNpemUg
ICBUaGUgcmVxdWVzdGVkIG1lbW9yeSBzaXplCisgICAgICAqIEBwYXJhbSBmaWxlICAgVGhlIGZp
bGUgd2hlcmUgdGhlIGFsbG9jYXRpb24gd2FzIHJlcXVlc3RlZAorICAgICAgKiBAcGFyYW0gbGlu
ZSAgIFRoZSBsaW5lIHdoZXJlIHRoZSBhbGxvY2F0aW9uIHdhcyByZXF1ZXN0ZWQgCisgICAgICAq
LyAKKyAgICBzdGF0aWMgdm9pZCAqIFVfRVhQT1JUMiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUs
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSBVX05PX1RIUk9XOworICAgIC8qKgorICAgICAg
KiBUaGlzIG1ldGhvZCBwcm92aWRlcyBhIG1hdGNoaW5nIGRlbGV0ZSBmb3IgdGhlIE1GQyBkZWJ1
ZyBuZXcKKyAgICAgICogCisgICAgICAqIEBwYXJhbSBwICAgICAgVGhlIHBvaW50ZXIgdG8gdGhl
IGFsbG9jYXRlZCBtZW1vcnkKKyAgICAgICogQHBhcmFtIGZpbGUgICBUaGUgZmlsZSB3aGVyZSB0
aGUgYWxsb2NhdGlvbiB3YXMgcmVxdWVzdGVkCisgICAgICAqIEBwYXJhbSBsaW5lICAgVGhlIGxp
bmUgd2hlcmUgdGhlIGFsbG9jYXRpb24gd2FzIHJlcXVlc3RlZCAKKyAgICAgICovIAorICAgIHN0
YXRpYyB2b2lkIFVfRVhQT1JUMiBvcGVyYXRvciBkZWxldGUodm9pZCogcCwgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUpIFVfTk9fVEhST1c7CisjZW5kaWYgLyogVV9IQVZFX0RFQlVHX0xPQ0FU
SU9OX05FVyAqLworI2VuZGlmIC8qIFVfT1ZFUlJJREVfQ1hYX0FMTE9DQVRJT04gKi8KKworICAg
IC8qCisgICAgICogQXNzaWdubWVudCBvcGVyYXRvciBub3QgZGVjbGFyZWQuIFRoZSBjb21waWxl
ciB3aWxsIHByb3ZpZGUgb25lCisgICAgICogd2hpY2ggZG9lcyBub3RoaW5nIHNpbmNlIHRoaXMg
Y2xhc3MgZG9lcyBub3QgY29udGFpbiBhbnkgZGF0YSBtZW1iZXJzLgorICAgICAqIEFQSS9jb2Rl
IGNvdmVyYWdlIG1heSBzaG93IHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGFzIHByZXNlbnQgYW5k
CisgICAgICogdW50ZXN0ZWQgLSBpZ25vcmUuCisgICAgICogU3ViY2xhc3NlcyBuZWVkIHRoaXMg
YXNzaWdubWVudCBvcGVyYXRvciBpZiB0aGV5IHVzZSBjb21waWxlci1wcm92aWRlZAorICAgICAq
IGFzc2lnbm1lbnQgb3BlcmF0b3JzIG9mIHRoZWlyIG93bi4gQW4gYWx0ZXJuYXRpdmUgdG8gbm90
IGRlY2xhcmluZyBvbmUKKyAgICAgKiBoZXJlIHdvdWxkIGJlIHRvIGRlY2xhcmUgYW5kIGVtcHR5
LWltcGxlbWVudCBhIHByb3RlY3RlZCBvciBwdWJsaWMgb25lLgorICAgIFVNZW1vcnkgJlVNZW1v
cnk6Om9wZXJhdG9yPShjb25zdCBVTWVtb3J5ICYpOworICAgICAqLworfTsKKworLyoqCisgKiBV
T2JqZWN0IGlzIHRoZSBjb21tb24gSUNVICJib2lsZXJwbGF0ZSIgY2xhc3MuCisgKiBVT2JqZWN0
IGluaGVyaXRzIFVNZW1vcnkgKHN0YXJ0aW5nIHdpdGggSUNVIDIuNCksCisgKiBhbmQgYWxsIG90
aGVyIHB1YmxpYyBJQ1UgQysrIGNsYXNzZXMKKyAqIGFyZSBkZXJpdmVkIGZyb20gVU9iamVjdCAo
c3RhcnRpbmcgd2l0aCBJQ1UgMi4yKS4KKyAqCisgKiBVT2JqZWN0IGNvbnRhaW5zIGNvbW1vbiB2
aXJ0dWFsIGZ1bmN0aW9ucyBsaWtlIGZvciBJQ1UncyAicG9vciBtYW4ncyBSVFRJIi4KKyAqIEl0
IGRvZXMgbm90IGNvbnRhaW4gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRo
b2RzCisgKiBsaWtlIGdldER5bmFtaWNDbGFzc0lEIHRvIGFsbG93IGRlcml2ZWQgY2xhc3NlcyBz
dWNoIGFzIEZvcm1hdAorICogdG8gZGVjbGFyZSB0aGVzZSBhcyBwdXJlIHZpcnR1YWwuCisgKgor
ICogVGhlIGNsb25lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBVT2JqZWN0IGJlY2F1
c2UgaXQgaXMgbm90CisgKiBpbXBsZW1lbnRlZCBieSBhbGwgSUNVIGNsYXNzZXMuCisgKiBNYW55
IElDVSBzZXJ2aWNlcyBwcm92aWRlIGEgY2xvbmUoKSBmdW5jdGlvbiBmb3IgdGhlaXIgY2xhc3Mg
dHJlZXMsCisgKiBkZWZpbmVkIG9uIHRoZSBzZXJ2aWNlJ3MgQysrIGJhc2UgY2xhc3MsIGFuZCBh
bGwgc3ViY2xhc3NlcyB3aXRoaW4gdGhhdAorICogc2VydmljZSBjbGFzcyB0cmVlIHJldHVybiBh
IHBvaW50ZXIgdG8gdGhlIHNlcnZpY2UgYmFzZSBjbGFzcworICogKHdoaWNoIGl0c2VsZiBpcyBh
IHN1YmNsYXNzIG9mIFVPYmplY3QpLgorICogVGhpcyBpcyBiZWNhdXNlIHNvbWUgY29tcGlsZXJz
IGRvIG5vdCBzdXBwb3J0IGNvdmFyaWFudCAoc2FtZS1hcy10aGlzKQorICogcmV0dXJuIHR5cGVz
OyBjYXN0IHRvIHRoZSBhcHByb3ByaWF0ZSBzdWJjbGFzcyBpZiBuZWNlc3NhcnkuCisgKgorICog
QHN0YWJsZSBJQ1UgMi4yCisgKi8KK2NsYXNzIFVfQ09NTU9OX0FQSSBVT2JqZWN0IDogcHVibGlj
IFVNZW1vcnkgeworcHVibGljOgorICAgIC8qKgorICAgICAqIERlc3RydWN0b3IuCisgICAgICoK
KyAgICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIH5VT2JqZWN0KCk7
CisKKyAgICAvKioKKyAgICAgKiBJQ1U0QyAicG9vciBtYW4ncyBSVFRJIiwgcmV0dXJucyBhIFVD
bGFzc0lEIGZvciB0aGUgYWN0dWFsIElDVSBjbGFzcy4KKyAgICAgKgorICAgICAqIEBzdGFibGUg
SUNVIDIuMgorICAgICAqLworICAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0RHluYW1pY0NsYXNzSUQo
KSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9u
cyBhcmUgcHJvdGVjdGVkIHRvIHByZXZlbnQgaW5zdGFudGlhdGlvbiBhbmQKKyAgICAvLyBkaXJl
Y3QgdXNlIG9mIFVPYmplY3QgaXRzZWxmCisKKyAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yCisg
ICAgLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFVPYmplY3QgaXMgYWJzdHJhY3QgKHNlZSBnZXRE
eW5hbWljQ2xhc3NJRCkKKyAgICAvLyBpbmxpbmUgVU9iamVjdCgpIHt9CisKKyAgICAvLyBjb3B5
IGNvbnN0cnVjdG9yCisgICAgLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFVPYmplY3QgaXMgYWJz
dHJhY3QgKHNlZSBnZXREeW5hbWljQ2xhc3NJRCkKKyAgICAvLyBpbmxpbmUgVU9iamVjdChjb25z
dCBVT2JqZWN0ICZvdGhlcikge30KKworI2lmIDAKKyAgICAvLyBUT0RPIFNvbWV0aW1lIGluIHRo
ZSBmdXR1cmUuIEltcGxlbWVudCBvcGVyYXRvcj09KCkuCisgICAgLy8gKFRoaXMgY29tbWVudCBp
bnNlcnRlZCBpbiAyLjIpCisgICAgLy8gc29tZSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyAiYm9p
bGVycGxhdGUiIGZ1bmN0aW9ucyBtYXkgYmUgbWFkZSBwdWJsaWMKKyAgICAvLyBpbiBhIGZ1dHVy
ZSBJQ1U0QyByZWxlYXNlIHdoZW4gYWxsIHN1YmNsYXNzZXMgaW1wbGVtZW50IHRoZW0KKworICAg
IC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgICAvLyAobm90IHZpcnR1YWwsIHNlZSAiVGFsaWdl
bnQncyBHdWlkZSB0byBEZXNpZ25pbmcgUHJvZ3JhbXMiIHBwLjczLi43NCkKKyAgICAvLyBjb21t
ZW50ZWQgb3V0IGJlY2F1c2UgdGhlIGltcGxlbWVudGF0aW9uIGlzIHRoZSBzYW1lIGFzIGEgY29t
cGlsZXIncyBkZWZhdWx0CisgICAgLy8gVU9iamVjdCAmb3BlcmF0b3I9KGNvbnN0IFVPYmplY3Qg
Jm90aGVyKSB7IHJldHVybiAqdGhpczsgfQorCisgICAgLy8gY29tcGFyaXNvbiBvcGVyYXRvcnMK
KyAgICB2aXJ0dWFsIGlubGluZSBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IFVPYmplY3QgJm90aGVy
KSBjb25zdCB7IHJldHVybiB0aGlzPT0mb3RoZXI7IH0KKyAgICBpbmxpbmUgVUJvb2wgb3BlcmF0
b3IhPShjb25zdCBVT2JqZWN0ICZvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3Ro
ZXIpOyB9CisKKyAgICAvLyBjbG9uZSgpIGNvbW1lbnRlZCBvdXQgZnJvbSB0aGUgYmFzZSBjbGFz
czoKKyAgICAvLyBzb21lIGNvbXBpbGVycyBkbyBub3Qgc3VwcG9ydCBjby12YXJpYW50IHJldHVy
biB0eXBlcworICAgIC8vIChpLmUuLCBzdWJjbGFzc2VzIHdvdWxkIGhhdmUgdG8gcmV0dXJuIFVP
YmplY3QgKiBhcyB3ZWxsLCBpbnN0ZWFkIG9mIFN1YkNsYXNzICopCisgICAgLy8gc2VlIGFsc28g
VU9iamVjdCBjbGFzcyBkb2N1bWVudGF0aW9uLgorICAgIC8vIHZpcnR1YWwgVU9iamVjdCAqY2xv
bmUoKSBjb25zdDsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBBc3NpZ25tZW50IG9wZXJhdG9y
IG5vdCBkZWNsYXJlZC4gVGhlIGNvbXBpbGVyIHdpbGwgcHJvdmlkZSBvbmUKKyAgICAgKiB3aGlj
aCBkb2VzIG5vdGhpbmcgc2luY2UgdGhpcyBjbGFzcyBkb2VzIG5vdCBjb250YWluIGFueSBkYXRh
IG1lbWJlcnMuCisgICAgICogQVBJL2NvZGUgY292ZXJhZ2UgbWF5IHNob3cgdGhlIGFzc2lnbm1l
bnQgb3BlcmF0b3IgYXMgcHJlc2VudCBhbmQKKyAgICAgKiB1bnRlc3RlZCAtIGlnbm9yZS4KKyAg
ICAgKiBTdWJjbGFzc2VzIG5lZWQgdGhpcyBhc3NpZ25tZW50IG9wZXJhdG9yIGlmIHRoZXkgdXNl
IGNvbXBpbGVyLXByb3ZpZGVkCisgICAgICogYXNzaWdubWVudCBvcGVyYXRvcnMgb2YgdGhlaXIg
b3duLiBBbiBhbHRlcm5hdGl2ZSB0byBub3QgZGVjbGFyaW5nIG9uZQorICAgICAqIGhlcmUgd291
bGQgYmUgdG8gZGVjbGFyZSBhbmQgZW1wdHktaW1wbGVtZW50IGEgcHJvdGVjdGVkIG9yIHB1Ymxp
YyBvbmUuCisgICAgVU9iamVjdCAmVU9iamVjdDo6b3BlcmF0b3I9KGNvbnN0IFVPYmplY3QgJik7
CisgICAgICovCisKKy8vIEZ1dHVyZSBpbXBsZW1lbnRhdGlvbiBmb3IgUlRUSSB0aGF0IHN1cHBv
cnQgc3VidHlwaW5nLiBbYWxhbl0KKy8vIAorLy8gIHB1YmxpYzoKKy8vICAgICAvKioKKy8vICAg
ICAgKiBAaW50ZXJuYWwKKy8vICAgICAgKi8KKy8vICAgICBzdGF0aWMgVUNsYXNzSUQgZ2V0U3Rh
dGljQ2xhc3NJRCgpOworLy8gCisvLyAgICAgLyoqCisvLyAgICAgICogQGludGVybmFsCisvLyAg
ICAgICovCisvLyAgICAgVUJvb2wgaW5zdGFuY2VPZihVQ2xhc3NJRCB0eXBlKSBjb25zdDsKK307
CisKKy8qKgorICogVGhpcyBpcyBhIHNpbXBsZSBtYWNybyB0byBhZGQgSUNVIFJUVEkgdG8gYW4g
SUNVIG9iamVjdCBpbXBsZW1lbnRhdGlvbi4KKyAqIFRoaXMgZG9lcyBub3QgZ28gaW50byB0aGUg
aGVhZGVyLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gKi5jcHAgZmlsZXMuCisgKgorICog
QHBhcmFtIG15Q2xhc3MgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRUSSBkZWZp
bmVkLgorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfUlRUSV9JTVBM
RU1FTlRBVElPTihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgVV9FWFBPUlQyIG15Q2xhc3M6Omdl
dFN0YXRpY0NsYXNzSUQoKSB7IFwKKyAgICAgICAgc3RhdGljIGNoYXIgY2xhc3NJRCA9IDA7IFwK
KyAgICAgICAgcmV0dXJuIChVQ2xhc3NJRCkmY2xhc3NJRDsgXAorICAgIH0gXAorICAgIFVDbGFz
c0lEIG15Q2xhc3M6OmdldER5bmFtaWNDbGFzc0lEKCkgY29uc3QgXAorICAgIHsgcmV0dXJuIG15
Q2xhc3M6OmdldFN0YXRpY0NsYXNzSUQoKTsgfQorCisKKy8qKgorICogVGhpcyBtYWNybyBhZGRz
IElDVSBSVFRJIHRvIGFuIElDVSBhYnN0cmFjdCBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKyAqIFRo
aXMgbWFjcm8gc2hvdWxkIGJlIGludm9rZWQgaW4gKi5jcHAgZmlsZXMuICBUaGUgY29ycmVzcG9u
ZGluZworICogaGVhZGVyIHNob3VsZCBkZWNsYXJlIGdldFN0YXRpY0NsYXNzSUQuCisgKgorICog
QHBhcmFtIG15Q2xhc3MgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRUSSBkZWZp
bmVkLgorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfQUJTVFJBQ1Rf
UlRUSV9JTVBMRU1FTlRBVElPTihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgVV9FWFBPUlQyIG15
Q2xhc3M6OmdldFN0YXRpY0NsYXNzSUQoKSB7IFwKKyAgICAgICAgc3RhdGljIGNoYXIgY2xhc3NJ
RCA9IDA7IFwKKyAgICAgICAgcmV0dXJuIChVQ2xhc3NJRCkmY2xhc3NJRDsgXAorICAgIH0KKwor
LyoqCisgKiBUaGlzIGlzIGEgc2ltcGxlIG1hY3JvIHRvIGV4cHJlc3MgdGhhdCBhIGNsYXNzIGFu
ZCBpdHMgc3ViY2xhc3NlcyBkbyBub3Qgb2ZmZXIKKyAqIElDVSdzICJwb29yIG1hbidzIFJUVEki
LgorICogQmVnaW5uaW5nIHdpdGggSUNVIDQuNiwgSUNVIHJlcXVpcmVzIEMrKyBjb21waWxlciBS
VFRJLgorICogVGhpcyBkb2VzIG5vdCBnbyBpbnRvIHRoZSBoZWFkZXIuIFRoaXMgc2hvdWxkIG9u
bHkgYmUgdXNlZCBpbiAqLmNwcCBmaWxlcy4KKyAqIFVzZSB0aGlzIHdpdGggYSBwcml2YXRlIGdl
dER5bmFtaWNDbGFzc0lEKCkgaW4gYW4gaW1tZWRpYXRlIHN1YmNsYXNzIG9mIFVPYmplY3QuCisg
KgorICogQHBhcmFtIG15Q2xhc3MgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgbmVlZHMgUlRU
SSBkZWZpbmVkLgorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfTk9f
UlRUSV9JTVBMRU1FTlRBVElPTihteUNsYXNzKSBcCisgICAgVUNsYXNzSUQgbXlDbGFzczo6Z2V0
RHluYW1pY0NsYXNzSUQoKSBjb25zdCB7IHJldHVybiBOVUxMOyB9CisKKy8vIC8qKgorLy8gICog
VGhpcyBtYWNybyBhZGRzIElDVSBSVFRJIHRvIGFuIElDVSBjb25jcmV0ZSBjbGFzcyBpbXBsZW1l
bnRhdGlvbi4KKy8vICAqIFRoaXMgbWFjcm8gc2hvdWxkIGJlIGludm9rZWQgaW4gKi5jcHAgZmls
ZXMuICBUaGUgY29ycmVzcG9uZGluZworLy8gICogaGVhZGVyIHNob3VsZCBkZWNsYXJlIGdldER5
bmFtaWNDbGFzc0lEIGFuZCBnZXRTdGF0aWNDbGFzc0lELgorLy8gICoKKy8vICAqIEBwYXJhbSBt
eUNsYXNzIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IG5lZWRzIFJUVEkgZGVmaW5lZC4KKy8v
ICAqIEBwYXJhbSBteVBhcmVudCBUaGUgbmFtZSBvZiB0aGUgbXlDbGFzcydzIHBhcmVudC4KKy8v
ICAqIEBpbnRlcm5hbAorLy8gICovCisvKiNkZWZpbmUgVU9CSkVDVF9ERUZJTkVfUlRUSV9JTVBM
RU1FTlRBVElPTihteUNsYXNzLCBteVBhcmVudCkgXAorICAgIFVPQkpFQ1RfREVGSU5FX0FCU1RS
QUNUX1JUVElfSU1QTEVNRU5UQVRJT04obXlDbGFzcywgbXlQYXJlbnQpIFwKKyAgICBVQ2xhc3NJ
RCBteUNsYXNzOjpnZXREeW5hbWljQ2xhc3NJRCgpIGNvbnN0IHsgXAorICAgICAgICByZXR1cm4g
bXlDbGFzczo6Z2V0U3RhdGljQ2xhc3NJRCgpOyBcCisgICAgfQorKi8KKworCitVX05BTUVTUEFD
RV9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA0ZDZjNWRhNjIxODYwNWFjZTFkNTIwMjJkMmRlYjJhMGIz
MjUxZjI3Li5iNmU2ZDRiYjI4M2YyNzliYzFhOTRiMDk0OWFiN2I5YTU0ZWIyYTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTM4LDEyICszOCwxNCBAQAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0
aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKKyAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFj
cm8oSlNPTikgXAogICAgIG1hY3JvKE1hcClcCiAgICAgbWFjcm8oTWFwSXRlcmF0b3IpXAogICAg
IG1hY3JvKE1hdGgpIFwKICAgICBtYWNybyhOYU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKKyAg
ICBtYWNybyhOdW1iZXJGb3JtYXQpIFwKICAgICBtYWNybyhPYmplY3QpIFwKICAgICBtYWNybyhQ
cm9taXNlKSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJvcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmY0NzVh
YWNlYWM2YTdmNjk0M2MzMjA0MDdjZjAxNjQ0YmQ0ODg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTAsMCAr
MSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShJbnRsTnVtYmVyRm9ybWF0KSB9OworCitJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9y
bWF0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxOdW1iZXJGb3Jt
YXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+
KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0KHZtLCBnbG9iYWxPYmplY3QtPm51bWJlckZvcm1h
dFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtLCBjb25zdHJ1Y3Rv
cik7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXQ6OkludGxOdW1iZXJGb3JtYXQoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CisgICAgCisgICAgbV9jb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGNvbnN0cnVjdG9yKTsK
K30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2VsbCktPkludGxOdW1iZXJGb3JtYXQ6
On5JbnRsTnVtYmVyRm9ybWF0KCk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlh
bGl6ZU51bWJlckZvcm1hdCgvKkpTVmFsdWUgbG9jYWxlLCBKU1ZhbHVlIG9wdGlvbnMqLykKK3sK
KyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBtX251bWJlckZvcm1h
dCA9IHVudW1fb3BlbihVTlVNX0RFRkFVTFQsIE5VTEwsIC0xLCBOVUxMLCBOVUxMLCAmc3RhdHVz
KTsKKyAgICAvLyBUT0RPOiBoYW5kbGUgZXJyb3IKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWQ4MDNkNTM4NGQ4ZTZlMGEyNmQ3
NGU2YWVkNGU4ODAxNGI5MDYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdF9oCisjZGVmaW5lIEludGxO
dW1iZXJGb3JtYXRfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0
aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOworCitjbGFzcyBJbnRsTnVt
YmVyRm9ybWF0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSW50bE51bWJl
ckZvcm1hdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9p
ZCBpbml0aWFsaXplTnVtYmVyRm9ybWF0KC8qSlNWYWx1ZSwgSlNWYWx1ZSovKTsKKworICAgIFVO
dW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9udW1iZXJGb3JtYXQ7CisgICAgfQorCisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
KiBjb25zdHJ1Y3RvcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jb25zdHJ1Y3Rv
ci5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAg
VU51bWJlckZvcm1hdCogbV9udW1iZXJGb3JtYXQ7CisgICAgV3JpdGVCYXJyaWVyPEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcj4gbV9jb25zdHJ1Y3RvcjsKKy8qCisgICAgU3RyaW5nIG1fbG9j
YWxlOworICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKKyAgICBTdHJpbmcgbV9zdHlsZTsK
KyAgICBTdHJpbmcgbV9jdXJyZW5jeTsKKyAgICBTdHJpbmcgbV9jdXJyZW5jeURpc3BsYXk7Cisg
ICAgaW50MzJfdCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOworICAgIGludDMyX3QgbV9taW5pbXVt
RnJhY3Rpb25EaWdpdHM7CisgICAgaW50MzJfdCBtX21heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAg
ICBpbnQzMl90IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOworICAgIGludDMyX3QgbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgYm9vbCBtX3VzZUdyb3VwaW5nOworKi8KK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAv
LyBJbnRsTnVtYmVyRm9ybWF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM4NDJiNzhkMDg4MmMyY2JkOTU3Y2EyM2VhZDA2ZjQzOWJmMGM0NGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgor
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSA8dW5pY29kZS91bG9jLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50
ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNv
dXJjZSBmb3IgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gbnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1h
dFByb3RvdHlwZSkKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgbnVtYmVyRm9ybWF0UHJvdG90
eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJOdW1iZXJGb3JtYXQiKSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVs
ZXRlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVt
YmVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxLiBJZiBsb2NhbGVzIGlzIG5v
dCBwcm92aWRlZCwgdGhlbiBsZXQgbG9jYWxlcyBiZSB1bmRlZmluZWQuCisgICAgLy9KU1ZhbHVl
IGxvY2FsZXMgPSBleGVjLT5hcmd1bWVudCgwKTsKKworICAgIC8vIDIuIElmIG9wdGlvbnMgaXMg
bm90IHByb3ZpZGVkLCB0aGVuIGxldCBvcHRpb25zIGJlIHVuZGVmaW5lZC4KKyAgICAvL0pTVmFs
dWUgb3B0aW9ucyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpOworCisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gSW50bE51bWJl
ckZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gQ2FsbCB0aGUgSW5p
dGlhbGl6ZU51bWJlckZvcm1hdCBhYnN0cmFjdCBvcGVyYXRpb24gKGRlZmluZWQgaW4gMTEuMS4x
LjEpLCBwYXNzaW5nIGFzIGFyZ3VtZW50cyB0aGUgbmV3bHkgY29uc3RydWN0ZWQgb2JqZWN0LCBs
b2NhbGVzLCBhbmQgb3B0aW9ucy4KKyAgICBmb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
Lypsb2NhbGVzLCBvcHRpb25zKi8pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3Jt
YXQpOworfQorCitDb25zdHJ1Y3RUeXBlIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQorewor
ICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50bE51bWJlckZv
cm1hdDsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNh
bGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxO
dW1iZXJGb3JtYXQ7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVu
Y3Rpb24+KGV4ZWMsIG51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEludGwu
TnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKQorICAg
IC8vIFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2Nh
bGVzT2YgbWV0aG9kIGlzIDEuCisKKyAgICAvLyBUT0RPOiBzdXBwb3J0IHRoZSBhcmd1bWVudHMs
IGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgYWxsCisgICAgLy8gMS4gSWYgb3B0aW9ucyBpcyBu
b3QgcHJvdmlkZWQsIHRoZW4gbGV0IG9wdGlvbnMgYmUgdW5kZWZpbmVkLgorICAgIC8vIDIuIExl
dCBhdmFpbGFibGVMb2NhbGVzIGJlIHRoZSB2YWx1ZSBvZiB0aGUgW1thdmFpbGFibGVMb2NhbGVz
XV0gaW50ZXJuYWwgcHJvcGVydHkgb2YgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0
IGlzIHRoZSBpbml0aWFsIHZhbHVlIG9mIEludGwuTnVtYmVyRm9ybWF0LgorICAgIC8vIDMuIExl
dCByZXF1ZXN0ZWRMb2NhbGVzIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgQ2Fub25pY2Fs
aXplTG9jYWxlTGlzdCBhYnN0cmFjdCBvcGVyYXRpb24gKGRlZmluZWQgaW4gOS4yLjEpIHdpdGgg
YXJndW1lbnQgbG9jYWxlcy4KKyAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5n
IHRoZSBTdXBwb3J0ZWRMb2NhbGVzIGFic3RyYWN0IG9wZXJhdGlvbiAoZGVmaW5lZCBpbiA5LjIu
OCkgd2l0aCBhcmd1bWVudHMgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgYW5k
IG9wdGlvbnMuCisKKyAgICBpbnQzMl90IGNvdW50ID0gdWxvY19jb3VudEF2YWlsYWJsZSgpOwor
ICAKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxw
dHIsIGNvdW50KTsKKworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
KyAgICAgICAgY29uc3QgY2hhciogbG9jSWQgPSB1bG9jX2dldEF2YWlsYWJsZShpKTsKKyAgICAg
ICAgY2hhciB0YWdbVUxPQ19GVUxMTkFNRV9DQVBBQ0lUWV07CisgICAgICAgIFVFcnJvckNvZGUg
ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVsb2NfdG9MYW5ndWFnZVRhZyhsb2NJZCwg
dGFnLCBVTE9DX0ZVTExOQU1FX0NBUEFDSVRZLCBGQUxTRSwgJmVycm9yKTsKKyAgICAgICAgLy8g
VE9ETzogaGFuZGxlIGVycm9yCisgICAgICAgIEpTVmFsdWUgdiA9IGpzU3RyaW5nKGV4ZWMsIFN0
cmluZyh0YWcpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCB2KTsK
KyAgICB9CisgICAgcmVzdWx0LT5zZXRMZW5ndGgoZXhlYywgY291bnQpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Njgx
OWI0ZGE2ZGZjYTI1OGEyNDc4YzQ0YzU2NzNmYTRlOGZjNDg2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3JfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OworY2xhc3Mg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90OworCisgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSopOworCitwcml2YXRlOgorICAgIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwor
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MmMyYTlmNTkxYzFmNjk3Mjc1NzUwMmE4NGQwMjRkZWI0MjVhNjRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5jcHAKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBW
YW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCisKKyNp
ZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0KEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgJm51bWJlckZvcm1hdFByb3RvdHlwZVRhYmxlLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNv
dXJjZSBmb3IgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIG51bWJlckZv
cm1hdFByb3RvdHlwZVRhYmxlCisgIGZvcm1hdCAgICAgICAgICAgICAgICBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgcmVzb2x2ZWRPcHRpb25zICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAor
Ki8KKworSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVy
ZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7
Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTdHJ1Y3R1cmUqKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKwor
Ym9vbCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxK
U09iamVjdD4oZXhlYywgbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKwor
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCB0b0RvdWJsZShKU1ZhbHVlIHZhbHVlLCBkb3VibGUm
IHgpCit7CisgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICB4ID0gdmFsdWUuYXNJ
bnQzMigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAodmFsdWUuaXNE
b3VibGUoKSkgeworICAgICAgICB4ID0gdmFsdWUuYXNEb3VibGUoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIAorICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiB2YWx1ZS5hc0Nl
bGwoKS0+dHlwZSgpID09IE51bWJlck9iamVjdFR5cGUpIHsKKyAgICAgICAgeCA9IHN0YXRpY19j
YXN0PGNvbnN0IE51bWJlck9iamVjdCo+KHZhbHVlLmFzQ2VsbCgpKS0+aW50ZXJuYWxWYWx1ZSgp
LmFzTnVtYmVyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKworLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgYSBnZXR0ZXIgcmF0aGVyIHRoYW4g
YSB2YWx1ZQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlRnVuY0Zvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLmZvcm1hdChudW1iZXIpCisKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBm
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihleGVjLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgIGlmICgh
dG9Eb3VibGUoZXhlYy0+YXJndW1lbnQoMCksIGRvdWJsZVZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICBVRXJyb3JDb2Rl
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBVTnVtYmVyRm9ybWF0KiBuZiA9IGZvcm1hdC0+
bnVtYmVyRm9ybWF0KCk7CisKKyAgICAvLyBmaXJzdCBwYXNzLCB0byBnZXQgdGhlIHNpemUgbmVl
ZGVkCisgICAgaW50MzJfdCBzaXplID0gdW51bV9mb3JtYXREb3VibGUobmYsIGRvdWJsZVZhbHVl
LCBOVUxMLCAwLCBOVUxMLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09W
RVJGTE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAg
c2l6ZSArPSAxOyAvLyBwbHVzIHRoZSBudWxsIHRlcm1pbmF0b3IKKyAgICAgICAgVUNoYXIqIHN0
cmluZ1ZhbHVlID0gKFVDaGFyKilmYXN0TWFsbG9jKHNpemVvZihVQ2hhcikgKiBzaXplKTsKKwor
ICAgICAgICAvLyBzZWNvbmQgcGFzcywgYWN0dWFsbHkgc2V0IHRoZSBzdHJpbmdWYWx1ZQorICAg
ICAgICB1bnVtX2Zvcm1hdERvdWJsZShuZiwgZG91YmxlVmFsdWUsIHN0cmluZ1ZhbHVlLCBzaXpl
LCBOVUxMLCAmc3RhdHVzKTsKKyAgICAgICAgSlNWYWx1ZSBzdHJpbmcgPSBqc1N0cmluZyhleGVj
LCBTdHJpbmcoc3RyaW5nVmFsdWUpKTsKKworICAgICAgICBmcmVlKHN0cmluZ1ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmcpOworICAgIH0KKyAgICAvLyBUT0RP
OiBoYW5kbGUgZXJyb3IKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkKKworICAgIEludGxOdW1i
ZXJGb3JtYXQqIGZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMgPSBq
c1VuZGVmaW5lZCgpOworCisgICAgLy8gVE9ETzogY3JlYXRlIG9iamVjdCB3aXRoIHRoaXMgaW5m
b3JtYXRpb24KKyAgICAvLyBmb3JtYXQtPmxvY2FsZQorICAgIC8vIGZvcm1hdC0+bnVtYmVyaW5n
U3lzdGVtCisgICAgLy8gZm9ybWF0LT5zdHlsZQorICAgIC8vIGZvcm1hdC0+Y3VycmVuY3kKKyAg
ICAvLyBmb3JtYXQtPmN1cnJlbmN5RGlzcGxheQorICAgIC8vIGZvcm1hdC0+bWluaW11bUludGVn
ZXJEaWdpdHMKKyAgICAvLyBmb3JtYXQtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cworICAgIC8vIGZv
cm1hdC0+bWF4aW11bUZyYWN0aW9uRGlnaXRzCisgICAgLy8gZm9ybWF0LT5taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMKKyAgICAvLyBmb3JtYXQtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cworICAg
IC8vIGZvcm1hdC0+dXNlR3JvdXBpbmcKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0
aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcyY2I5MWM2ODk2NGQ3MWRjOWJmM2JhYmQ2
OGY1NGY1MTRjMDk1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21h
aWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaAor
I2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKwor
I2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmY1MTJlZGE2YWU0ZjEw
MTZiM2U3M2Y1NTQxYjQwNWRmNzRlZjdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsT2Jq
ZWN0LmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAu
aCIKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEludGxPYmplY3QpOworCit9CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSW50bE9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsT2JqZWN0KSB9OworCitJbnRsT2JqZWN0OjpJbnRs
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0ludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0uaGVh
cCkpIEludGxPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bihleGVjLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3ZvaWQgSW50
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPk51bWJlckZvcm1hdCwgY29uc3RydWN0
SW50bE51bWJlckZvcm1hdCwgRG9udEVudW0sIDApOworfQorCitTdHJ1Y3R1cmUqIEludGxPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NjdjOTY2NzNiZTM2YzE5N2FiYWY5NjhlOGRhNmM5OTE2ZDY3ZjNkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
ICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEludGxPYmpl
Y3RfaAorI2RlZmluZSBJbnRsT2JqZWN0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxPYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAg
ICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
KTsKKworcHJpdmF0ZToKKyAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8g
SW50bE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggMTRhMGMxY2ZhNmVjMmFjZDM5M2U1NDNmNDI2MGMyYzMyNmJhMTkz
Ny4uNmYzZGFkNmVlNmM5Yzk5ZGMxNjc2YmU1N2ZlYjU1OTYzZDU1MjZkZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTMzLDYg
KzEzMywxMyBAQAogI2luY2x1ZGUgIldlYWtTZXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIldl
YWtTZXRQcm90b3R5cGUuaCIKIAorI2lmIEVOQUJMRShJTlRMKQorI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5oIgorI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCiAjaWYgRU5BQkxFKFBST01JU0VTKQogI2lu
Y2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCkBA
IC0zMjQsNiArMzMxLDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IG1fcHJvbWlzZVByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX3Byb21pc2VTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9wcm9t
aXNlUHJvdG90eXBlLmdldCgpKSk7CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQorICAgIAor
I2lmIEVOQUJMRShJTlRMKQorICAgIG1fbnVtYmVyRm9ybWF0UHJvdG90eXBlLnNldCh2bSwgdGhp
cywgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSkpOworICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX251bWJlckZvcm1h
dFByb3RvdHlwZS5nZXQoKSkpOworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCiAgICAgbV9wYXJz
ZUludEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAy
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wYXJzZUludC5zdHJpbmcoKSwgZ2xvYmFsRnVuY1BhcnNlSW50
LCBOb0ludHJpbnNpYykpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wYXJzZUludCwgbV9wYXJzZUludEZ1bmN0aW9uLmdldCgpLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKQEAgLTM3MCw2ICszODIsOSBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YwogI2lmIEVOQUJMRShQUk9NSVNFUykKICAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTUHJvbWlzZUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKICNlbmRpZgorI2lmIEVOQUJMRShJTlRMKQor
ICAgIG1fbnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX251
bWJlckZvcm1hdFByb3RvdHlwZS5nZXQoKSkpOworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogICAg
IAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBE
b250RW51bSk7CkBAIC0zNzgsNiArMzkzLDkgQEAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKICNp
ZiBFTkFCTEUoUFJPTUlTRVMpCiAgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fcHJvbWlz
ZUNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5UTCkK
KyAgICBtX251bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX251bWJlckZvcm1hdENvbnN0cnVj
dG9yLmdldCgpLCBEb250RW51bSk7CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAgICAgCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKQEAgLTQxMyw3ICs0MzEsMTAgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QK
ICAgICAKICAgICBtX2V2YWxGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVu
Y0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+ZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKLSAgICAKKworI2lm
IEVOQUJMRShJTlRMKQorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5JbnRsLCBJbnRsT2JqZWN0OjpjcmVhdGUoZXhlYywgdGhpcywgSW50bE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBE
b250RW51bSk7CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2
bSwgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPk1hdGgsIE1hdGhPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0
aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpLCBEb250RW51bSk7CiAgICAgCkBAIC03MjEsNiArNzQyLDkgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
I2lmIEVOQUJMRShQUk9NSVNFUykKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9w
cm9taXNlQ29uc3RydWN0b3IpOwogI2VuZGlmCisjaWYgRU5BQkxFKElOVEwpCisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOworI2VuZGlm
IC8vIEVOQUJMRShJTlRMKQogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVs
bEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxs
U2V0dGVyRnVuY3Rpb24pOwpAQCAtNzQwLDYgKzc2NCw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICNpZiBF
TkFCTEUoUFJPTUlTRVMpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlz
ZVByb3RvdHlwZSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRQcm90b3R5cGUpOworI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29w
ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3Bl
U3RydWN0dXJlKTsKQEAgLTc3OCw2ICs4MDUsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOwogI2VuZGlmIC8vIEVO
QUJMRShQUk9NSVNFUykKIAorI2lmIEVOQUJMRShJTlRMKQorICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZSk7CisjZW5kaWYgLy8gRU5BQkxFKElO
VEwpCisKICNkZWZpbmUgVklTSVRfU0lNUExFX1RZUEUoQ2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwg
cHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZSk7IFwKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUpOyBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBh
ZTExMzg3ZTQ5NGVhNTQxZjk1NTk0MDE2YTI2NGIyYTgwNThjZmE1Li5kOGI0MjQxZjE2YTM5ODEw
ZmYxNjZjZmUxNTMwZGNkNzg2OWIyODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY5LDYgKzY5LDEyIEBAIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwog
Y2xhc3MgSW5wdXRDdXJzb3I7CitjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcjsKK2NsYXNz
IEludGxDb2xsYXRvclByb3RvdHlwZTsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworY2xhc3MgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTsKIGNs
YXNzIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTsKIGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9y
OwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwpAQCAtMTgzLDYgKzE4OSw5IEBAIHByb3RlY3Rl
ZDoKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0
cnVjdG9yOwogI2VuZGlmCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29i
amVjdENvbnN0cnVjdG9yOworI2lmIEVOQUJMRShJTlRMKQorICAgIFdyaXRlQmFycmllcjxJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I+IG1fbnVtYmVyRm9ybWF0Q29uc3RydWN0b3I7CisjZW5k
aWYgLy8gRU5BQkxFKElOVEwpCiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9u
PiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0
aW9uPiBtX251bGxTZXR0ZXJGdW5jdGlvbjsKQEAgLTIwMyw2ICsyMTIsOSBAQCBwcm90ZWN0ZWQ6
CiAjaWYgRU5BQkxFKFBST01JU0VTKQogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQcm90b3R5
cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsKICNlbmRpZgorI2lmIEVOQUJMRShJTlRMKQorICAgIFdy
aXRlQmFycmllcjxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlPiBtX251bWJlckZvcm1hdFByb3Rv
dHlwZTsKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI0NCw2ICsyNTYsMTAgQEAgcHJvdGVjdGVkOgog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVN0cnVjdHVyZTsKICNlbmRpZiAv
LyBFTkFCTEUoUFJPTUlTRVMpCiAKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKKyNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKKwogI2RlZmluZSBERUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUs
IGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKICAgICBXcml0
ZUJhcnJpZXI8Y2FwaXRhbE5hbWUgIyMgUHJvdG90eXBlPiBtXyAjIyBsb3dlck5hbWUgIyMgUHJv
dG90eXBlOyBcCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV8gIyMgcHJvcGVyTmFtZSAj
IyBTdHJ1Y3R1cmU7CkBAIC0zOTEsNiArNDA3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShQUk9N
SVNFUykKICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvciogcHJvbWlzZUNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0KICNlbmRpZgorI2lmIEVO
QUJMRShJTlRMKQorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogbnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX251bWJlckZvcm1hdENvbnN0cnVjdG9yLmdl
dCgpOyB9CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAKICAgICBOdWxsR2V0dGVyRnVuY3Rpb24q
IG51bGxHZXR0ZXJGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbEdldHRlckZ1bmN0aW9u
LmdldCgpOyB9CiAgICAgTnVsbFNldHRlckZ1bmN0aW9uKiBudWxsU2V0dGVyRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX251bGxTZXR0ZXJGdW5jdGlvbi5nZXQoKTsgfQpAQCAtNDIyLDYgKzQ0
MSw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAgICAgSlNQcm9taXNlUHJvdG90
eXBlKiBwcm9taXNlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG90eXBl
LmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ckZvcm1hdFByb3RvdHlwZS5nZXQoKTsgfQorI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCiAgICAg
U3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAt
NDgzLDYgKzUwNSwxMCBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBwcm9taXNlU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYgLy8g
RU5BQkxFKFBST01JU0VTKQogCisjaWYgRU5BQkxFKElOVEwpCisgICAgU3RydWN0dXJlKiBudW1i
ZXJGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZS5nZXQoKTsgfQorI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaAppbmRleCAxM2FlMGE5MWJkNzNhZmNiZThkMjdlOGI5MjQ2YzcxMjQ2MjIwYThm
Li42MGFkMTFiMDdjZmY5ZGFmYmYyMWU5N2ZkZDA4MDUxYmE0YzVhZjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgKQEAgLTUzNSw2ICs1MzUsMTAgQEAgdGhlIHB1YmxpYyBpT1MgU0RLLiBXZSB3
aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGZpbGUK
ICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgMAogI2VuZGlm
CiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfSU5UTCkKKyNkZWZpbmUgRU5BQkxFX0lOVEwgMAorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQVF9JMThOX0FQSSkKICNkZWZpbmUg
RU5BQkxFX0pBVkFTQ1JJUFRfSTE4Tl9BUEkgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDQzZDcw
MGVjYzY3N2M4YjYwOWE2YTYzZmIyYzNmN2Y0ZjgyY2IyODMuLjhjMjViNzhhMmIyZTYyNWNjMTlh
ODA0NDg5MjAyYTBhOGJiZTQ4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNiArMTE2LDggQEAgRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEw
MTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKK0VOQUJMRV9JTlRMID0g
OworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lP
U19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RL
KSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMg
PSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwogCkBAIC0yMjIsNCArMjI0LDQgQEAgRU5BQkxF
X0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBFTkFCTEVfRlRMX0pJVDsKIAogRU5BQkxFX1NBVFVS
QVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVU
SUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NS
T0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVO
VCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChF
TkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVS
SU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikg
JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJ
TkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZ
T1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9S
RVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19M
RVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVf
Q1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVO
QUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVO
QUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9H
QU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
RElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lf
VkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRf
VVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklD
QVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQo
RU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJM
SUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9J
TlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJF
Ul9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5U
SEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFC
TEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNI
X0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJT
RUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykg
JChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQo
RU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJM
RV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVO
QUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChF
TkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVf
RVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAk
KEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NT
U19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04p
ICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQo
RU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJM
RV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJT
T1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9E
QVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFU
QV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVf
RklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVE
KSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RI
Uk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9M
UykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9J
Tl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikg
JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VD
SF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NS
SVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQo
RU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJT
T1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJ
R0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERG
S0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChF
TkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVO
QUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JF
UVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9S
RVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVf
Q1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJF
QU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5B
QkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVO
QUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FV
RElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVf
V0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VU
KSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxF
X1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9O
X01PREUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA0M2Q3MDBlY2M2NzdjOGI2MDlhNmE2M2ZiMmMz
ZjdmNGY4MmNiMjgzLi44YzI1Yjc4YTJiMmU2MjVjYzE5YTgwNDQ4OTIwMmEwYThiYmU0OGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCitFTkFCTEVfSU5UTCA9IDsKKwogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNf
aW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UUzsKIApAQCAtMjIyLDQgKzIyNCw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhv
bmVvcypdID0gRU5BQkxFX0ZUTF9KSVQ7CiAKIEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRI
TUVUSUMgPSBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDOwogCi1GRUFUVVJFX0RF
RklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVf
QVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hF
X1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9Y
WSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQ
X05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hf
REVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1Nf
REVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFC
TEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9D
U1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JS
RUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9I
QU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVN
RU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NP
TlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZF
TlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVf
R0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVO
X1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFC
TEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19U
T1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNf
U0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9D
VVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9O
QVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
UERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykg
JChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAk
KEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxF
X1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJM
RV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFC
TEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9T
VFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRF
Q1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQo
RU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAk
KEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VC
X0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFC
TEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1F
T1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5B
QkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFU
SU9OX01PREUpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRI
KSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgp
ICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9G
SUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lN
QUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNU
T1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVO
QUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQo
RU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMp
ICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikg
JChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5B
QkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFC
TEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJM
RV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJf
QVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVN
RU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJM
RV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVO
Q1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5B
QkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9F
VkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVU
RSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9R
VUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkg
JChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxF
X1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05W
RVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1Q
TEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VW
RU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdf
V09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NT
U19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VC
X1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkg
JChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VU
X0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
IGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
aW5kZXggNDNkNzAwZWNjNjc3YzhiNjA5YTZhNjNmYjJjM2Y3ZjRmODJjYjI4My4uOGMyNWI3OGEy
YjJlNjI1Y2MxOWE4MDQ0ODkyMDJhMGE4YmJlNDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNiw2ICsx
MTYsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7
CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAorRU5B
QkxFX0lOVEwgPSA7CisKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0g
JChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9J
TlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJO
QUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CiAKQEAgLTIyMiw0ICsyMjQs
NCBAQCBFTkFCTEVfRlRMX0pJVFtzZGs9aXBob25lb3MqXSA9IEVOQUJMRV9GVExfSklUOwogCiBF
TkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlP
VVRfQVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JN
UykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9P
VkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNI
TUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZB
U19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19T
WU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9O
U19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NT
U19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9D
U1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhU
KSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJ
VFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJf
SVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVE
X01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVW
RUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
ICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVf
R0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAk
KEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykg
JChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVY
VF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQo
RU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNF
KSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVO
QUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FU
T1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5B
QkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5U
RVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQo
RU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFC
TEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChF
TkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVf
U1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9D
UllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQo
RU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVN
RU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChF
TkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChF
TkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFD
SykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkg
JChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZU
VF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVf
RlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVU
SUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKK0ZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQ
VElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElU
SU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFY
KSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJB
TF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkg
JChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFU
SU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0Vf
QURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0Vf
T1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1Nf
UkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQ
RVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQo
RU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIp
ICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAk
KEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQo
RU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
KSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFE
X0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9E
T01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJW
SUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9O
VEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAk
KEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxF
X0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFC
TEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMp
ICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykg
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9D
T05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RB
VElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxF
X01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQo
RU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAk
KEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BS
T01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklY
X0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkg
JChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
ICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5H
KSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQo
RU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVf
VkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVO
QUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRT
KSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVf
WEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJ
VCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19Q
UkVTRU5UQVRJT05fTU9ERSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVy
ZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggODBkNDhh
OTM5NDVjYmMzNzE5MTcxOTRmMWZkYTZhMWYxOTE3YzE3Ni4uOTY4MDQzM2IwODgyNGNlNWMzMjA3
ODllNTcyMWU2NDM0NmFiMmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1
cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtOTgs
NiArOTgsNyBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIICJUb2dnbGUgbW9udGggdHlwZSA8aW5wdXQ+
IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUgIlRvZ2dsZSB0aW1lIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRF
IE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9XRUVLICJU
b2dnbGUgd2VlayB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBSSVZBVEUg
T0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JT1NfQUlSUExBWSAiVG9nZ2xl
IGlPUyBhaXJwbGF5IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HICJUb2dnbGUgaU9TIHRleHQgYXV0b3Npemlu
ZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
SklUICJFbmFibGUgSnVzdEluVGltZSBqYXZhc2NyaXB0IHN1cHBvcnQiIFBSSVZBVEUgT04pCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjhjZWJk
ZjNhNzM3MWJiZmJkNDJiOWZiYmIxOTMzY2QxNWJlNzEyOS4uODZkODA3MmFmZTdmMzE4YTM4NDZl
YWUwZTgwMjYyMDdlYjdhZDU4MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA1LTIxICBBbmR5IFZhbldhZ29u
ZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFT
Y3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEVfSU5UTCBmbGFnCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IGFkZCBmbGFnCisKIDIwMTUtMDUtMjYg
IERhbmEgQnVya2FydCAgPGRidXJrYXJ0QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlcyBjb21w
YXRpYmlsaXR5IGlzc3VlcyB3aXRoIHJlY2VudCBkYXNoYm9hcmQgY2xlYW51cC4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA5NjhlZDY3YmJmZTFhYmI2Nzc0NTAw
NDg5NjUxZjg1YTU2MjRlYTEwLi43YTAyMzY0YjRjMTNmZTZjZDg0YjBiYjUyMjliMzc2M2M5YTFm
MTZhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0K
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC05MSw2ICs5
MSw3IEBAIG15ICgKICAgICAkaW5wdXRUeXBlTW9udGhTdXBwb3J0LAogICAgICRpbnB1dFR5cGVU
aW1lU3VwcG9ydCwKICAgICAkaW5wdXRUeXBlV2Vla1N1cHBvcnQsCisgICAgJGludGxTdXBwb3J0
LAogICAgICRqaXRTdXBwb3J0LAogICAgICRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCwKICAg
ICAkbGVnYWN5VmVuZG9yUHJlZml4U3VwcG9ydCwKQEAgLTI4OCw2ICsyODksOSBAQCBteSBAZmVh
dHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtd2VlayIsIGRlc2MgPT4gIlRv
Z2dsZSBJbnB1dCBUeXBlIFdlZWsgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9J
TlBVVF9UWVBFX1dFRUsiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlV2Vla1N1
cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJpbnRsIiwgZGVzYyA9PiAiVG9nZ2xlIEludGwg
c3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAwLCB2
YWx1ZSA9PiBcJGludGxTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5vdGlm
aWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIs
CiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCB9LAogCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggODc4NGQ5Njk5MjVhZWUyZmEyM2RjYWNk
ODhjNGY2MWM0NDRhN2RiZC4uMTMyOTZhNWQ3NDI4ZjcxM2FkM2FjY2QzYmNiNDljMTY1MTI0NjQ3
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTA1LTIxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0ZWQg
d29yayBvbiBpbXBsZW1lbnRpbmcgdGhlIEludGVybmF0aW9uYWl6YXRpb24gQVBJcyBieSBhZGRp
bmcgdGhlIGZlYXR1cmUgZmxhZworICAgICAgICAoZGlzYWJsZWQgdW50aWwgcmVhZHkpLCBhbmQg
YWRkaW5nIGEgZ2xvYmFsIEludGwgb2JqZWN0IHRvIHNlcnZlIGFzIHRoZSBuYW1lc3BhY2UuCisg
ICAgICAgIFNlZSBzcGVjOiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS00
MDIvMS4wLworCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBh
ZGQgRU5BQkxFX0lOVEwgZmxhZworCiAyMDE1LTA1LTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9u
c0dUSy5jbWFrZSBhbmQgTkVXUyBmb3IgMi45LjIgcmVsZWFzZS4KZGlmZiAtLWdpdCBhL1dlYktp
dExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDYy
NjM1ZGI3ZmY2NGMwODE1NjNiODkzMTg2NjBiNjhlZGEzZDU3ODIuLjg1OGEwY2Q4MmVlZDA2ZGQ0
NGY0YjNhMDMxYzQwMjM4YjhkMjM5ZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE1LTA1LTIxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEVf
SU5UTCBmbGFnCisKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5w
cm9wczoKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnBy
b3BzOgorCiAyMDE1LTA1LTA5ICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAg
IFJlbW92ZSB0aGUgUElDVFVSRV9TSVpFUyBidWlsZCBmbGFnCmRpZmYgLS1naXQgYS9XZWJLaXRM
aWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRM
aWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggYWU3
OTQ4YmZiYzhkOWI0OWFjMTEyMDNhMjgyYzVjODM2ODc5NDc3ZC4uMGRmOTkwOThhNzI3ODU0MzBk
ZmZlMTA4YTVmNjUxZjE3N2ViZGNhMyAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtNDgsNiArNDgsNyBAQAog
ICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAvPgogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgLz4KKyAgICA8RU5BQkxFX0lOVEw+
RU5BQkxFX0lOVEw8L0VOQUJMRV9JTlRMPgogICAgIDxFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVM+RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTPC9FTkFCTEVfTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVM+CiAgICAgPEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyAv
PgogICAgIDxFTkFCTEVfTElOS19QUkVGRVRDSCAvPgpAQCAtOTIsNyArOTMsNyBAQAogICA8L1By
b3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0g
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5BQkxF
X1BST01JU0VTKTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVfM0Rf
VFJBTlNGT1JNUyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NF
TEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7
JChFTkFCTEVfQ0FOVkFTX1BBVEgpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7JChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxF
X0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNP
UkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19TSEFE
RVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFCTEVf
Q1NTX1NIQVBFX0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFO
U0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVf
Q1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJ
U1RfRUxFTUVOVCk7JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVfREVUQUlM
U19FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQpOyQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKTskKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIpOyQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7JChF
TkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1F
UEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVS
X1RIUk9UVExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFC
QVNFKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
KTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZ
UEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZF
TkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQo
RU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVfTU9VU0Vf
Q1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9QUk9YSU1JVFlf
RVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
OyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChFTkFCTEVf
U0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVf
TUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFU
QUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTsk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFC
TEVfU1ZHX09URl9DT05WRVJURVIpOyQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpOyQoRU5BQkxF
X1RFWFRfQVVUT1NJWklORyk7JChFTkFCTEVfVklERU8pOyQoRU5BQkxFX1ZJREVPX1RSQUNLKTsk
KEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxF
X1dFQl9TT0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVOQUJMRV9XRUJHTCk7JChFTkFC
TEVfV0VCVlRUX1JFR0lPTlMpOyQoRU5BQkxFX1hIUl9USU1FT1VUKTskKEVOQUJMRV9YU0xUKTsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5BQkxFX1BS
T01JU0VTKTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVfM0RfVFJB
TlNGT1JNUyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NFTEVS
QVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChF
TkFCTEVfQ0FOVkFTX1BBVEgpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7JChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NT
U19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFU
SU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19TSEFERVJT
KTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVOQUJM
RV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFCTEVfQ1NT
X1NIQVBFX0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lU
SU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1Rf
RUxFTUVOVCk7JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVfREVUQUlMU19F
TEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9V
UExPQUQpOyQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKTskKEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIpOyQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7JChFTkFC
TEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFE
KTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RI
Uk9UVExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFCQVNF
KTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTsk
KEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVf
VElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9JTlRMKTskKEVOQUJMRV9M
RUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMp
OyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJM
RV9NQVRITUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJM
RV9QUk9YSU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBRE9XX0RP
TSk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQ
VCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVO
QUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElY
RUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NWR19G
T05UUyk7JChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpOyQoRU5BQkxFX1RFTVBMQVRFX0VMRU1F
TlQpOyQoRU5BQkxFX1RFWFRfQVVUT1NJWklORyk7JChFTkFCTEVfVklERU8pOyQoRU5BQkxFX1ZJ
REVPX1RSQUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVOQUJMRV9XRUJfQVVE
SU8pOyQoRU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVOQUJMRV9X
RUJHTCk7JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpOyQoRU5BQkxFX1hIUl9USU1FT1VUKTskKEVO
QUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0
ZW1Hcm91cD4KQEAgLTI4NCw2ICsyODUsMTAgQEAKICAgICAgIDxWYWx1ZT4kKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vu
dmlyb25tZW50VmFyaWFibGU+CiAgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIElu
Y2x1ZGU9IkVOQUJMRV9JTlRMIj4KKyAgICAgIDxWYWx1ZT4kKEVOQUJMRV9JTlRMKTwvVmFsdWU+
CisgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVudFZhcmlhYmxlPgor
ICAgIDwvQnVpbGRNYWNybz4KICAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJFTkFCTEVfTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVMiPgogICAgICAgPFZhbHVlPiQoRU5BQkxFX0xFR0FDWV9DU1Nf
VkVORE9SX1BSRUZJWEVTKTwvVmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVl
PC9FbnZpcm9ubWVudFZhcmlhYmxlPgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwppbmRleCA1MDBjNGUx
MTQ4ZDkyMDhiNTE1ZDE4YjVkOTFmYjE4MTRmMGI2ZTA0Li40ZGQwYjk1MmM2NGZhYWNlZDYzYjUz
M2Y0YWZmYTNmNGQ5OGQ5NGU0IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xz
L3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwpAQCAtNDgsNiArNDgs
NyBAQAogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAvPgogICAgIDxFTkFCTEVfSU5QVVRf
VFlQRV9USU1FIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgLz4KKyAgICA8RU5BQkxF
X0lOVEw+RU5BQkxFX0lOVEw8L0VOQUJMRV9JTlRMPgogICAgIDxFTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVM+RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTPC9FTkFCTEVf
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM+CiAgICAgPEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUyAvPgogICAgIDxFTkFCTEVfTElOS19QUkVGRVRDSCAvPgpAQCAtOTIsNyArOTMsNyBAQAog
ICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBp
bGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfQ1NQX05FWFQpOyQo
RU5BQkxFX1BST01JU0VTKTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFC
TEVfM0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJM
RV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxF
TUVOVCk7JChFTkFCTEVfQ0FOVkFTX1BBVEgpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7JChFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQo
RU5BQkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JP
WF9ERUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NT
U19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJT05T
KTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChF
TkFCTEVfQ1NTX1NIQVBFX0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9O
U19UUkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChF
TkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVf
REFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVf
REVUQUlMU19FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQpOyQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKTskKEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIpOyQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WCk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJM
RV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9N
X1RJTUVSX1RIUk9UVExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNP
TkRBVEFCQVNFKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lO
UFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpOyQoRU5B
QkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9NQVRI
TUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVf
TU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9QUk9Y
SU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRf
VVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChF
TkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9T
UUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZ
T1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7
JChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpOyQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpOyQo
RU5BQkxFX1RFWFRfQVVUT1NJWklORyk7JChFTkFCTEVfVklERU8pOyQoRU5BQkxFX1ZJREVPX1RS
QUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVOQUJMRV9XRUJfQVVESU8pOyQo
RU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVOQUJMRV9XRUJHTCk7
JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpOyQoRU5BQkxFX1hIUl9USU1FT1VUKTskKEVOQUJMRV9Y
U0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5B
QkxFX1BST01JU0VTKTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVf
M0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9B
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVO
VCk7JChFTkFCTEVfQ0FOVkFTX1BBVEgpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7JChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5B
QkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9E
RUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19T
SEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJT05TKTsk
KEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFC
TEVfQ1NTX1NIQVBFX0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19U
UkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFC
TEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQpOyQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKTskKEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIpOyQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7
JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9H
QU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJ
TUVSX1RIUk9UVExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRB
VEFCQVNFKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVU
X1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9JTlRMKTskKEVO
QUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNB
VElPTlMpOyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTsk
KEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFU
QSk7JChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTsk
KEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfTkFWSUdB
VE9SX0NPTlRFTlRfVVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hB
RE9XX0RPTSk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRST0xT
X1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
KTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVf
U1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxF
X1NWR19GT05UUyk7JChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpOyQoRU5BQkxFX1RFTVBMQVRF
X0VMRU1FTlQpOyQoRU5BQkxFX1RFWFRfQVVUT1NJWklORyk7JChFTkFCTEVfVklERU8pOyQoRU5B
QkxFX1ZJREVPX1RSQUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVOQUJMRV9X
RUJfQVVESU8pOyQoRU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVO
QUJMRV9XRUJHTCk7JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpOyQoRU5BQkxFX1hIUl9USU1FT1VU
KTskKEVOQUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
ICAgPEl0ZW1Hcm91cD4KQEAgLTI4NCw2ICsyODUsMTAgQEAKICAgICAgIDxWYWx1ZT4kKEVOQUJM
RV9JTlBVVF9UWVBFX1dFRUspPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRy
dWU8L0Vudmlyb25tZW50VmFyaWFibGU+CiAgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1h
Y3JvIEluY2x1ZGU9IkVOQUJMRV9JTlRMIj4KKyAgICAgIDxWYWx1ZT4kKEVOQUJMRV9JTlRMKTwv
VmFsdWU+CisgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVudFZhcmlh
YmxlPgorICAgIDwvQnVpbGRNYWNybz4KICAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJFTkFCTEVf
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMiPgogICAgICAgPFZhbHVlPiQoRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKTwvVmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJs
ZT50cnVlPC9FbnZpcm9ubWVudFZhcmlhYmxlPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254051</attachid>
            <date>2015-06-01 22:40:29 -0700</date>
            <delta_ts>2015-06-30 16:44:12 -0700</delta_ts>
            <desc>Add feature flag and base Intl namespace object</desc>
            <filename>bug-90906-20150601234012.patch</filename>
            <type>text/plain</type>
            <size>69296</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZjgyMjhlYjU1ZTkyMmYxMzUyMzJlMDJjZGM4NmU4ODhmNTc1NGVhLi4yNTNkZDA5ZTI4ZDA0NDc3
N2JiNWMzY2RiNjZjMDJmZDBhODQzMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNS0wNi0wMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OiBhZGQgSW50bE9iamVjdC5jcHAKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRkIEVOQUJMRV9JTlRMIGZsYWcKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6IGFk
ZCBJbnRsT2JqZWN0CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6IGFkZCBJbnRsT2JqZWN0CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogYWRkIEludGxPYmplY3QKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6IGFkZCAiSW50bCIgbmFtZQorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0
OjpJbnRsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5o
OiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogQWRkIGdsb2Jh
bCBJbnRsCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKwogMjAxNS0wNS0z
MSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIElmIGEgY2FsbCBo
YXMgZXZlciB0YWtlbiB0aGUgdmlydHVhbCBzbG93IHBhdGgsIG1ha2Ugc3VyZSB0aGF0IHRoZSBE
Rkcga25vd3MgdGhpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBiZjJiZjQ2M2VmMzUyMTg2OWFjZmVjNDA3OWU1Yzg4NTc3ZTll
NDkzLi4zMTg4MzcyN2ZkNTRlNTJhOTUyZWNjNmNkNjBlMTgwNTcxNzcwZjc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE1LTA2LTAxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6
YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIwMTUtMDYt
MDEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
eHBjX2Nvbm5lY3Rpb25fc2V0X29uZXNob3RfaW5zdGFuY2Ugd2hlcmUgcG9zc2libGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1ZTZiYWY2NWQzMDgxN2NlYTQ3ZjAwNWZiZWMyYzIyZjJiMzAxMjk4Li5iMWVhMzUx
ZWZmMWExYmU3ZmEyNjNjYTQ4ZjMyNjU4ZjdjOGViYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTUtMDYtMDEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlv
biBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkw
OTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDoganMvaW50bC5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzogYWRkIEVOQUJMRV9JTlRMIGZsYWcKKwogMjAxNS0wNi0wMSAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIGFuaW1hdGlvbnMgaW4gZmls
bGluZy1mb3J3YXJkcyBzdGF0ZSBzaG91bGRuJ3QgZm9yY2UgY29tcG9zaXRpbmcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggZTY2OWM2OGI3YTI1NWU3N2YwOTJmOGJjZmZhMGRiYTgxM2EwZjY2ZS4uZTkw
MDU1NDEwZWMwNzYyZmYwY2NiYWZkZjMyZjRiOTVhZTE1MWMxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE1LTA2LTAxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRp
b25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IGFkZCBFTkFC
TEVfSU5UTCBmbGFnCisKIDIwMTUtMDYtMDEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBXQUtTY3JvbGxWaWV3LmggY2Fubm90IGJlIGltcG9ydGVkIHN0
YW5kYWxvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkOGJlYzMzY2U0ZGM2ZWUyOTYzMWIyNzdlMDY4YTc1M2Zj
YWM2YzU4Li4yMDFjMmU4ODhlNjJlZWMxZTNiMDAwMTViZjQ0ZWNmZjQ1YmJlYjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDYtMDEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRl
cm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRk
IEVOQUJMRV9JTlRMIGZsYWcKKwogMjAxNS0wNi0wMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEhhcmR3YXJlIEtleWJvYXJkOiBBbGwgY29tYmlu
YXRpb25zIGZvciBhcnJvdyBrZXlzIHdpdGggU2hpZnQgZG8gbm90IGV4dGVuZCB0aGUgc2VsZWN0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDIwM2Y1NDBlODRmNTgz
ZTdiZjljZWEwMjE5NTgyMzY0ZjlkNTI5NzUuLmQzMTYyMmNhY2IzODVjMGQ2YzJhOTkxODViMTY2
OTlkYjY3NmVhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ2OSw2
ICs0NjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAogICAgIHJ1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVD
aGFpbi5jcHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisgICAgcnVudGltZS9J
bnRsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAogICAgIHJ1
bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCiAgICAgcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBkMWVlYjJiMjRiNTdkYTRhOTNi
MDBkMDYxMjExMjM0ZGIzOTE5NDhlLi4xN2Q2YTJkNTFjYjU0YzJlYjNkZWVjYTU1MjI1YTNhNmE4
NjkzNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNiArMTE2LDggQEAgRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEw
MTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKK0VOQUJMRV9JTlRMID0g
OworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lP
U19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RL
KSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMg
PSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwogCkBAIC0yMjQsNCArMjI2LDQgQEAgRU5BQkxF
X0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBFTkFCTEVfRlRMX0pJVDsKIAogRU5BQkxFX1NBVFVS
QVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVU
SUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NS
T0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVO
VCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChF
TkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVS
SU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikg
JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJ
TkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZ
T1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9S
RVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19M
RVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVf
Q1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVO
QUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVO
QUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9H
QU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
RElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lf
VkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxF
X01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJf
RUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChF
TkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNV
UlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAk
KEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BS
T01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklY
X0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkg
JChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
ICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5H
KSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQo
RU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVf
VkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVO
QUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRT
KSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVf
WEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJ
VCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19Q
UkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRB
Q0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FO
VkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNT
X1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJ
T05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVf
Q1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxF
X0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NT
U19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RF
WFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJ
TElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSU19M
RVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJM
RV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcp
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJT
KSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMp
ICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVO
QUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElB
X1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVO
QUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxT
KSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUElDVFVSRV9TSVpFUykgJChFTkFC
TEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VW
RU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRF
KSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FV
RVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAk
KEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVf
U1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZF
UlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBM
QVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZF
TlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19X
T1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJ
REVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NT
X01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJf
UkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFC
TEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAk
KEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRf
QVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggMzZjYzczNzA0YTU4Mjc5ZmZjYjcxOGNi
OTQ5OGIzNzljZDJiOWE2Zi4uMGM4ZWEwNGZlNTk4MGFkYmQzN2I4YTEzNThmYThkNTY2MTMwYTQw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03MjcsNiArNzI3
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVk
U3RydWN0dXJlQ2hhaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJbnRlcm5hbEZ1bmN0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW50bE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQVBJVmFsdWVXcmFwcGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtMTUzMCw2ICsx
NTMxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJl
Q2hhaW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxG
dW5jdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2Jq
ZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25TdGF0dXMu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRp
b25zLmgiIC8+CkBAIC0xODI3LDQgKzE4MjksNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4
dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxC
dWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91cD4KLTwv
UHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggOTNmZTVl
MjY5MDM3NTZiOTVhNzk4ZmExNzU1YjNkMjM0YzIzYzA1Ni4uYWM0YTk3YzE2ZTFhMTNkMzFkNmM5
NmI0ZmFiYTEzYmVkMjljMzY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjI3LDYgKzYyNyw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU0xleGljYWxFbnZpcm9ubWVudC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNjkxLDYgKzI2OTQsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRvck9wZXJhdGlvbnMuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0xleGljYWxFbnZpcm9ubWVudC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDQ4NSw0ICs0NDkxLDQgQEAKICAgICAgIDxG
aWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU0ODgzM2M1Yzk4MWYxMDQ3ZmYwN2RlNjY1Mjg0OTYyY2ExNTkw
OTIuLjdiN2VjNzg0YzczNWRhYjhmOWRmZmE4NGQyNjdjMmFkOGM0NWM0NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTY1LDYgKzExNjUsOCBAQAogCQk5RTcyOTQwQjE5MEYw
NTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgu
aCAqLzsgfTsKIAkJOUVBNUM3QTExOTBGMDg0MjAwNTA4RUJFIC8qIEJ1bmRsZVBhdGgubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTcyOTQwOTE5MEYw
MzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLzsgfTsKIAkJOUVBNUM3QTIxOTBGMDg4NzAw
NTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFs
aXplTExWTU1hYy5jcHAgKi87IH07CisJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRs
T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovOyB9OworCQlBMTJCQkZG
NDFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50
bE9iamVjdC5jcHAgKi87IH07CiAJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBD
YWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovOyB9OwogCQlBMTcx
MkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBS
ZWdFeHBDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdB
NTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMjkzOCw2ICsyOTQwLDggQEAKIAkJOUU3Mjk0MDkxOTBGMDMwNjAwMUE5
MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RTcyOTQw
QTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlF
QTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1hYy5jcHA7IHBhdGgg
PSBsbHZtL0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTEyQkJGRjExQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1
MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Z0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0Iy
MzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDc0LDYgKzQ0
NzgsOCBAQAogCQkJCUZFNEQ1NUI3MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMu
aCAqLywKIAkJCQk3MDExM0Q0OTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25z
LmNwcCAqLywKIAkJCQk3MDExM0Q0QTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRp
b25zLmggKi8sCisJCQkJQTEyQkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3Bw
ICovLAorCQkJCUExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi8sCiAJ
CQkJOTNBREZDRTYwQ0NCRDdBQzAwRDMwQjA4IC8qIEpTQXJyYXkuY3BwICovLAogCQkJCTkzODc3
MkU1MDM4QkZFMTkwMDg2MzVDRSAvKiBKU0FycmF5LmggKi8sCiAJCQkJMEYyQjY2QjQxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwICovLApAQCAtNTc1Miw2ICs1NzU4LDcgQEAK
IAkJCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBp
biBIZWFkZXJzICovLAogCQkJCUMyRkM5QkQzMTY2NDRERkIwMDgxMEQzMyAvKiBDb3BpZWRCbG9j
a0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0Ux
MTIgLyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDJEMTRBM0M2RTAw
MDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUU5
ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03MTY5LDYgKzcxNzYsNyBAQAogCQkJCTcwRUMwRUM0MUFBMEQ3REEwMEI2QUFGQSAvKiBT
dHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUMwRUMy
MUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNzAyNUE5MTcxNEIwRkEwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTEyQkJGRjQxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFRkM5QUExNjgxQTNCMzAwNTY3RjUzIC8q
IERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVC
RUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkZGQzk1QjE0RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAppbmRleCA0ZDZjNWRhNjIxODYwNWFjZTFkNTIwMjJkMmRlYjJhMGIzMjUxZjI3
Li4xZGVmNjg4MDIxZjZhOGI1YjQ4ZTI5MTNlNjgyOTMwNGJlM2EzMjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM4LDYg
KzM4LDcgQEAKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAog
ICAgIG1hY3JvKEluZmluaXR5KSBcCisgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04p
IFwKICAgICBtYWNybyhNYXApXAogICAgIG1hY3JvKE1hcEl0ZXJhdG9yKVwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJkYTkzOGZh
ODEzYWUzMWYzNzU2ZGIwNGRmMDdmYmIwOTkyZGQwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0wLDAgKzEsNzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRl
ckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bnRsT2JqZWN0LmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxPYmplY3QpOworCit9CisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE9iamVjdDo6c19pbmZvID0geyAiT2Jq
ZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsT2JqZWN0KSB9
OworCitJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0ludGxPYmpl
Y3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorewor
ICAgIEludGxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxP
YmplY3Q+KHZtLmhlYXApKSBJbnRsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3ZvaWQgSW50bE9i
amVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK1N0cnVjdHVyZSogSW50
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY0NWI5YWI2NDkwMjI4ZWRlYTU3YWIyZTBiZTljMGI1YTg5ZTJmYzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRs
T2JqZWN0X2gKKyNkZWZpbmUgSW50bE9iamVjdF9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsT2JqZWN0
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90Owor
CisgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgSW50bE9iamVjdChWTSYsIFN0cnVjdHVy
ZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkK
KworI2VuZGlmIC8vIEludGxPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDE0YTBjMWNmYTZlYzJhY2QzOTNlNTQzZjQy
NjBjMmMzMjZiYTE5MzcuLjYyMWE2OTIwYjRhMWM0YmNiYzNiZWJlYzA4NTZhZjlkMTcwZWQ0MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAKICNpbmNsdWRlICJXZWFrU2V0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJXZWFrU2V0UHJvdG90eXBlLmgiCiAKKyNpZiBFTkFCTEUoSU5UTCkKKyNpbmNs
dWRlICJJbnRsT2JqZWN0LmgiCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKICNpZiBFTkFCTEUo
UFJPTUlTRVMpCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29u
c3RydWN0b3IuaCIKQEAgLTQxNCw2ICs0MTgsOSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAog
ICAgIG1fZXZhbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsLnN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
dmFsLCBtX2V2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0pOwogICAgIAorI2lmIEVOQUJMRShJ
TlRMKQorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5JbnRsLCBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOworI2VuZGlm
IC8vIEVOQUJMRShJTlRMKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5KU09OLCBKU09OT2JqZWN0OjpjcmVhdGUodm0sIEpTT05PYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVu
dW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5NYXRoLCBNYXRoT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMmFjYzcwNTY1OTc2Y2M0ODEzYThlZDll
MDFmMTFmOTEyZTYzOGYyYS4uMDYzODkxZDM2OGY5YjBiNDU4NDFjYTU5YTBmYjgyYmQ0MzYyMzBh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC01MzUsNiArNTM1LDEwIEBAIHRoZSBwdWJs
aWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyBmaWxlCiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0lOVEwpCisjZGVmaW5lIEVO
QUJMRV9JTlRMIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfSTE4
Tl9BUEkpCiAjZGVmaW5lIEVOQUJMRV9KQVZBU0NSSVBUX0kxOE5fQVBJIDAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwppbmRleCBkMWVlYjJiMjRiNTdkYTRhOTNiMDBkMDYxMjExMjM0ZGIzOTE5NDhlLi4xN2Q2
YTJkNTFjYjU0YzJlYjNkZWVjYTU1MjI1YTNhNmE4NjkzNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2
LDYgKzExNiw4IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAw
MCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwog
CitFTkFCTEVfSU5UTCA9IDsKKwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25l
Kl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQo
VVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9J
TlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKIApAQCAtMjI0LDQg
KzIyNiw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5BQkxFX0ZUTF9KSVQ7
CiAKIEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMgPSBFTkFCTEVfU0FUVVJBVEVE
X0xBWU9VVF9BUklUSE1FVElDOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFO
U0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJB
VEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9B
VFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVf
Q0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2X0NM
QVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJM
RV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19BTklN
QVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFC
TEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5B
QkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxF
X0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1Mz
X1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklT
SUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9B
UkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFO
U0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVS
U19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVO
X0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJ
TkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChF
TkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JL
RVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lP
U19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0xF
R0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJ
TykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9T
RVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9D
VVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9O
QVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
UERGS0lUX1BMVUdJTikgJChFTkFCTEVfUElDVFVSRV9TSVpFUykgJChFTkFCTEVfUE9JTlRFUl9M
T0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFC
TEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9B
TklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9S
RU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJM
RV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVF
Q0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBU
TykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFC
TEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQp
ICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJM
RV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAk
KEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVO
QUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JF
R0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExf
SklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykg
JChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOworRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9O
UykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05J
TkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQo
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVO
QUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklF
TlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJ
T05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikg
JChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQo
RU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQ
UkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9U
SU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0Vf
Q09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9T
X0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9J
T1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVO
QUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRS
T0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNF
KSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVO
QUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FU
T1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5B
QkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BJQ1RV
UkVfU0laRVMpICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFC
TEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFV
RVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVT
T0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NT
U19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFN
U19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQo
RU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFC
TEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJ
TykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkg
JChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9T
QVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZDFlZWIyYjI0YjU3ZGE0YTkzYjAwZDA2MTIxMTIz
NGRiMzkxOTQ4ZS4uMTdkNmEyZDUxY2I1NGMyZWIzZGVlY2E1NTIyNWEzYTZhODY5MzczZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTExNiw2ICsxMTYsOCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVDsKIAorRU5BQkxFX0lOVEwgPSA7CisKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lv
c19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFM7CiAKQEAgLTIyNCw0ICsyMjYsNCBAQCBFTkFCTEVfRlRMX0pJVFtzZGs9aXBob25l
b3MqXSA9IEVOQUJMRV9GVExfSklUOwogCiBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1F
VElDID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJ
TkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FW
Rl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9Q
QVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkp
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9T
WU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9O
RVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RF
Q09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RF
VklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19J
TUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxF
X0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NT
X1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVB
SykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1F
TlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVO
VCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05T
VFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5U
UykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dB
TUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9Q
QUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxF
X1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExF
VEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dF
RUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RV
UkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9V
Q0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9N
SFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BJQ1RVUkVfU0la
RVMpICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BS
T1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVP
VEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FV
VE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElP
Tl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JP
TExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkp
ICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZH
X09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVO
QUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxF
X1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1Nf
VFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklF
V19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChF
TkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFC
TEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFU
RURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsK
K0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VM
RVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
KSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChF
TkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVf
Q0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9F
UzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFC
TEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQo
RU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAk
KEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVU
SU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQp
ICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19U
RVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNU
T01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9E
RVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9N
NF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVf
RU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZP
TlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFE
KSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJ
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BP
UE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5B
QkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5B
QkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVO
QUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04p
ICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9T
Q0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRP
Ul9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRf
UExVR0lOKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQo
RU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJM
SUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9J
TlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJF
Ul9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5U
SEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFC
TEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNI
X0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJT
RUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykg
JChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQo
RU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJM
RV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGQxZWViMmIyNGI1N2Rh
NGE5M2IwMGQwNjEyMTEyMzRkYjM5MTk0OGUuLjE3ZDZhMmQ1MWNiNTRjMmViM2RlZWNhNTUyMjVh
M2E2YTg2OTM3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNiArMTE2LDggQEAgRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKK0VOQUJMRV9JTlRMID0gOworCiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTOwogCkBAIC0yMjQsNCArMjI2LDQgQEAgRU5BQkxFX0ZUTF9KSVRb
c2RrPWlwaG9uZW9zKl0gPSBFTkFCTEVfRlRMX0pJVDsKIAogRU5BQkxFX1NBVFVSQVRFRF9MQVlP
VVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUM7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJB
VEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAk
KEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFC
TEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FO
VkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9X
RlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZf
VEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVO
QUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVf
Q1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5B
QkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVO
QUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9O
KSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQo
RU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhU
X0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01f
U0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRB
TElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRB
SUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRf
TE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAk
KEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAk
KEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9W
RVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxF
X0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxF
X0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFC
TEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMp
ICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykg
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9D
T05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NP
VVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkg
JChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFW
SUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAk
KEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9Q
SUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAk
KEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQo
RU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVf
UkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxF
X1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJM
RV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NU
UkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVD
VElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5H
KSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChF
TkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQo
RU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJM
RV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVP
VVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFC
TEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJ
T05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VM
RU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgp
ICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkg
JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJ
TFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVM
XzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklE
X0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1B
R0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RP
UlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5B
QkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChF
TkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykg
JChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEp
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAk
KEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFC
TEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJM
RV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQ
RV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxP
Q0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxF
X0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxF
X0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9B
VURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5B
QkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJ
QV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJ
Q1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VT
RV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJM
RV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUElDVFVSRV9TSVpFUykgJChFTkFCTEVfUE9JTlRF
Ul9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChF
TkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVT
VF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJM
RV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVO
QUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9T
UEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NS
WVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChF
TkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1F
TlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVO
QUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNL
KSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAk
KEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAk
KEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRU
X1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9G
VExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJ
QykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlCmluZGV4IDZlODJiZDgzOTNjMWU2NTZlNWM4NGYxMDM5OGRiMTQyNjgzNzgyYWYuLjUx
NDExNTM3NTVhYzQ1M2Y0NmM0N2QzN2Q0ODRkYjk2NzU2N2YyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVh
dHVyZXMuY21ha2UKQEAgLTk4LDYgKzk4LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAiVG9nZ2xl
IG1vbnRoIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9USU1FICJUb2dnbGUgdGltZSB0eXBlIDxpbnB1
dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0lOUFVUX1RZUEVfV0VFSyAiVG9nZ2xlIHdlZWsgdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZB
VEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlRMICJUb2dnbGUgSW50
bCBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
SU9TX0FJUlBMQVkgIlRvZ2dsZSBpT1MgYWlycGxheSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORyAiVG9nZ2xl
IGlPUyB0ZXh0IGF1dG9zaXppbmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0pJVCAiRW5hYmxlIEp1c3RJblRpbWUgamF2YXNjcmlwdCBzdXBw
b3J0IiBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDQ1M2M4MGY1YzkzNWJiZmI4MjVhMjUxMDQxNDRkMWU0MTQ2N2FjNWIuLjRl
OTkwMWU1MTNkZWY4MWIxOGE4YzJiNWQ3NmZjNTc1ZjY4MDk4YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0w
Ni0wMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cGVybC9GZWF0dXJlTGlzdC5wbTogYWRkIEVOQUJMRV9JTlRMIGZsYWcKKwogMjAxNS0wNi0wMSAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTm90aWZ5IGNsaWVu
dCB0aGF0IHdlIGJlZ2FuIGVkaXRpbmcgd2hlbiB0ZXh0IGZpZWxkIGlzIGZvY3VzZWQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjYTdjNzE2N2VjY2RiNjcwYTMw
ODNlODgyNzA3YTM1YWUyZDBhNTAwLi5mNmQxZWU4YTlmYTU0NTBjMmYwZTk5MWQ4MzA4ZjBiNDVi
ODQwNTc0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC05MSw2
ICs5MSw3IEBAIG15ICgKICAgICAkaW5wdXRUeXBlTW9udGhTdXBwb3J0LAogICAgICRpbnB1dFR5
cGVUaW1lU3VwcG9ydCwKICAgICAkaW5wdXRUeXBlV2Vla1N1cHBvcnQsCisgICAgJGludGxTdXBw
b3J0LAogICAgICRqaXRTdXBwb3J0LAogICAgICRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCwK
ICAgICAkbGVnYWN5VmVuZG9yUHJlZml4U3VwcG9ydCwKQEAgLTI4OCw2ICsyODksOSBAQCBteSBA
ZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtd2VlayIsIGRlc2MgPT4g
IlRvZ2dsZSBJbnB1dCBUeXBlIFdlZWsgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9JTlBVVF9UWVBFX1dFRUsiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlV2Vl
a1N1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJpbnRsIiwgZGVzYyA9PiAiVG9nZ2xlIElu
dGwgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAw
LCB2YWx1ZSA9PiBcJGludGxTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5v
dGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1
bHQgPT4gMCwgdmFsdWUgPT4gXCRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCB9LAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZDc2YzkzMDU2NDUzZTI5ZTVlNzM0YjM5MzEwNjhhZDM2ZWE5ZGZlMy4uMTY1NmE3YTFkNWI1
OWVkZDIxNzRlMWQ5MjkyODJlYjQxMDczOTQzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1
LTA2LTAxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0
aW9uczogU2tpcCBpbnRsIHVudGlsIGVuYWJsZWQKKyAgICAgICAgKiBqcy9pbnRsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvaW50bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvaW50bC5qczogQWRkZWQuCisgICAgICAgIChnbG9iYWwpOgorCiAyMDE1
LTA2LTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10g
VW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmYzY4MDAxMzNhYzY4
MjYwNDkwYzhkZjI2ZDYyOTA2ZmUxZWVlN2I4Li5kZmRlMGIxMzcxZTNiMjk3MGVmYTEyYTY2OGQ3
MTkyNDUzYmRmOTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUyNSwzICs1MjUsNiBAQCB3ZWJr
aXQub3JnL2IvMTQ0NTQwIGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvY3Jhc2gtcmVtb3ZlLWlmcmFt
ZS1kdXJpbmctb2JqZWN0LWJlZgogd2Via2l0Lm9yZy9iLzE0NTAwNyBqcy9yZWdyZXNzLTE0MTA5
OC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xNDUzOTAgc3RvcmFnZS9pbmRleGVkZGIv
ZGVsZXRlSW5kZXgtYnVnMTEwNzkyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorCisjIEludGwgaXMg
bm90IGVuYWJsZWQgeWV0Citqcy9pbnRsLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjI2YWY4NjMzNjUxYjE0MGM4ZjEwYjg5N2E5MDhmMGNhOGNhYTlk
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRs
IG9iamVjdCBhcyBkZXNjcmliZWQgaW4gOCBvZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFs
aXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgSW50bCBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1MgdHlwZW9mIEludGwg
aXMgJ29iamVjdCcKK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwpIGlz
ICdbb2JqZWN0IE9iamVjdF0nCitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihJbnRsKSA9PT0g
T2JqZWN0LnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIG5ldyBJbnRsIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IE9iamVjdCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IElu
dGwnKS4KK1BBU1MgSW50bCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnSW50bCgpJywgJ0ludGwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVj
dCkuCitQQVNTIGRlbGV0ZSBJbnRsOyBpcyB0cnVlCitQQVNTICdJbnRsJyBpbiBnbG9iYWwoKSBp
cyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwuaHRtbCBiL0xheW91dFRlc3RzL2pz
L2ludGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODRlYjI1MDQ2OGE4ZjMxNzk4MThiODZmZGM1ZjliOGFk
MDk3MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9pbnRsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2ludGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVhZTY1MTBhNmEzMzE2ZTdjMzI5YWJiZTRkZGNjY2ZkMjZh
MDViOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRs
LmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBi
ZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIDggb2YgdGhlIEVDTUFT
Y3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7CisKKy8vIFRo
ZSBJbnRsIG9iamVjdCBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBp
bml0aWFsIHZhbHVlIG9mIHRoZSBJbnRsIHByb3BlcnR5IG9mIHRoZSBnbG9iYWwgb2JqZWN0Lgor
c2hvdWxkQmVUeXBlKCJJbnRsIiwgIk9iamVjdCIpOworc2hvdWxkQmUoInR5cGVvZiBJbnRsIiwg
IidvYmplY3QnIik7CitzaG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKElu
dGwpIiwgIidbb2JqZWN0IE9iamVjdF0nIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tQcm90
b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QgaXMgdGhlIGJ1aWx0
LWluIE9iamVjdCBwcm90b3R5cGUgb2JqZWN0IHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBM
YW5ndWFnZSBTcGVjaWZpY2F0aW9uLgorc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0UHJvdG90eXBl
T2YoSW50bCkgPT09IE9iamVjdC5wcm90b3R5cGUiKTsKKworLy8gVGhlIEludGwgb2JqZWN0IGRv
ZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHByb3BlcnR5OyBpdCBpcyBub3Qg
cG9zc2libGUgdG8gdXNlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGNvbnN0cnVjdG9yIHdpdGggdGhl
IG5ldyBvcGVyYXRvci4KK3Nob3VsZFRocm93KCJuZXcgSW50bCIsICInVHlwZUVycm9yOiBPYmpl
Y3QgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgXFwnbmV3IEludGxcXCcpJyIpOwor
CisvLyBUaGUgSW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ2FsbF1dIGludGVybmFsIHBy
b3BlcnR5OyBpdCBpcyBub3QgcG9zc2libGUgdG8gaW52b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBh
IGZ1bmN0aW9uLgorc2hvdWxkVGhyb3coIkludGwoKSIsICInVHlwZUVycm9yOiBJbnRsIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gXFwnSW50bCgpXFwnLCBcXCdJbnRsXFwnIGlzIGFuIGluc3RhbmNl
IG9mIE9iamVjdCknIik7CisKKy8vIGlzIGRlbGV0YWJsZSwgaW5mZXJyZWQgZnJvbSB1c2Ugb2Yg
IkluaXRpYWwiIGluIHNwZWMsIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMK
K3ZhciBfX0ludGwgPSBJbnRsOworc2hvdWxkQmVUcnVlKCJkZWxldGUgSW50bDsiKTsKKworZnVu
Y3Rpb24gZ2xvYmFsKCkgeyByZXR1cm4gdGhpczsgfQorc2hvdWxkQmVGYWxzZSgiJ0ludGwnIGlu
IGdsb2JhbCgpIik7CisKK0ludGwgPSBfX0ludGw7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggNzA0MTVhODg2NmFiMDJhZWJjZDZiOTM4YWRjZDRjY2ExZjYxMGU5NC4u
NjkyMzgzOGEyNGZhZGVmOTRkZTg2NzU2Yzc0ZGNmYmRiMzA0MWQ2YyAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA2LTAxICBBbmR5
IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVudGluZyB0aGUgSW50
bCBhcGlzIGJlaGluZCBFTkFCTEVfSU5UTCBmbGFnLgorICAgICAgICBDcmVhdGUgdGhlIGJhc2Ug
SW50bCBuYW1lc3BhY2Ugb2JqZWN0LgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZl
YXR1cmVzLmNtYWtlOiBhZGQgRU5BQkxFX0lOVEwgZmxhZworCiAyMDE1LTA2LTAxICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2NtYWtlXSBTdXBwcmVz
cyBwYXJlbnRoZXNlcy1lcXVhbGl0eSB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFy
aWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggNzExNWJkYmU4
ZWEzNGVmMmMwZTQ2MzFjNjI2ZmUyYTQ5MTg3MjllYy4uNzgzOWI5MTYyZjA5YmY2ZDBhY2E1YTRj
NzMzOTM4YzRjZGM4N2I2NyAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwor
KysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDYt
MDEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9w
cy9GZWF0dXJlRGVmaW5lcy5wcm9wczogYWRkIEVOQUJMRV9JTlRMIGZsYWcKKyAgICAgICAgKiB3
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOiBhZGQgRU5BQkxFX0lO
VEwgZmxhZworCiAyMDE1LTA1LTI3ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBpbWcuY3VycmVudFNyYyBwcm9ibGVtIGluIHN0cmljdCBtb2RlIHdpdGggb2xkIHBp
Y3R1cmVmaWxsCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMv
RmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMv
RmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggMjZhNDA5ZTNjOTlhYzYzMWM4ZGYxZDdlODc5Mjhh
YzI0MDQ5MDVkYi4uNGVmMjQ2ZjU3NjFkODYwMjMxODI2OWNhMjViNjRjMTZhODIwMjc1NiAxMDA2
NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVz
LnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVm
aW5lcy5wcm9wcwpAQCAtNDgsNiArNDgsNyBAQAogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9NT05U
SCAvPgogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9USU1FIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9U
WVBFX1dFRUsgLz4KKyAgICA8RU5BQkxFX0lOVEw+RU5BQkxFX0lOVEw8L0VOQUJMRV9JTlRMPgog
ICAgIDxFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM+RU5BQkxFX0xFR0FDWV9DU1Nf
VkVORE9SX1BSRUZJWEVTPC9FTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM+CiAgICAg
PEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyAvPgogICAgIDxFTkFCTEVfTElOS19QUkVGRVRD
SCAvPgpAQCAtOTMsNyArOTQsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5BQkxFX1BST01JU0VTKTskKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVfM0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
OyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVfQ0FOVkFTX1BBVEgpOyQoRU5B
QkxFX0NBTlZBU19QUk9YWSk7JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NT
UzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NT
UzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1Nf
R1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJ
TkcpOyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7
JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSk7JChFTkFCTEVf
Q1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVO
QUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREFUQV9U
UkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVfREVUQUlMU19FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0Vf
T1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpOyQoRU5BQkxFX0RPTTRfRVZF
TlRTX0NPTlNUUlVDVE9SKTskKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpOyQoRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxF
X0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7
JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpOyQoRU5BQkxFX0hJR0hf
RFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFCQVNFKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFC
QVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNP
TVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLKTskKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktf
UFJFUkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5B
QkxFX01JQ1JPREFUQSk7JChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJ
RklDQVRJT05TKTskKEVOQUJMRV9QSUNUVVJFX1NJWkVTKTskKEVOQUJMRV9QUk9YSU1JVFlfRVZF
TlRTKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpOyQo
RU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVE
SUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJB
U0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFCTEVf
U1ZHX09URl9DT05WRVJURVIpOyQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpOyQoRU5BQkxFX1RF
WFRfQVVUT1NJWklORyk7JChFTkFCTEVfVklERU8pOyQoRU5BQkxFX1ZJREVPX1RSQUNLKTskKEVO
QUJMRV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxFX1dF
Ql9TT0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVOQUJMRV9XRUJHTCk7JChFTkFCTEVf
V0VCVlRUX1JFR0lPTlMpOyQoRU5BQkxFX1hIUl9USU1FT1VUKTskKEVOQUJMRV9YU0xUKTslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5BQkxFX1BST01J
U0VTKTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVfM0RfVFJBTlNG
T1JNUyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFC
TEVfQ0FOVkFTX1BBVEgpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7JChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NTU19J
TUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19TSEFERVJTKTsk
KEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVOQUJMRV9D
U1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFCTEVfQ1NTX1NI
QVBFX0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9O
U19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCk7JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVfREVUQUlMU19FTEVN
RU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQpOyQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKTskKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIpOyQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7JChFTkFCTEVf
RklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFEKTsk
KEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9U
VExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFCQVNFKTsk
KEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVO
QUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
TE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElN
RSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9JTlRMKTskKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpOyQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9N
QVRITUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFC
TEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9Q
SUNUVVJFX1NJWkVTKTskKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7
JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVD
SCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxF
X01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1ND
T1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklO
RElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpOyQo
RU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpOyQoRU5BQkxFX1RFWFRfQVVUT1NJWklORyk7JChFTkFC
TEVfVklERU8pOyQoRU5BQkxFX1ZJREVPX1RSQUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NTX01F
RElBKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJMRV9X
RUJfVElNSU5HKTskKEVOQUJMRV9XRUJHTCk7JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpOyQoRU5B
QkxFX1hIUl9USU1FT1VUKTskKEVOQUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTI4NSw2ICsyODYsMTAgQEAKICAgICAg
IDxWYWx1ZT4kKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9u
bWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CiAgICAgPC9CdWlsZE1hY3Jv
PgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9JTlRMIj4KKyAgICAgIDxWYWx1ZT4k
KEVOQUJMRV9JTlRMKTwvVmFsdWU+CisgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9F
bnZpcm9ubWVudFZhcmlhYmxlPgorICAgIDwvQnVpbGRNYWNybz4KICAgICA8QnVpbGRNYWNybyBJ
bmNsdWRlPSJFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMiPgogICAgICAgPFZhbHVl
PiQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTwvVmFsdWU+CiAgICAgICA8RW52
aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVudFZhcmlhYmxlPgpkaWZmIC0tZ2l0IGEv
V2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJv
cHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWly
by5wcm9wcwppbmRleCA4OTJkNjFkODBlMTg3ZmNlZDkwZjBjMWNkODlmYjRiZjc5NDgxZDgyLi43
ZjdjYWRjMDk0ZGU1MWQ1MzFkZmU5NjZlOTE1ZDM5MDViNjlkMDNjIDEwMDY0NAotLS0gYS9XZWJL
aXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwor
KysgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWly
by5wcm9wcwpAQCAtNDgsNiArNDgsNyBAQAogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAv
PgogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9USU1FIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUsgLz4KKyAgICA8RU5BQkxFX0lOVEw+RU5BQkxFX0lOVEw8L0VOQUJMRV9JTlRMPgogICAg
IDxFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM+RU5BQkxFX0xFR0FDWV9DU1NfVkVO
RE9SX1BSRUZJWEVTPC9FTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM+CiAgICAgPEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyAvPgogICAgIDxFTkFCTEVfTElOS19QUkVGRVRDSCAv
PgpAQCAtOTMsNyArOTQsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5BQkxFX1BST01JU0VTKTskKEVOQUJMRV9SRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSk7JChFTkFCTEVfM0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpOyQo
RU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVfQ0FOVkFTX1BBVEgpOyQoRU5BQkxF
X0NBTlZBU19QUk9YWSk7JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNf
Q09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNf
VEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpOyQoRU5BQkxFX0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcp
OyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChF
TkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSk7JChFTkFCTEVfQ1NT
X1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9D
VVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJM
RV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREFUQV9UUkFO
U0ZFUl9JVEVNUyk7JChFTkFCTEVfREVUQUlMU19FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpOyQoRU5BQkxFX0RPTTRfRVZFTlRT
X0NPTlNUUlVDVE9SKTskKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpOyQoRU5BQkxFX0VTNl9U
RU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChF
TkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJ
X0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFCQVNFKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBM
RVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZ
UEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLKTskKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMpOyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJF
UkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxF
X01JQ1JPREFUQSk7JChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklD
QVRJT05TKTskKEVOQUJMRV9QSUNUVVJFX1NJWkVTKTskKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRT
KTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpOyQoRU5B
QkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChFTkFCTEVfU0hBUkVE
X1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFf
U09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0Up
OyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJM
RV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFCTEVfU1ZH
X09URl9DT05WRVJURVIpOyQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpOyQoRU5BQkxFX1RFWFRf
QVVUT1NJWklORyk7JChFTkFCTEVfVklERU8pOyQoRU5BQkxFX1ZJREVPX1RSQUNLKTskKEVOQUJM
RV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxFX1dFQl9T
T0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVOQUJMRV9XRUJHTCk7JChFTkFCTEVfV0VC
VlRUX1JFR0lPTlMpOyQoRU5BQkxFX1hIUl9USU1FT1VUKTskKEVOQUJMRV9YU0xUKTslKFByZXBy
b2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5BQkxFX1BST01JU0VT
KTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVfM0RfVFJBTlNGT1JN
Uyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF9P
VkVSRkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVf
Q0FOVkFTX1BBVEgpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7JChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NTU19JTUFH
RV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19TSEFERVJTKTskKEVO
QUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVOQUJMRV9DU1Nf
U0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFCTEVfQ1NTX1NIQVBF
X0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19V
TlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1ND
SEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1RfRUxFTUVO
VCk7JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVfREVUQUlMU19FTEVNRU5U
KTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQp
OyQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKTskKEVOQUJMRV9FTkNSWVBURURfTUVE
SUFfVjIpOyQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7JChFTkFCTEVfRklM
RV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFEKTskKEVO
QUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJ
TkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFCQVNFKTskKEVO
QUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVOQUJM
RV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9D
QUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSk7
JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9JTlRMKTskKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpOyQoRU5B
QkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9NQVRI
TUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVf
TU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9QSUNU
VVJFX1NJWkVTKTskKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7JChF
TkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7
JChFTkFCTEVfU0hBRE9XX0RPTSk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX01F
RElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJ
QV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BF
RCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElO
R1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpOyQoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQpOyQoRU5BQkxFX1RFWFRfQVVUT1NJWklORyk7JChFTkFCTEVf
VklERU8pOyQoRU5BQkxFX1ZJREVPX1RSQUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElB
KTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJMRV9XRUJf
VElNSU5HKTskKEVOQUJMRV9XRUJHTCk7JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpOyQoRU5BQkxF
X1hIUl9USU1FT1VUKTskKEVOQUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTI4NSw2ICsyODYsMTAgQEAKICAgICAgIDxW
YWx1ZT4kKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVu
dFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CiAgICAgPC9CdWlsZE1hY3JvPgor
ICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9JTlRMIj4KKyAgICAgIDxWYWx1ZT4kKEVO
QUJMRV9JTlRMKTwvVmFsdWU+CisgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZp
cm9ubWVudFZhcmlhYmxlPgorICAgIDwvQnVpbGRNYWNybz4KICAgICA8QnVpbGRNYWNybyBJbmNs
dWRlPSJFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMiPgogICAgICAgPFZhbHVlPiQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTwvVmFsdWU+CiAgICAgICA8RW52aXJv
bm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVudFZhcmlhYmxlPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255874</attachid>
            <date>2015-06-30 16:44:25 -0700</date>
            <delta_ts>2015-06-30 18:03:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-90906-20150630164334.patch</filename>
            <type>text/plain</type>
            <size>66829</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjE0
NykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA2
LTMwICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgQmVnaW4gaW1wbGVtZW50
aW5nIHRoZSBJbnRsIGFwaXMgYmVoaW5kIEVOQUJMRV9JTlRMIGZsYWcuCisgICAgICAgIENyZWF0
ZSB0aGUgYmFzZSBJbnRsIG5hbWVzcGFjZSBvYmplY3QuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIwMTUtMDYt
MzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtD
TWFrZV0gRXJyb3Igd2hlbiBnc3QtcGx1Z2lucy1iYXNlIGlzIG1pc3NpbmcgaXMgdG9vIGNvbmZ1
c2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODYxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTUtMDYtMzAgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlv
biBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkw
OTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OiBhZGQgSW50bE9iamVjdC5jcHAKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRkIEVOQUJMRV9JTlRMIGZsYWcKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6IGFkZCBJ
bnRsT2JqZWN0CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnM6IGFkZCBJbnRsT2JqZWN0CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogYWRkIEludGxPYmplY3QKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6IGFkZCAiSW50bCIgbmFtZQorICAgICAgICAqIHJ1
bnRpbWUvSW50bE9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpJ
bnRsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogQWRkIGdsb2JhbCBJ
bnRsCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKwogMjAxNS0wNi0zMCAg
QmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CiAKICAgICAgICAgQWxs
b3cgb2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyB0aHJvdWdoIEdldFNjb3BlLCBHZXRFeGVjdXRh
YmxlIGFuZCBTa2lwU2NvcGUgbm9kZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDE4NjE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDcyLDYgKzQ3Miw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3Bw
CiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcAogICAgIHJ1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGlt
ZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwkocmV2aXNpb24gMTg2MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNiArMTE2LDggQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMQog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRf
bWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKK0VOQUJM
RV9JTlRMID0gOworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQo
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFM
X1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwogCkBAIC0yMjQsNCArMjI2LDQg
QEAgRU5BQkxFX0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBFTkFCTEVfRgogCiBFTkFCTEVfU0FU
VVJBVEVEX0xBWU9VVF9BUklUSE1FVElDID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhN
RVRJQzsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFC
TEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19T
Q1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVN
RU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAk
KEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJM
RV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQo
RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8y
KSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJ
VElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9M
QVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdF
X1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JT
X0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJM
RV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5B
QkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQo
RU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQo
RU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChF
TkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxF
X0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVf
SU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0la
SU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FD
WV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xF
VFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFC
TEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRF
Ul9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAk
KEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09O
Q1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4p
ICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVf
UFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZG
SVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RP
UikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJ
TkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykg
JChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NW
R19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhU
X0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9M
T0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9B
TEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfREFUQUNV
RV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tF
VFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJM
RV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVf
SklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5T
Rk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFU
RURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FU
VEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9D
QU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xB
U1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1B
VElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJM
RV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFC
TEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5B
QkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVf
Q1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNf
VEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJ
QklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJT
X0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElO
RykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVO
QUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktF
UlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVU
X1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5U
UykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVG
RVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQo
RU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVE
SUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQo
RU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJ
TFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVO
QUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlf
RVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVO
QUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExF
VEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFf
UVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVAp
ICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJM
RV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09O
VkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVN
UExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9F
VkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5H
X1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
VklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9D
U1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQp
ICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9V
VF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE4NjE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyOSw2ICs3MjksNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbml0aWFsaXplVGhyZWFkaW5nLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rp
b24uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVy
YXRpb25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0
b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0FQSVZhbHVlV3JhcHBlci5jcHAiIC8+CkBAIC0xNTMyLDYgKzE1MzMsNyBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0aW9uLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50cmluc2ljLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdGlvblN0YXR1cy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRvck9wZXJhdGlvbnMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE4NjE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNjMw
LDYgKzYzMCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdG9y
UHJvdG90eXBlLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVjdC5j
cHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTGV4aWNhbEVudmlyb25tZW50LmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTI2ODgsNiArMjY5MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0
ZXJhdG9yUHJvdG90eXBlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmpl
Y3QuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODYxNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTE2OSw2ICsxMTY5LDggQEAKIAkJOUU3Mjk0MEIxOTBGMDUx
NDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmgg
Ki87IH07CiAJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5kbGVQYXRoLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MDkxOTBGMDMw
NjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi87IH07CiAJCTlFQTVDN0EyMTkwRjA4ODcwMDUw
OEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlhbGl6
ZUxMVk1NYWMuY3BwICovOyB9OworCQlBMTJCQkZGMjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEy
QkJGRjExQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLzsgfTsKKwkJQTEyQkJGRjQx
QjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyQkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxP
YmplY3QuY3BwICovOyB9OwogCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3
MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJC
M0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVn
RXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUz
MTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTI5NDIsNiArMjk0NCw4IEBACiAJCTlFNzI5NDA5MTkwRjAzMDYwMDFBOTFC
NSAvKiBCdW5kbGVQYXRoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQnVuZGxlUGF0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3Mjk0MEEx
OTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnVuZGxlUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RUE1
QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5pdGlhbGl6ZUxMVk1NYWMuY3BwOyBwYXRoID0g
bGx2bS9Jbml0aWFsaXplTExWTU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTEyQkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE9iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNo
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMx
NSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdF
eHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1
MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTc1NCw2ICs1NzU4
LDcgQEAKIAkJCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxv
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkM5QkQzMTY2NDRERkIwMDgxMEQzMyAvKiBDb3Bp
ZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVF
MDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDJEMTRB
M0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC03MTgzLDYgKzcxODgsNyBAQAogCQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0
MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEVDMEVD
MjFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRs
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkVEMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGRkM5NUIxNEVGOTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiAxODYxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw3IEBACiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwK
ICAgICBtYWNybyhJbmZpbml0eSkgXAorICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09O
KSBcCiAgICAgbWFjcm8oTWFwKVwKICAgICBtYWNybyhNYXBJdGVyYXRvcilcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBW
YW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisKKyNpZiBFTkFCTEUoSU5UTCkK
KworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKElu
dGxPYmplY3QpOworCit9CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50
bE9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShJbnRsT2JqZWN0KSB9OworCitJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK0ludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxPYmplY3Q+KHZtLmhlYXApKSBJbnRsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBv
YmplY3Q7Cit9CisKK3ZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7Cit9CisKK1N0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxPYmplY3RfaAor
I2RlZmluZSBJbnRsT2JqZWN0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxPYmplY3QgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0
aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKKworcHJpdmF0ZToKKyAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYg
Ly8gSW50bE9iamVjdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxODYxNDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSw2ICsxMzEsMTAgQEAKICNpbmNsdWRlICJXZWFrU2V0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJXZWFrU2V0UHJvdG90eXBlLmgiCiAKKyNpZiBFTkFCTEUoSU5UTCkKKyNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKICNpZiBFTkFCTEUoUFJPTUlTRVMp
CiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3Iu
aCIKQEAgLTQyNCw2ICs0MjgsOSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVyCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmV2YWwuc3RyaW5nKCksIGdsb2JhbEZ1
bmNFdmFsKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAgICAgCisjaWYg
RU5BQkxFKElOVEwpCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPkludGwsIEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgSW50bE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2bSwgSlNPTk9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
LCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPk1hdGgsIE1hdGhPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0aE9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250
RW51bSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MTQ3KQorKysgU291cmNlL1dURi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNi0zMCAgQW5keSBW
YW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6IGFk
ZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIwMTUtMDYtMjkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFRlbXBvcmFyaWx5IGRpc2FibGUgUElDVFVSRV9TSVpFUwpJbmRl
eDogU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCShyZXZpc2lvbiAxODYxNDcpCisrKyBTb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDMsNiArNTQzLDEwIEBA
IHRoZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8KICNkZWZpbmUgRU5BQkxF
X0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5l
ZChFTkFCTEVfSU5UTCkKKyNkZWZpbmUgRU5BQkxFX0lOVEwgMAorI2VuZGlmCisKICNpZiAhZGVm
aW5lZChFTkFCTEVfSkFWQVNDUklQVF9JMThOX0FQSSkKICNkZWZpbmUgRU5BQkxFX0pBVkFTQ1JJ
UFRfSTE4Tl9BUEkgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODYxNDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAxNS0wNi0zMCAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYK
KworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFRlc3Q6
IGpzL2ludGwuaHRtbAorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIwMTUtMDYtMzAgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIENBQmFja2Ryb3BGaWx0ZXIgc2hvdWxkIHNl
dCB3aW5kb3dTZXJ2ZXJBd2FyZSB0byBmYWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDE4
NjE0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDggQEAgRU5BQkxFX1dJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMQogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQ7CiAKK0VOQUJMRV9JTlRMID0gOworCiBFTkFCTEVfSU9TX0dFU1RV
UkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3Nf
V0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RV
UkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTOwogCkBAIC0yMjQsNCArMjI2LDQgQEAgRU5BQkxFX0ZUTF9KSVRbc2RrPWlwaG9uZW9z
Kl0gPSBFTkFCTEVfRgogCiBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDID0gRU5B
QkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9O
UykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05J
TkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQo
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVO
QUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklF
TlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJ
T05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikg
JChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQo
RU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQ
UkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9U
SU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0Vf
Q09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRT
KSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRT
KSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZF
VENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChF
TkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJ
QV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElM
UykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5B
QkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9F
VkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVU
RSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9R
VUVSWSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkg
JChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxF
X1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05W
RVJURVIpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1Q
TEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VW
RU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdf
V09SRCkgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NT
U19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VC
X1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkg
JChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VU
X0FSSVRITUVUSUMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJM
RV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FD
SEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BS
T1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExB
VEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9D
U1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JP
WF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NT
U19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9D
U1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVO
QUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxF
X0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVf
QlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9F
TEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VM
RU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNf
Q09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9F
VkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJM
RV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURE
RU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNP
TVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lOVEwp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lf
VkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxF
X01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJf
RUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChF
TkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNV
UlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAk
KEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BS
T01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklY
X0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkg
JChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
ICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5H
KSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQo
RU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVf
VkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVO
QUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRT
KSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVf
WEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJ
VCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19Q
UkVTRU5UQVRJT05fTU9ERSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODYxNDcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAor
MjAxNS0wNi0zMCAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisK
IDIwMTUtMDYtMzAgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE4
NjExOC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiAxODYxNDcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4
XzEKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCitF
TkFCTEVfSU5UTCA9IDsKKwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0g
PSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNF
X0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRF
Uk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKIApAQCAtMjI0LDQgKzIy
Niw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5BQkxFX0YKIAogRU5BQkxF
X1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FS
SVRITUVUSUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQo
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZM
T1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRf
RUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFU
SCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChF
TkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFY
KSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRf
RklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVW
RUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09N
UE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dS
SURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19J
TUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVD
VE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChF
TkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAk
KEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JU
KSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1T
KSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIp
ICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVO
QUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xP
Q0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5B
QkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
TE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElN
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVU
T1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9M
RUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJM
RV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQo
RU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVf
TUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FM
RSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9I
V0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExV
R0lOKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5B
QkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNf
U1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQ
RUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9C
QU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVT
SVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJM
RV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVf
VEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lD
T05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxF
Q1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RB
VEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdM
KSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9T
T0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChF
TkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5B
QkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9W
SURFT19QUkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9U
UkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VM
RVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJM
RV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFC
TEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2
X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19B
TklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChF
TkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQo
RU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5B
QkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9D
U1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1Jf
VklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNI
Qk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9U
UkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0Vf
T1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklM
VEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NS
RUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAk
KEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9U
VExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9X
T1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9F
VkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9F
VkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFC
TEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktf
UFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBU
KSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1M
KSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5U
X1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUElDVFVSRV9TSVpFUykg
JChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElN
SVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkg
JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NP
TVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01F
RElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9T
TkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChF
TkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RG
X0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxF
X1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9V
Q0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJ
TElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01P
REVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJM
RV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9Y
U0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9M
QVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MTQ3KQorKysgU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDYtMzAgIEFu
ZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOiBhZGQgRU5BQkxFX0lOVEwgZmxhZworCiAyMDE1LTA2LTMwICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHVu
ZGVyIF9sYXlvdXRGb3JOb2RlSGlnaGxpZ2h0OiB3aGVuIGluc3BlY3RpbmcgZXNwbi5jb20KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiAxODYxNDcpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4
XzEKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCitF
TkFCTEVfSU5UTCA9IDsKKwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0g
PSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNF
X0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRF
Uk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKIApAQCAtMjI0LDQgKzIy
Niw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5BQkxFX0YKIAogRU5BQkxF
X1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FS
SVRITUVUSUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQo
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZM
T1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRf
RUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFU
SCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChF
TkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFY
KSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRf
RklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVW
RUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09N
UE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dS
SURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19J
TUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVD
VE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChF
TkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAk
KEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JU
KSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1T
KSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIp
ICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVO
QUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xP
Q0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5B
QkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
TE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElN
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVU
T1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9M
RUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJM
RV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQo
RU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVf
TUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FM
RSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9I
V0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExV
R0lOKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5B
QkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNf
U1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQ
RUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9C
QU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVT
SVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJM
RV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVf
VEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lD
T05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxF
Q1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RB
VEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdM
KSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9T
T0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChF
TkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5B
QkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9W
SURFT19QUkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9U
UkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VM
RVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJM
RV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFC
TEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2
X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19B
TklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChF
TkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQo
RU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5B
QkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9D
U1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1Jf
VklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNI
Qk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9U
UkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0Vf
T1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklM
VEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NS
RUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAk
KEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9U
VExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9X
T1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9F
VkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9F
VkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFC
TEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktf
UFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBU
KSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1M
KSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5U
X1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUElDVFVSRV9TSVpFUykg
JChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElN
SVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkg
JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NP
TVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01F
RElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9T
TkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChF
TkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RG
X0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxF
X1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9V
Q0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJ
TElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01P
REVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJM
RV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9Y
U0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9M
QVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwpJbmRl
eDogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkocmV2aXNpb24gMTg2MTQ3KQorKysgU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3
IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0lOUFVUX1RZUEVfTU9OVEggIlRvZ2dsZSBtb250aCB0eXBlIDxpbnB1dD4gc3VwcG9y
dCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZ
UEVfVElNRSAiVG9nZ2xlIHRpbWUgdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgIlRvZ2dsZSB3
ZWVrIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfSU5UTCAiVG9nZ2xlIEludGwgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19BSVJQTEFZICJUb2dnbGUgaU9TIGFp
cnBsYXkgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0lPU19URVhUX0FVVE9TSVpJTkcgIlRvZ2dsZSBpT1MgdGV4dCBhdXRvc2l6aW5nIHN1cHBv
cnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9KSVQgIkVu
YWJsZSBKdXN0SW5UaW1lIGphdmFzY3JpcHQgc3VwcG9ydCIgUFJJVkFURSBPTikKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
NjE0NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDE1LTA2LTMwICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIw
MTUtMDYtMzAgIEpvbmF0aGFuIERhdmlzICA8am9uZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gQWRkZWQgbXlzZWxmIGFzIGEgY29tbWl0dGVyLgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQkocmV2aXNpb24gMTg2MTQ3KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5
MCw3IEBAIG15ICgKICAgICAkaW5wdXRUeXBlTW9udGhTdXBwb3J0LAogICAgICRpbnB1dFR5cGVU
aW1lU3VwcG9ydCwKICAgICAkaW5wdXRUeXBlV2Vla1N1cHBvcnQsCisgICAgJGludGxTdXBwb3J0
LAogICAgICRqaXRTdXBwb3J0LAogICAgICRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCwKICAg
ICAkbGVnYWN5VmVuZG9yUHJlZml4U3VwcG9ydCwKQEAgLTI4NCw2ICsyODUsOSBAQCBteSBAZmVh
dHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtd2VlayIsIGRlc2MgPT4gIlRv
Z2dsZSBJbnB1dCBUeXBlIFdlZWsgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9J
TlBVVF9UWVBFX1dFRUsiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlV2Vla1N1
cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJpbnRsIiwgZGVzYyA9PiAiVG9nZ2xlIEludGwg
c3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAwLCB2
YWx1ZSA9PiBcJGludGxTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5vdGlm
aWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIs
CiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCB9LAogCkluZGV4OiBX
ZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdExpYnJhcmllcy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NjE0NykKKysrIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNi0zMCAgQW5keSBWYW5XYWdv
bmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01B
U2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5q
YW1pbiBQb3VsYWluLgorCisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmlu
ZXMucHJvcHM6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJv
cHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wczogYWRkIEVOQUJMRV9JTlRMIGZsYWcKKwogMjAx
NS0wNi0yOSAgSHl1bmd3b29rIExlZSAgPGh5dW5nd29vay5sZWVAbmF2ZXJjb3JwLmNvbT4KIAog
ICAgICAgICBbV2luXSBBY3RpdmF0ZSBTU0Ugc3VwcG9ydCBmb3IgMzItYml0IGJ1aWxkcy4KSW5k
ZXg6IFdlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9w
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVy
ZURlZmluZXMucHJvcHMJKHJldmlzaW9uIDE4NjE0NykKKysrIFdlYktpdExpYnJhcmllcy93aW4v
dG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNDgs
NiArNDgsNyBAQAogICAgIDxFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAvPgogICAgIDxFTkFCTEVf
SU5QVVRfVFlQRV9USU1FIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgLz4KKyAgICA8
RU5BQkxFX0lOVEw+RU5BQkxFX0lOVEw8L0VOQUJMRV9JTlRMPgogICAgIDxFTkFCTEVfTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVM+RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTPC9F
TkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM+CiAgICAgPEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUyAvPgogICAgIDxFTkFCTEVfTElOS19QUkVGRVRDSCAvPgpAQCAtOTMsNyArOTQs
NyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxD
bENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfQ1NQX05F
WFQpOyQoRU5BQkxFX1BST01JU0VTKTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7
JChFTkFCTEVfM0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTsk
KEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0FUVEFDSE1F
TlRfRUxFTUVOVCk7JChFTkFCTEVfQ0FOVkFTX1BBVEgpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7
JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVM
RVMpOyQoRU5BQkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVf
Q1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5B
QkxFX0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19S
RUdJT05TKTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBF
Uyk7JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5J
TUFUSU9OU19UUkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVRBR1JJRCk7JChF
TkFCTEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUyk7JChF
TkFCTEVfREVUQUlMU19FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5B
QkxFX0RJUkVDVE9SWV9VUExPQUQpOyQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKTsk
KEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpOyQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFM
X1NZTlRBWCk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTsk
KEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BB
R0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFC
TEVfSUNPTkRBVEFCQVNFKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9M
RUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMp
OyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJM
RV9NQVRITUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJM
RV9QSUNUVVJFX1NJWkVTKTskKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9U
QSk7JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQ
RUVDSCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5B
QkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxF
X1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIp
OyQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpOyQoRU5BQkxFX1RFWFRfQVVUT1NJWklORyk7JChF
TkFCTEVfVklERU8pOyQoRU5BQkxFX1ZJREVPX1RSQUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NT
X01FRElBKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJM
RV9XRUJfVElNSU5HKTskKEVOQUJMRV9XRUJHTCk7JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpOyQo
RU5BQkxFX1hIUl9USU1FT1VUKTskKEVOQUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRp
b25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+JChFTkFCTEVfQ1NQX05FWFQpOyQoRU5BQkxFX1BST01JU0VTKTskKEVOQUJMRV9SRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVfM0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfQUND
RUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJ
TkcpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVfQ0FOVkFTX1BBVEgpOyQo
RU5BQkxFX0NBTlZBU19QUk9YWSk7JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxF
X0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxF
X0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9D
U1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVM
NCk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSk7JChFTkFC
TEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVO
QUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKTsk
KEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREFU
QV9UUkFOU0ZFUl9JVEVNUyk7JChFTkFCTEVfREVUQUlMU19FTEVNRU5UKTskKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpOyQoRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SKTskKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpOyQoRU5BQkxF
X0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElP
Tik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpOyQoRU5BQkxFX0hJ
R0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFCQVNFKTskKEVOQUJMRV9JTkRFWEVEX0RB
VEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gp
OyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9J
TkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKTskKEVOQUJMRV9JTlRMKTskKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVG
SVhFUyk7JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01F
VEVSX0VMRU1FTlQpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVfTU9VU0VfQ1VSU09SX1ND
QUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9QSUNUVVJFX1NJWkVTKTskKEVO
QUJMRV9QUk9YSU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfTkFWSUdBVE9S
X0NPTlRFTlRfVVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBRE9X
X0RPTSk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKTsk
KEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1VC
UElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NW
R19GT05UUyk7JChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpOyQoRU5BQkxFX1RFTVBMQVRFX0VM
RU1FTlQpOyQoRU5BQkxFX1RFWFRfQVVUT1NJWklORyk7JChFTkFCTEVfVklERU8pOyQoRU5BQkxF
X1ZJREVPX1RSQUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVOQUJMRV9XRUJf
QVVESU8pOyQoRU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVOQUJM
RV9XRUJHTCk7JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpOyQoRU5BQkxFX1hIUl9USU1FT1VUKTsk
KEVOQUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAg
PEl0ZW1Hcm91cD4KQEAgLTI4NSw2ICsyODYsMTAgQEAKICAgICAgIDxWYWx1ZT4kKEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUspPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8
L0Vudmlyb25tZW50VmFyaWFibGU+CiAgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3Jv
IEluY2x1ZGU9IkVOQUJMRV9JTlRMIj4KKyAgICAgIDxWYWx1ZT4kKEVOQUJMRV9JTlRMKTwvVmFs
dWU+CisgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVudFZhcmlhYmxl
PgorICAgIDwvQnVpbGRNYWNybz4KICAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJFTkFCTEVfTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMiPgogICAgICAgPFZhbHVlPiQoRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTKTwvVmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50
cnVlPC9FbnZpcm9ubWVudFZhcmlhYmxlPgpJbmRleDogV2ViS2l0TGlicmFyaWVzL3dpbi90b29s
cy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMJKHJl
dmlzaW9uIDE4NjE0NykKKysrIFdlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0
dXJlRGVmaW5lc0NhaXJvLnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAg
ICAgPEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUgLz4KICAgICA8RU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAvPgorICAgIDxFTkFCTEVfSU5UTD5F
TkFCTEVfSU5UTDwvRU5BQkxFX0lOVEw+CiAgICAgPEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9Q
UkVGSVhFUz5FTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM8L0VOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUz4KICAgICA8RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIC8+
CiAgICAgPEVOQUJMRV9MSU5LX1BSRUZFVENIIC8+CkBAIC05Myw3ICs5NCw3IEBACiAgIDwvUHJv
cGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV9DU1BfTkVYVCk7JChFTkFCTEVf
UFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9U
UkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VM
RVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTsk
KEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVf
Q1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURF
UlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQoRU5B
QkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVTKTskKEVOQUJMRV9D
U1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5T
SVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9D
VVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElT
VF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxT
X0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZ
X1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKTskKEVO
QUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQ
QUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJf
VEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJB
U0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1Ip
OyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVO
RE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElO
S19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChF
TkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9D
VVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BJQ1RVUkVfU0la
RVMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9O
QVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVOQUJM
RV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09O
VFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVO
QUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChF
TkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFCTEVfVEVN
UExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9WSURFTyk7
JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpOyQoRU5B
QkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcp
OyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVfWEhSX1RJ
TUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJM
RV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVf
QVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFT
X1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJ
T05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTsk
KEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9V
VCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFC
TEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9D
U1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNG
T1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9W
SVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFH
UklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
Tik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RS
VUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9I
SURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05U
SCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQo
RU5BQkxFX0lOVEwpOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVf
TElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7
JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxF
X05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpOyQoRU5BQkxFX1BST1hJTUlU
WV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElM
Uyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJM
RV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJM
RV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9E
QVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQp
OyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVO
QUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFC
TEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0sp
OyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFC
TEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVO
QUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQp
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAg
ICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpA
QCAtMjg1LDYgKzI4NiwxMCBAQAogICAgICAgPFZhbHVlPiQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
Syk8L1ZhbHVlPgogICAgICAgPEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRW
YXJpYWJsZT4KICAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5B
QkxFX0lOVEwiPgorICAgICAgPFZhbHVlPiQoRU5BQkxFX0lOVEwpPC9WYWx1ZT4KKyAgICAgIDxF
bnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CisgICAgPC9CdWls
ZE1hY3JvPgogICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUyI+CiAgICAgICA8VmFsdWU+JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJF
RklYRVMpPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25t
ZW50VmFyaWFibGU+CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODYxNDcpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wNi0zMCAgQW5k
eSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogU2tp
cCBpbnRsIHVudGlsIGVuYWJsZWQKKyAgICAgICAgKiBqcy9pbnRsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvaW50bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvaW50bC5qczogQWRkZWQuCisgICAgICAgIChnbG9iYWwpOgorCiAyMDE1LTA2LTMwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0IGJhZCBXSzEgcmViYXNlbGluZSBkb25lIGluIHIxODYxMDYuCkluZGV4OiBMYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMJKHJldmlzaW9uIDE4NjE0NykKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJ
KHdvcmtpbmcgY29weSkKQEAgLTUyNiwzICs1MjYsNSBAQCB3ZWJraXQub3JnL2IvMTQ2MTgyIGVk
aXRpbmcvc2VsZWN0aW9uL2xlCiAKIHdlYmtpdC5vcmcvYi8xNDY0MzQgZmFzdC9kb20vSFRNTElt
YWdlRWxlbWVudC9zaXplcyBbIFNraXAgXQogCisjIEludGwgaXMgbm90IGVuYWJsZWQgeWV0Citq
cy9pbnRsLmh0bWwgWyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhl
IEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBFQ01BU2NyaXB0IEludGVybmF0
aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBJbnRsIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdAorUEFTUyB0eXBlb2Yg
SW50bCBpcyAnb2JqZWN0JworUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSW50
bCkgaXMgJ1tvYmplY3QgT2JqZWN0XScKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKEludGwp
ID09PSBPYmplY3QucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgbmV3IEludGwgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdu
ZXcgSW50bCcpLgorUEFTUyBJbnRsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW50bCBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICdJbnRsKCknLCAnSW50bCcgaXMgYW4gaW5zdGFuY2Ugb2Yg
T2JqZWN0KS4KK1BBU1MgZGVsZXRlIEludGw7IGlzIHRydWUKK1BBU1MgJ0ludGwnIGluIGdsb2Jh
bCgpIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvaW50bC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL2ludGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2lu
dGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaW50bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjQgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlv
ciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIDggb2YgdGhlIEVDTUFTY3JpcHQg
SW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7CisKKy8vIFRoZSBJbnRs
IG9iamVjdCBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBpbml0aWFs
IHZhbHVlIG9mIHRoZSBJbnRsIHByb3BlcnR5IG9mIHRoZSBnbG9iYWwgb2JqZWN0Lgorc2hvdWxk
QmVUeXBlKCJJbnRsIiwgIk9iamVjdCIpOworc2hvdWxkQmUoInR5cGVvZiBJbnRsIiwgIidvYmpl
Y3QnIik7CitzaG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwpIiwg
Iidbb2JqZWN0IE9iamVjdF0nIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tQcm90b3R5cGVd
XSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QgaXMgdGhlIGJ1aWx0LWluIE9i
amVjdCBwcm90b3R5cGUgb2JqZWN0IHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFn
ZSBTcGVjaWZpY2F0aW9uLgorc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50
bCkgPT09IE9iamVjdC5wcm90b3R5cGUiKTsKKworLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90
IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHByb3BlcnR5OyBpdCBpcyBub3QgcG9zc2li
bGUgdG8gdXNlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGNvbnN0cnVjdG9yIHdpdGggdGhlIG5ldyBv
cGVyYXRvci4KK3Nob3VsZFRocm93KCJuZXcgSW50bCIsICInVHlwZUVycm9yOiBPYmplY3QgaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgXFwnbmV3IEludGxcXCcpJyIpOworCisvLyBU
aGUgSW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ2FsbF1dIGludGVybmFsIHByb3BlcnR5
OyBpdCBpcyBub3QgcG9zc2libGUgdG8gaW52b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0
aW9uLgorc2hvdWxkVGhyb3coIkludGwoKSIsICInVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gXFwnSW50bCgpXFwnLCBcXCdJbnRsXFwnIGlzIGFuIGluc3RhbmNlIG9mIE9i
amVjdCknIik7CisKKy8vIGlzIGRlbGV0YWJsZSwgaW5mZXJyZWQgZnJvbSB1c2Ugb2YgIkluaXRp
YWwiIGluIHNwZWMsIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMKK3ZhciBf
X0ludGwgPSBJbnRsOworc2hvdWxkQmVUcnVlKCJkZWxldGUgSW50bDsiKTsKKworZnVuY3Rpb24g
Z2xvYmFsKCkgeyByZXR1cm4gdGhpczsgfQorc2hvdWxkQmVGYWxzZSgiJ0ludGwnIGluIGdsb2Jh
bCgpIik7CisKK0ludGwgPSBfX0ludGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255886</attachid>
            <date>2015-06-30 18:03:48 -0700</date>
            <delta_ts>2015-07-17 19:23:03 -0700</delta_ts>
            <desc>Add namespace object and feature flag</desc>
            <filename>bug-90906-20150630190256.patch</filename>
            <type>text/plain</type>
            <size>68908</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NjdjNjVjZjA3MGRlYjFkZTQwMzQ1MGU1ZDg4YzkyNWI4OTg1ZTFiLi5hZWFhMTgwOThiMGFmNWNl
ZDNjYWFhY2NjYWI5NGRlOGUxZDljMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNS0wNi0wMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OiBhZGQgSW50bE9iamVjdC5jcHAKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRkIEVOQUJMRV9JTlRMIGZsYWcKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6IGFk
ZCBJbnRsT2JqZWN0CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6IGFkZCBJbnRsT2JqZWN0CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogYWRkIEludGxPYmplY3QKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6IGFkZCAiSW50bCIgbmFtZQorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0
OjpJbnRsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5o
OiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogQWRkIGdsb2Jh
bCBJbnRsCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKwogMjAxNS0wNi0z
MCAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CiAKICAgICAgICAg
QWxsb3cgb2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyB0aHJvdWdoIEdldFNjb3BlLCBHZXRFeGVj
dXRhYmxlIGFuZCBTa2lwU2NvcGUgbm9kZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZWNiMDM3ZDUwMzNiZTEwMmY5MTM5YjQ0
ZmIwNjQ2MjQxYTZiZjQyMS4uYjUxMzUyOTNiN2Q3ZWUyOWUwNTdjODY3N2RkM2JmZjM0MDZhYzRj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNi0wMSAgQW5keSBWYW5XYWdvbmVyICA8dGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IElu
dGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBhZGQgRU5BQkxFX0lOVEwgZmxh
ZworCiAyMDE1LTA2LTI5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUZW1wb3JhcmlseSBkaXNhYmxlIFBJQ1RVUkVfU0laRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzEyZTQx
MmQ4NDI3MGJlZjAxODJjMmU4MzBkMDc4NzdiZGVmZTEzLi5mNDIzMzI4MWU4MzRmNzViNmIxM2Ri
YWI2N2MyMmZkZWNmNDBlNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDYt
MDEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDoganMvaW50bC5odG1s
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogYWRk
IEVOQUJMRV9JTlRMIGZsYWcKKwogMjAxNS0wNi0zMCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQ0FCYWNrZHJvcEZpbHRlciBzaG91bGQgc2V0IHdpbmRvd1NlcnZl
ckF3YXJlIHRvIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDYyZDhlODViNTIyMDUyN2IzYWQ0
NzIyNGVjMzIxM2I3ZjY2OWU5NC4uNjYzMmVhZDI1YTVlMTFkNmIzZjFkMjk1MTlkMTc0YjVkNzJl
MmU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA2LTAxICBBbmR5
IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWc6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIwMTUtMDYtMzAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIg
X2xheW91dEZvck5vZGVIaWdobGlnaHQ6IHdoZW4gaW5zcGVjdGluZyBlc3BuLmNvbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGRhYmQ3Mjk0ODQzMGRkY2ZhNzFlODc3NzU1Y2FmMGMxZTkzNDI0MDIuLmI2NjJhMGJj
NDJkZTE4NWRiODJjOGU0OWVhOGIwODViMDM2MjViNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxNS0wNi0wMSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9u
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBhZGQgRU5BQkxFX0lOVEwgZmxh
ZworCiAyMDE1LTA2LTMwICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNjU1NzI5PiBXZWJLaXQgc2hvdWxkIGhldXJpc3RpY2Fs
bHkgZXhjbHVkZSBzY3JvbGxpbmcgdG91Y2ggZXZlbnRzIGZyb20gdGhlIHVzZXIgZ2VzdHVyZSBj
YXRlZ29yeQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNjOTQwYjRhNWIy
NTQzY2QxNGJjZWQ1OGIwMmMxYjk4MTU2OWJjNGIuLjMwZTAxNzcyY2MzNWJkNmYwYmNmMmU5OGY3
MDJlNTI1ODA3Y2MzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ3
Miw2ICs0NzIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAogICAgIHJ1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1
cmVDaGFpbi5jcHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisgICAgcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAogICAg
IHJ1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FQSVZhbHVlV3Jh
cHBlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA1YmE3MjU3ZDMyNDhjMTM2MGI2
ZTQ2MmE5YmNhYzc2ZDk1Y2E4ODVkLi44ZTJlNzk0NDA5ZjRjNTViZGMxODBmZTY2N2JhMDMwZWM1
ZTQ5YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNiArMTE2LDggQEAgRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEw
MTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKK0VOQUJMRV9JTlRMID0g
OworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lP
U19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RL
KSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMg
PSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwogCkBAIC0yMjQsNCArMjI2LDQgQEAgRU5BQkxF
X0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBFTkFCTEVfRlRMX0pJVDsKIAogRU5BQkxFX1NBVFVS
QVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVU
SUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NS
T0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVO
VCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChF
TkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVS
SU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikg
JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJ
TkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZ
T1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9S
RVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19M
RVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVf
Q1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVO
QUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVO
QUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9H
QU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
RElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lf
VkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxF
X01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJf
RUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChF
TkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNV
UlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAk
KEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BS
T01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklY
X0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkg
JChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
ICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5H
KSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQo
RU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVf
VkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVO
QUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRT
KSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVf
WEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJ
VCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19Q
UkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRB
Q0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FO
VkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNT
X1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJ
T05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVf
Q1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxF
X0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NT
U19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RF
WFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJ
TElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSU19M
RVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJM
RV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcp
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJT
KSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMp
ICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVO
QUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElB
X1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVO
QUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxT
KSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUElDVFVSRV9TSVpFUykgJChFTkFC
TEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VW
RU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRF
KSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FV
RVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAk
KEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVf
U1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZF
UlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBM
QVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZF
TlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19X
T1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJ
REVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NT
X01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJf
UkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFC
TEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAk
KEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRf
QVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYjE0MmE2YTJjNjY3NDMwMDdhZTliNWMy
YWI3Y2JkOGQxZDFkNzkxMC4uOTczODQwNzhhODg4MGJkNTU0NTdlZDE2MDUyY2U5YTRhYjBlNGI4
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03MjksNiArNzI5
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVk
U3RydWN0dXJlQ2hhaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJbnRlcm5hbEZ1bmN0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW50bE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEl0ZXJhdG9yUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNBUElWYWx1ZVdyYXBwZXIuY3BwIiAvPgpAQCAtMTUzMiw2ICsxNTMz
LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hh
aW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5j
dGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25TdGF0dXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRpb25z
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKaW5kZXggZDNlMDJlM2Q0MzQwN2RiMWYyN2I0YTNiZjM0MGZhNTYxZmYzY2I0NS4uODJiNTFi
MGE1MWU2MzExZGJhNDZmOTM2MjE4MmUyZWY4NWM0MjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjI0LDYgKzYyNCw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNwcCI+CisgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRpb25zLmNwcCI+CiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2NzYsNiArMjY3OSw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uaCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVjdC5oIj4KKyAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxJbnRyaW5zaWMuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
Mjg4ZWEwMDg4ZWJiYjQ1YjYxMzVmYjBmZWZmMGU3Njg1ZWM1MmE0ZS4uNGIzNTZmNmUyMTYzMDRj
ZjUwODU0MTYyMTlkMGEzMTE5NDM1OGM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNjksNiArMTE2OSw4IEBACiAJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5k
bGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovOyB9OwogCQk5RUE1QzdB
MTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5k
bGVQYXRoLm1tICovOyB9OwogCQk5RUE1QzdBMjE5MEYwODg3MDA1MDhFQkUgLyogSW5pdGlhbGl6
ZUxMVk1NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCAqLzsg
fTsKKwkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmggKi87IH07CisJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsK
IAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMx
NSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDExMUM3
QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTQy
LDYgKzI5NDQsOCBAQAogCQk5RTcyOTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhdGgubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAv
KiBCdW5kbGVQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZVBh
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVBNUM3QTAxOTBGMDVEMjAwNTA4
RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEluaXRpYWxpemVMTFZNTWFjLmNwcDsgcGF0aCA9IGxsdm0vSW5pdGlhbGl6ZUxM
Vk1NYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTJCQkZGMTFCMDQ0QThC
MDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMkJCRkYzMUIw
NDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludGxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4
cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NzEsNiArNDQ3NSw4IEBACiAJCQkJQTc4ODUz
RjgxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLywKIAkJCQlC
QzlCQjk1QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8sCiAJCQkJ
QkMxMTY2N0EwRTE5OUMwNTAwODA2NkREIC8qIEludGVybmFsRnVuY3Rpb24uaCAqLywKKwkJCQlB
MTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8sCisJCQkJQTEyQkJG
RjExQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLywKIAkJCQk4NkJGNjQyQTE0OERC
MkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCiAJCQkJRkU0RDU1QjcxQUU3MTZDQTAwNTJF
NDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oICovLAogCQkJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhD
NCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3BwICovLApAQCAtNTc1NCw2ICs1NzYwLDcgQEAKIAkJ
CQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyRkM5QkQzMTY2NDRERkIwMDgxMEQzMyAvKiBDb3BpZWRCbG9ja0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJ
bnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIg
LyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDJEMTRBM0M2RTAwMDU3
OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUU5ODQx
MUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC03MTgzLDYgKzcxOTAsNyBAQAogCQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEVDMEVDMjFBQTBEN0RB
MDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcw
MjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGRkM5NUIxNEVGOTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggMmEwNWYxOWZlYWU1NzM5ZjNlMDgwOTQwMzgxYjZjYjBjMWUzYTEzYy4uZjc1NDAy
NGQwMzY1MmIzZmJlYjRhMmY0ZjEzOTJmODBlZWI3NGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOCw2ICszOCw3IEBA
CiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKICAgICBtYWNy
byhJbmZpbml0eSkgXAorICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09OKSBcCiAgICAg
bWFjcm8oTWFwKVwKICAgICBtYWNybyhNYXBJdGVyYXRvcilcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZGE5MzhmYTgxM2FlMzFm
Mzc1NmRiMDRkZjA3ZmJiMDk5MmRkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwu
Y29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCisjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsT2JqZWN0KTsKKworfQorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE9iamVjdCkgfTsKKworSW50
bE9iamVjdDo6SW50bE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCitJbnRsT2JqZWN0KiBJbnRs
T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRs
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsT2JqZWN0Pih2
bS5oZWFwKSkgSW50bE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCit2b2lkIEludGxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCitTdHJ1Y3R1cmUqIEludGxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNDViOWFiNjQ5MDIyOGVkZWE1N2FiMmUwYmU5YzBiNWE4OWUyZmMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0
aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bE9iamVjdF9o
CisjZGVmaW5lIEludGxPYmplY3RfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bE9iamVjdCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0
YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwor
CisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworCitwcml2YXRlOgorICAgIEludGxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRp
ZiAvLyBJbnRsT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCAyOThkOGU1NDIzMGNmNjc2NDg1NjhhMTcyMDNlNTY1MDFj
YWI4Mzk4Li5hMDU3OGVjZWNjMWM3YzBiNmNiMzgxNDI2ZTcwZDU3YTY2Mzg5ZDNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0x
MzEsNiArMTMxLDEwIEBACiAjaW5jbHVkZSAiV2Vha1NldENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiV2Vha1NldFByb3RvdHlwZS5oIgogCisjaWYgRU5BQkxFKElOVEwpCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCiAjaWYgRU5BQkxFKFBST01JU0VT
KQogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9y
LmgiCkBAIC00MjQsNiArNDI4LDkgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBtX2V2
YWxGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwg
dm0ucHJvcGVydHlOYW1lcy0+ZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCwgbV9l
dmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKICAgICAKKyNpZiBFTkFCTEUoSU5UTCkKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwg
SW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKKyNlbmRpZiAvLyBFTkFC
TEUoSU5UTCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWF0aCwg
TWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IDZmMGIzYzc0Njg0NzYxMWUxMWJmNzgxZjhjNjEzMDAy
MjhlYmIxOGEuLmVmMDM1M2VlN2FjZTYyYTJmMzQzYjk5YjlhYmViOTg4YWJhYzZjMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaApAQCAtNTQzLDYgKzU0MywxMCBAQCB0aGUgcHVibGljIGlPUyBT
REsuIFdlIHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUgRmVhdHVyZURlZmluZXMueGNjb25m
aWcgZmlsZQogI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyAw
CiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9JTlRMKQorI2RlZmluZSBFTkFCTEVfSU5U
TCAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0kxOE5fQVBJKQog
I2RlZmluZSBFTkFCTEVfSkFWQVNDUklQVF9JMThOX0FQSSAwCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5k
ZXggNWJhNzI1N2QzMjQ4YzEzNjBiNmU0NjJhOWJjYWM3NmQ5NWNhODg1ZC4uOGUyZTc5NDQwOWY0
YzU1YmRjMTgwZmU2NjdiYTAzMGVjNWU0OWE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNiw2ICsxMTYs
OCBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9t
YWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAorRU5BQkxF
X0lOVEwgPSA7CisKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRF
Uk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxf
U0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CiAKQEAgLTIyNCw0ICsyMjYsNCBA
QCBFTkFCTEVfRlRMX0pJVFtzZGs9aXBob25lb3MqXSA9IEVOQUJMRV9GVExfSklUOwogCiBFTkFC
TEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRf
QVJJVEhNRVRJQzsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykg
JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVO
VF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19Q
QVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5U
QVgpICQoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVO
VF9GSUxURVJJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19M
RVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19D
T01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1Nf
R1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NT
X0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VM
RUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAk
KEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkp
ICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBP
UlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRF
TVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01F
RElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxf
MikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQo
RU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChF
TkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVU
X1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5B
QkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikg
JChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJM
RV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1ND
QUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9S
X0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9Q
TFVHSU4pICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChF
TkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJ
Q19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RFX0lO
U1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVCQkVS
X0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZTlRI
RVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxFX1RFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJM
RV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNFUlNF
TEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVf
REFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VC
X1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAk
KEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChF
TkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5BQkxF
X1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNE
X1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5B
QkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVO
QUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAkKEVOQUJMRV9F
UzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQo
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NT
X0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAk
KEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikg
JChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChF
TkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxF
X0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNP
Ul9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RB
U0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRB
X1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklD
RV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9G
SUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhS
T1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xT
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lO
X1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNI
X0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElO
S19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJ
UFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVT
KSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9Y
SU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RB
KSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRP
Q09NUExFVEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05f
TUVESUFfUVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xM
X1NOQVApICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAk
KEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19P
VEZfQ09OVkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFC
TEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9U
T1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RS
QUlMSU5HX1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdf
TU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5B
QkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5H
KSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxF
X1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVE
X0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCmluZGV4IDViYTcyNTdkMzI0OGMxMzYwYjZlNDYyYTliY2FjNzZkOTVjYTg4
NWQuLjhlMmU3OTQ0MDlmNGM1NWJkYzE4MGZlNjY3YmEwMzBlYzVlNDlhOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCkBAIC0xMTYsNiArMTE2LDggQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNv
c3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQ7CiAKK0VOQUJMRV9JTlRMID0gOworCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9J
TlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRT
OwogCkBAIC0yMjQsNCArMjI2LDQgQEAgRU5BQkxFX0ZUTF9KSVRbc2RrPWlwaG9uZW9zKl0gPSBF
TkFCTEVfRlRMX0pJVDsKIAogRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyA9IEVO
QUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUM7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChF
TkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElP
TlMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKSAk
KEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9T
WU5UQVgpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChF
TkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURB
UFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVH
SU9OUykgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMp
ICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5B
QkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQo
RU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1Ip
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAk
KEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RF
UFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01f
VElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNF
X0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RB
VEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5U
UykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVG
RVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQo
RU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVE
SUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQo
RU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJ
TFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVO
QUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlf
RVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVO
QUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExF
VEUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFf
UVVFUlkpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVAp
ICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJM
RV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09O
VkVSVEVSKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVN
UExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9F
VkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5H
X1dPUkQpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
VklERU9fVFJBQ0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9D
U1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9SRVBMQVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQp
ICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJBVEVEX0xBWU9V
VF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFC
TEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NB
Q0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19Q
Uk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNU
SU9OX1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVf
Q1NQX05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19C
T1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9D
U1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChF
TkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJM
RV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5F
X0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVN
RV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1Rf
RUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19F
TEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRT
X0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURf
RVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFC
TEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElE
REVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5D
T01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JTlRM
KSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJ
TkcpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9S
X1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZ
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVU
VEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFC
TEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJM
RV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVS
X0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQo
RU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05D
VVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikg
JChFTkFCTEVfUElDVFVSRV9TSVpFUykgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9Q
Uk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJ
WF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
ICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9S
KSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElO
RykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAk
KEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkcpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FM
TCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VF
X1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VU
UykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxF
X1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9K
SVQpICQoRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9f
UFJFU0VOVEFUSU9OX01PREUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA1YmE3MjU3ZDMyNDhjMTM2MGI2ZTQ2
MmE5YmNhYzc2ZDk1Y2E4ODVkLi44ZTJlNzk0NDA5ZjRjNTViZGMxODBmZTY2N2JhMDMwZWM1ZTQ5
YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCitFTkFCTEVfSU5UTCA9IDsKKwogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNf
aW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UUzsKIApAQCAtMjI0LDQgKzIyNiw0IEBAIEVOQUJMRV9GVExfSklUW3Nkaz1pcGhv
bmVvcypdID0gRU5BQkxFX0ZUTF9KSVQ7CiAKIEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRI
TUVUSUMgPSBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDOwogCi1GRUFUVVJFX0RF
RklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVf
QVZGX0NBUFRJT05TKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0NBQ0hF
X1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9Y
WSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCkgJChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgJChFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NQ
X05FWFQpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hf
REVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1Nf
REVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFC
TEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9D
U1NfU0hBUEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JS
RUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9I
QU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVN
RU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NP
TlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMikgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZF
TlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVf
R0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVO
X1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFC
TEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0lPU19U
T1VDSF9FVkVOVFMpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNf
U0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxF
X01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9D
T05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUElDVFVSRV9T
SVpFUykgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVf
UFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9R
VU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFUVVFU1Rf
QVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVU
SU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfQ1NTX1ND
Uk9MTF9TTkFQKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQ
SSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9T
VkdfT1RGX0NPTlZFUlRFUikgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQo
RU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFC
TEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX0NT
U19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9W
SUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAk
KEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVO
QUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX1NBVFVS
QVRFRF9MQVlPVVRfQVJJVEhNRVRJQykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUp
OworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUND
RUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJ
TkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAk
KEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJM
RV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZf
QVJST1dGVU5DVElPTl9TWU5UQVgpICQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgpICQoRU5BQkxF
X0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcp
ICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykg
JChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQp
ICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09M
VVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVM
NCkgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1Mz
X1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVf
Rk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQ
QUQpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ESUVf
VUkpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1Jf
UE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChF
TkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChF
TkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVEVY
VF9BVVRPU0laSU5HKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQo
RU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lP
TikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09S
X1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdB
VE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJ
VF9QTFVHSU4pICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5BQkxFX1BPSU5URVJfTE9DSykg
JChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BV
QkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVNT1RF
X0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUlVC
QkVSX0JBTkRJTkcpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfU1BFRUNIX1NZ
TlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX09URl9DT05WRVJURVIpICQoRU5BQkxFX1RF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVO
QUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfVVNF
UlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVf
V0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05T
KSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkg
JChFTkFCTEVfSklUKSAkKEVOQUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpICQoRU5B
QkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9X
ZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpp
bmRleCA2ZTgyYmQ4MzkzYzFlNjU2ZTVjODRmMTAzOThkYjE0MjY4Mzc4MmFmLi41MTQxMTUzNzU1
YWM0NTNmNDZjNDdkMzdkNDg0ZGI5Njc1NjdmMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlCkBAIC05OCw2ICs5OCw3IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEggIlRvZ2dsZSBtb250aCB0
eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSAiVG9nZ2xlIHRpbWUgdHlwZSA8aW5wdXQ+IHN1cHBv
cnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9U
WVBFX1dFRUsgIlRvZ2dsZSB3ZWVrIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikK
KyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5UTCAiVG9nZ2xlIEludGwgc3VwcG9y
dCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19BSVJQ
TEFZICJUb2dnbGUgaU9TIGFpcnBsYXkgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcgIlRvZ2dsZSBpT1MgdGV4
dCBhdXRvc2l6aW5nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9KSVQgIkVuYWJsZSBKdXN0SW5UaW1lIGphdmFzY3JpcHQgc3VwcG9ydCIgUFJJ
VkFURSBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA3OWVkMjY2NzVlNGY2MTQ4MDk5OGZiYWZkYTk0NzNkZGMxZjdmN2RhLi5lZTNjNGRiNmRm
NDc5YWJlODVkNjhjYzgzMTFjNzljZTU5NDU1ZWEzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDYtMDEgIEFu
ZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG06IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisKIDIwMTUtMDYtMzAgIEpvbmF0aGFu
IERhdmlzICA8am9uZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkZWQgbXlz
ZWxmIGFzIGEgY29tbWl0dGVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CmluZGV4IDkyYjZjOTE5NWZjMDFmNjI5ZmE3YWZmZGVkN2QxYzJiNTRkYzYzNzcuLjA4N2U2OGMx
MWIwYjQ3MTIzOGI3ZmI4ODJlYzc0OWYxOWZiNzRjNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0KQEAgLTkwLDYgKzkwLDcgQEAgbXkgKAogICAgICRpbnB1dFR5cGVN
b250aFN1cHBvcnQsCiAgICAgJGlucHV0VHlwZVRpbWVTdXBwb3J0LAogICAgICRpbnB1dFR5cGVX
ZWVrU3VwcG9ydCwKKyAgICAkaW50bFN1cHBvcnQsCiAgICAgJGppdFN1cHBvcnQsCiAgICAgJGxl
Z2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0LAogICAgICRsZWdhY3lWZW5kb3JQcmVmaXhTdXBwb3J0
LApAQCAtMjg0LDYgKzI4NSw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAi
aW5wdXQtdHlwZS13ZWVrIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5cGUgV2VlayBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyIsIGRlZmF1bHQgPT4g
MCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVXZWVrU3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4g
ImludGwiLCBkZXNjID0+ICJUb2dnbGUgSW50bCBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW50bFN1cHBvcnQgfSwKKwog
ICAgIHsgb3B0aW9uID0+ICJsZWdhY3ktbm90aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBM
ZWdhY3kgTm90aWZpY2F0aW9ucyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlm
aWNhdGlvbnNTdXBwb3J0IH0sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NDRmYTYyZDM3M2U1ZGJmMjBiMWFiYjg2ZGMw
N2FkMTJiNWRmYjU0Li4zYzg5MmI3OWMwYmZmY2Y3ZmY5ZDBjZGM2NjU2ZGZjZTgwNjA1ZmU1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDYtMDEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRUNNQVNjcmlwdCBJbnRl
cm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBTa2lwIGludGwgdW50aWwgZW5hYmxlZAor
ICAgICAgICAqIGpzL2ludGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9pbnRs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLmpzOiBBZGRlZC4K
KyAgICAgICAgKGdsb2JhbCk6CisKIDIwMTUtMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5lIGVkaXRpbmcvc3R5bGUv
dW5ib2xkLWluLWJvbGQuaHRtbCBvbiBXSzIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMTFmMjk1
Y2UwZGE4MmQ4MGVhZDJhY2JlZjFhMjY0MmE1NjJlMDBhLi5hYzY4NmJmMjY2YjAzYmVhNzExOTFj
ODE1NWJlMWE1ZWZmODEyMDQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUyNiwzICs1MjYsNiBA
QCB3ZWJraXQub3JnL2IvMTQ2MTgyIGVkaXRpbmcvc2VsZWN0aW9uL2xlYWstZG9jdW1lbnQtd2l0
aC1zZWxlY3Rpb24taW5zaWRlLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMTQ2NDM0IGZhc3QvZG9t
L0hUTUxJbWFnZUVsZW1lbnQvc2l6ZXMgWyBTa2lwIF0KIAorIyBJbnRsIGlzIG5vdCBlbmFibGVk
IHlldAoranMvaW50bC5odG1sIFsgU2tpcCBdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2ludGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjI2YWY4NjMzNjUxYjE0MGM4ZjEwYjg5N2E5MDhmMGNhOGNhYTlkNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTcgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBh
cyBkZXNjcmliZWQgaW4gOCBvZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBB
UEkgU3BlY2lmaWNhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
SW50bCBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1MgdHlwZW9mIEludGwgaXMgJ29iamVj
dCcKK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwpIGlzICdbb2JqZWN0
IE9iamVjdF0nCitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihJbnRsKSA9PT0gT2JqZWN0LnBy
b3RvdHlwZSBpcyB0cnVlCitQQVNTIG5ldyBJbnRsIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE9iamVjdCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IEludGwnKS4KK1BB
U1MgSW50bCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnSW50bCgpJywgJ0ludGwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdCkuCitQQVNT
IGRlbGV0ZSBJbnRsOyBpcyB0cnVlCitQQVNTICdJbnRsJyBpbiBnbG9iYWwoKSBpcyBmYWxzZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2ludGwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ODRlYjI1MDQ2OGE4ZjMxNzk4MThiODZmZGM1ZjliOGFkMDk3MmY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pbnRsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9pbnRsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTVhZTY1MTBhNmEzMzE2ZTdjMzI5YWJiZTRkZGNjY2ZkMjZhMDViOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCkBAIC0w
LDAgKzEsMjQgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBv
ZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIDggb2YgdGhlIEVDTUFTY3JpcHQgSW50
ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7CisKKy8vIFRoZSBJbnRsIG9i
amVjdCBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBpbml0aWFsIHZh
bHVlIG9mIHRoZSBJbnRsIHByb3BlcnR5IG9mIHRoZSBnbG9iYWwgb2JqZWN0Lgorc2hvdWxkQmVU
eXBlKCJJbnRsIiwgIk9iamVjdCIpOworc2hvdWxkQmUoInR5cGVvZiBJbnRsIiwgIidvYmplY3Qn
Iik7CitzaG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwpIiwgIidb
b2JqZWN0IE9iamVjdF0nIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tQcm90b3R5cGVdXSBp
bnRlcm5hbCBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QgaXMgdGhlIGJ1aWx0LWluIE9iamVj
dCBwcm90b3R5cGUgb2JqZWN0IHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBT
cGVjaWZpY2F0aW9uLgorc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bCkg
PT09IE9iamVjdC5wcm90b3R5cGUiKTsKKworLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90IGhh
dmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHByb3BlcnR5OyBpdCBpcyBub3QgcG9zc2libGUg
dG8gdXNlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGNvbnN0cnVjdG9yIHdpdGggdGhlIG5ldyBvcGVy
YXRvci4KK3Nob3VsZFRocm93KCJuZXcgSW50bCIsICInVHlwZUVycm9yOiBPYmplY3QgaXMgbm90
IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgXFwnbmV3IEludGxcXCcpJyIpOworCisvLyBUaGUg
SW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ2FsbF1dIGludGVybmFsIHByb3BlcnR5OyBp
dCBpcyBub3QgcG9zc2libGUgdG8gaW52b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9u
Lgorc2hvdWxkVGhyb3coIkludGwoKSIsICInVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gXFwnSW50bCgpXFwnLCBcXCdJbnRsXFwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVj
dCknIik7CisKKy8vIGlzIGRlbGV0YWJsZSwgaW5mZXJyZWQgZnJvbSB1c2Ugb2YgIkluaXRpYWwi
IGluIHNwZWMsIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMKK3ZhciBfX0lu
dGwgPSBJbnRsOworc2hvdWxkQmVUcnVlKCJkZWxldGUgSW50bDsiKTsKKworZnVuY3Rpb24gZ2xv
YmFsKCkgeyByZXR1cm4gdGhpczsgfQorc2hvdWxkQmVGYWxzZSgiJ0ludGwnIGluIGdsb2JhbCgp
Iik7CisKK0ludGwgPSBfX0ludGw7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggZTYwZDgwM2ZiMjQ5ZDlmNTI1ZjQ4NDRhMTdjMWUyMjQyZGJlOTVjOC4uMmZkZThmMzQz
NTMwMjllZGM5YmUyZGRkMmQ1MjlhY2VmMjk0MzQ3YyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA2LTAxICBBbmR5IFZhbldhZ29u
ZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFT
Y3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVudGluZyB0aGUgSW50bCBhcGlzIGJl
aGluZCBFTkFCTEVfSU5UTCBmbGFnLgorICAgICAgICBDcmVhdGUgdGhlIGJhc2UgSW50bCBuYW1l
c3BhY2Ugb2JqZWN0LgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlOiBhZGQgRU5BQkxFX0lOVEwgZmxhZworCiAyMDE1LTA2LTMwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIEVycm9yIHdoZW4gZ3N0
LXBsdWdpbnMtYmFzZSBpcyBtaXNzaW5nIGlzIHRvbyBjb25mdXNpbmcKZGlmZiAtLWdpdCBhL1dl
YktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4
IDBlMGQ0NDhhNjMyYWI5MjY0M2UzNDNlYmM1Mjg2MjE0YzdlN2ZlMmIuLjRkY2JhMWE3ODhhMDRi
ZjU4NTZhZGY0MjFmNmIyMGExYWY2MTA4ZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE1LTA2LTAxICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHM6IGFkZCBFTkFCTEVfSU5UTCBmbGFnCisg
ICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wczogYWRk
IEVOQUJMRV9JTlRMIGZsYWcKKwogMjAxNS0wNi0yOSAgSHl1bmd3b29rIExlZSAgPGh5dW5nd29v
ay5sZWVAbmF2ZXJjb3JwLmNvbT4KIAogICAgICAgICBbV2luXSBBY3RpdmF0ZSBTU0Ugc3VwcG9y
dCBmb3IgMzItYml0IGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwppbmRleCA2NjFiMmIyMTcwNDY4NjIwZTM2
YTI3NWIxMDMzMGQ2MTQzNzM0MGM2Li44MDJkMzFmMjQwNjhjYjlmYTRjMjZkNDAzMjJkODFjYzZh
YTJhZTAzIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVh
dHVyZURlZmluZXMucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3Bz
L0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBAIC00OCw2ICs0OCw3IEBACiAgICAgPEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgLz4KICAgICA8RU5B
QkxFX0lOUFVUX1RZUEVfV0VFSyAvPgorICAgIDxFTkFCTEVfSU5UTD5FTkFCTEVfSU5UTDwvRU5B
QkxFX0lOVEw+CiAgICAgPEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz5FTkFCTEVf
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVM8L0VOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVG
SVhFUz4KICAgICA8RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIC8+CiAgICAgPEVOQUJMRV9M
SU5LX1BSRUZFVENIIC8+CkBAIC05Myw3ICs5NCw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAg
PEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4kKEVOQUJMRV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORyk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNf
UEFUSCk7JChFTkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7
JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7
JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQo
RU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NT
U19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RP
UlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURF
KTskKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklY
RUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hB
TkRMRVIpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7
JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RF
TSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dF
T0xPQ0FUSU9OKTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChF
TkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVU
X1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FX0lOQ09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChF
TkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJM
RV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTsk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChF
TkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxF
TUVOVCk7JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQo
RU5BQkxFX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpOyQoRU5BQkxFX1BS
T1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVO
VF9VVElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTsk
KEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTsk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxF
X1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9M
QVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRT
KTskKEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7
JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9f
VFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7
JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdM
KTskKEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxF
X1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV9DU1BfTkVYVCk7JChF
TkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJM
RV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxF
X0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVN
RU5UKTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChF
TkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9Y
X0RFQ09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NT
X1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1JFR0lPTlMp
OyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVTKTskKEVO
QUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05T
X1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVO
QUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9E
RVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFY
KTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxF
X0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01f
VElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09O
REFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTsk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0lOVEwpOyQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIp
OyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFCTEVfTUlDUk9E
QVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElPTlMp
OyQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5B
QkxFX1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NS
SVBURURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VS
Uyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0Up
OyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFC
TEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19E
T01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NP
TlZFUlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0la
SU5HKTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdf
TU9ERV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMp
OyQoRU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVH
SU9OUyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4K
ICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjg1LDYgKzI4Niwx
MCBAQAogICAgICAgPFZhbHVlPiQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk8L1ZhbHVlPgogICAg
ICAgPEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KICAgICA8
L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0lOVEwiPgorICAg
ICAgPFZhbHVlPiQoRU5BQkxFX0lOVEwpPC9WYWx1ZT4KKyAgICAgIDxFbnZpcm9ubWVudFZhcmlh
YmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CisgICAgPC9CdWlsZE1hY3JvPgogICAgIDxC
dWlsZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyI+CiAg
ICAgICA8VmFsdWU+JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpPC9WYWx1ZT4K
ICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CmRp
ZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmlu
ZXNDYWlyby5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJl
RGVmaW5lc0NhaXJvLnByb3BzCmluZGV4IDZmZTM3N2UwN2EwZTk3OWNjMWY3NGUxMTQ0MTM3ZjFh
Y2ZkNDIwZTcuLjhhYTM2ODkyZjFlMjExY2I4YmMyMTc2ODZkMzkxMWNkYjNhMGFhMmIgMTAwNjQ0
Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0Nh
aXJvLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJl
RGVmaW5lc0NhaXJvLnByb3BzCkBAIC00OCw2ICs0OCw3IEBACiAgICAgPEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIIC8+CiAgICAgPEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgLz4KICAgICA8RU5BQkxF
X0lOUFVUX1RZUEVfV0VFSyAvPgorICAgIDxFTkFCTEVfSU5UTD5FTkFCTEVfSU5UTDwvRU5BQkxF
X0lOVEw+CiAgICAgPEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUz5FTkFCTEVfTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVM8L0VOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhF
Uz4KICAgICA8RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIC8+CiAgICAgPEVOQUJMRV9MSU5L
X1BSRUZFVENIIC8+CkBAIC05Myw3ICs5NCw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0
ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4kKEVOQUJMRV9DU1BfTkVYVCk7JChFTkFCTEVfUFJPTUlTRVMpOyQoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1ND
Uk9MTElORyk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DQU5WQVNfUEFU
SCk7JChFTkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChF
TkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NFVCk7JChF
TkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspOyQoRU5B
QkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19D
T01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNf
TEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVTKTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTsk
KEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQp
OyQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRM
RVIpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMik7JChF
TkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7
JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xP
Q0FUSU9OKTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFC
TEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FX0lOQ09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFC
TEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFC
TEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVO
VCk7JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5B
QkxFX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpOyQoRU5BQkxFX1BST1hJ
TUlUWV9FVkVOVFMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9V
VElMUyk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVO
QUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVO
QUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NR
TF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlP
VVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTsk
KEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChF
TkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJB
Q0spOyQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChF
TkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTsk
KEVOQUJMRV9XRUJWVFRfUkVHSU9OUyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hT
TFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV9DU1BfTkVYVCk7JChFTkFC
TEVfUFJPTUlTRVMpOyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8z
RF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5U
KTskKEVOQUJMRV9DQU5WQVNfUEFUSCk7JChFTkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFC
TEVfQ1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RF
Q09SQVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NI
QURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1JFR0lPTlMpOyQo
RU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVTKTskKEVOQUJM
RV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RS
QU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRB
TElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRB
SUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNU
T1JZX1VQTE9BRCk7JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpOyQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMik7JChFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKTsk
KEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dB
TUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElN
RVJfVEhST1RUTElORyk7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFU
QUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09M
T1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRf
VFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0lOVEwpOyQoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUyk7JChFTkFCTEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQo
RU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFCTEVfTUlDUk9EQVRB
KTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElPTlMpOyQo
RU5BQkxFX1BJQ1RVUkVfU0laRVMpOyQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpOyQoRU5BQkxF
X1FVT1RBKTskKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyk7JChFTkFCTEVfU0NSSVBU
RURfU1BFRUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7
JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVf
U1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01f
T0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfU1ZHX0ZPTlRTKTskKEVOQUJMRV9TVkdfT1RGX0NPTlZF
UlRFUik7JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5H
KTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfVklERU9fVFJBQ0spOyQoRU5BQkxFX1ZJRVdfTU9E
RV9DU1NfTUVESUEpOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQo
RU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9XRUJWVFRfUkVHSU9O
Uyk7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjg1LDYgKzI4NiwxMCBA
QAogICAgICAgPFZhbHVlPiQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk8L1ZhbHVlPgogICAgICAg
PEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KICAgICA8L0J1
aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0lOVEwiPgorICAgICAg
PFZhbHVlPiQoRU5BQkxFX0lOVEwpPC9WYWx1ZT4KKyAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxl
PnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CisgICAgPC9CdWlsZE1hY3JvPgogICAgIDxCdWls
ZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyI+CiAgICAg
ICA8VmFsdWU+JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpPC9WYWx1ZT4KICAg
ICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257013</attachid>
            <date>2015-07-17 19:14:41 -0700</date>
            <delta_ts>2015-07-17 19:22:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90906-20150717201329.patch</filename>
            <type>text/plain</type>
            <size>153788</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTdmYWY5NTk3ODI3NGQ5ODA5NDBlOGI2Yzk1M2NmOTk4ZmJmMmNiLi40Y2RmM2UzZjc0NTRjNjJm
NjNiNGY2MjI5MjhiYjY3MjM4NjRiYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTUtMDctMTMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIEFkZHMgYmFzaWMgdHlwZXMgZm9y
IEVDTUEtNDAyIDJuZCBlZGl0aW9uLCBidXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIGxv
Y2FsZS1hd2FyZSBmZWF0dXJlcyB5ZXQuCisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTQwMi8yLjAvRUNNQS00MDIucGRmCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcg
SW50bCBmaWxlcy4KKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogRW5hYmxlIElOVEwuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQg
SW50bCBmaWxlcy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaDogQWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0
LgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBw
dWJsaWMuCisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5v
dyBwdWJsaWMuCisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50
bENvbGxhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6
c2V0Qm91bmRDb21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUp
OiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJl
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9y
Ojpib3VuZENvbXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxh
dG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBB
ZGRlZCBDb2xsYXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbElu
dGxDb2xsYXRvcik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yp
OiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxh
dG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0
b3JQcm90b3R5cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAu
My4zKQorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6
OkludGxEYXRlVGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAg
ICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxh
Y2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmlu
ZygpLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1h
dCk6IEFkZGVkIERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAo
SlNDOjpjYWxsSW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3Ry
dWN0b3IgKDEyLjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBs
YWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAo
MTIuMy4zKS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmlu
ZyB7fS4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3Jt
YXQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVz
dHJveSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xk
ZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0
cnVjdG9yICgxMS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFk
ZGVkIE51bWJlckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChK
U0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlv
bnMpOiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQg
Q29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDgu
MSkuCisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRv
ckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9i
amVjdDo6ZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmpl
Y3Q6OmRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6
ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDct
MTMgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgogCiAgICAgICAg
IE9iamVjdCBjeWNsZXMgc2hvdWxkIG5vdCBwcmV2ZW50IGFsbG9jYXRpb24gZWxpbWluYXRpb24v
c2lua2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk4MDJmNDY2ZThiZGE3NDY5MGY1Mzg3OTUzYjQ2ZjUzOGZj
MGZhMWYuLmIzYmRmZDljZjc2OWMyYTBiMDdkMjIwMmE3YzRmNDNmYThmMjUxYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNy0xMyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFs
ZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3Ig
RUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwogMjAxNS0wNy0xMyAgTWF0dCBSYWpjYSAgPG1y
YWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgU2Vzc2lvbjogYWRkIHBsdW1iaW5nIGZv
ciBkZWxpdmVyaW5nIHN0YXJ0L2VuZC1vZi1pbnRlcnJ1cHRpb24gZXZlbnRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNzMwZTJmY2E1YWNkMmUyYmI5ZGVlZTViNDdhODI3NjMxNjQ5NGE0NC4uNzVlNWFm
NDI3Yzg3ZjJlYzE1Mzg2NmUxMTRmOTgwY2JiZjA2MTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE1LTA3LTEzICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRl
ckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2Ny
aXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTExICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFz
aWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvciBzaG91
bGQgYmUgYWJsZSB0byBiZSBkb2NrZWQgdG8gdGhlIGJvdHRvbSBvZiBhIG5hcnJvdyB3aW5kb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYjA2OTI3M2EwYTk5ODc0MjYyNzliNmQwNTc5OGQxMGJkNjNkODM0Li45
NjQwNjc1Y2Q3YWEyZDdhMWJmM2JiMDU1YzhlMDk3YzhjYjdiYzhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTUtMDctMTMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOiBFbmFibGVkIElOVEwuCisKIDIwMTUtMDctMTMgIE1hdHQgUmFqY2EgIDxtcmFqY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIE1lZGlhIFNlc3Npb246IGFkZCBwbHVtYmluZyBmb3IgZGVsaXZl
cmluZyBzdGFydC9lbmQtb2YtaW50ZXJydXB0aW9uIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDhhZTg2NjVhODMxY2MwNDMzNzgyNjdlYjgxYzQ4Yjc0NTIxYjcz
N2UuLmY5MTI2OTBlNjdhNmZmYjI1YmNiODQyNTYzZTg3Y2Y3YWRlNGFmMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ3NSw2ICs0NzUsMTUgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAKICAgICBydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwCiAgICAgcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorICAgIHJ1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisgICAg
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCisgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAg
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHAKICAgICBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKICAgICBydW50aW1l
L0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNjE5LDYgKzYyOCwxMiBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVu
dGltZS9EYXRlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisg
ICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxD
b2xsYXRvckZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAorICAgIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50
aW1lL0pTT05PYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZmU1NmJjMGIx
YmZkNjBjNTFhMDU3ZTk1NTRkMTllZDQ4NzRmNGY0Mi4uZDIyMDkyYTdiOWQzYzNlMGZhYTU2ZDg4
M2NjNGEwYTQ0ZDJmZjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzEx
Niw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsK
IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
X21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFC
TEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lv
c19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDY3N2Y0Y2VlNjkzNTYwNDU5ZTgwNzg3YTYwODY1NjgyMmE1ZjQ3NWEuLmU0NjU3NzdhNzliZWQ1
NjNkMjY4N2ZjZDI4Y2ZkOWFkYmIzOWRmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC00MSw2ICs0MSwxMiBAQCBhbGwgOiBcCiAgICAgRGF0ZUNvbnN0
cnVjdG9yLmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKICAgICBFcnJvclByb3Rv
dHlwZS5sdXQuaCBcCisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAorICAgIElu
dGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggXAorICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisg
ICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIFwKICAg
ICBKU09OT2JqZWN0Lmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3ZThhMjkyNDA1ZjBhYzlmZjgzOGNjOWE3YjI4ZmNj
NzMwMTgzNzIuLjExOTNiZWQyMjI0Y2I5ZmY1NGNmMGJmZGE2Y2E1OGI3MzUyZGIyZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTcyLDEzICsxMTcyLDM3IEBACiAJCTlFNzI5
NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVu
ZGxlUGF0aC5oICovOyB9OwogCQk5RUE1QzdBMTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0
aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5
NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovOyB9OwogCQk5RUE1QzdBMjE5
MEYwODg3MDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8q
IEluaXRpYWxpemVMTFZNTWFjLmNwcCAqLzsgfTsKKwkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZD
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUExMjU4NDZGMUI0NUEz
NjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3
RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUExMkJCRkYy
MUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9i
amVjdC5oICovOyB9OwogCQlBMTJCQkZGNDFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJCQkZG
MzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi87IH07CisJCUExNTg3RDZEMUI0
REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdC5jcHAgKi87IH07CisJCUExNTg3RDZFMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXQuaCAqLzsgfTsKKwkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CisJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi87IH07CisJCUExNTg3RDcyMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTE1ODdENzUxQjREQzFD
NjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENzMxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlB
MTU4N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdE
NzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAq
LzsgfTsKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0Iy
MTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJC
NDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4
cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUExODE5M0UzMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODE5M0Ux
MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsK
KwkJQTE4MTkzRTQxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODE5M0Uy
MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi87IH07CiAJ
CUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNC
MDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBB
Uk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFCOUUyMzkxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzMzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENv
bGxhdG9yLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0ExQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
OUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovOyB9OworCQlBMUI5RTIz
QjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzUxQjRFMEQ2NzAw
QkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0Mx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNjFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFCOUUyM0QxQjRFMEQ2
NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5oICovOyB9OworCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAg
Ki87IH07CisJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGNzFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovOyB9OworCQlBMUQ3OTJGRTFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY4MUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUQ3
OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGOTFCNDM4
NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CisJCUEx
RDc5MzAwMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkZBMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJ
QTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkZCMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi87IH07CiAJCUE1
MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYw
MDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUExODhF
MEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgKi87IH07CkBAIC0yOTQ3LDExICsyOTcxLDM1IEBACiAJCTlFNzI5NDA5
MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUGF0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVuZGxlUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5pdGlhbGl6ZUxMVk1N
YWMuY3BwOyBwYXRoID0gbGx2bS9Jbml0aWFsaXplTExWTU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMkJCRkYx
MUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEy
QkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExNTg3RDY3MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9y
bWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENjgxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1
ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDZCMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcx
MkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBl
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzMzFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEludGxDb2xsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
QjlFMjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExQjlFMjM1MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM2MUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxDb2xsYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
QjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxOdW1iZXJGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJG
NzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkExQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE0MTg4RTBGQUYwMDExMEYx
NCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0Niw2ICs0Mjk0LDEyIEBACiAJ
CQkJQTUzMjQzODQxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hl
cnMuaCAqLywKIAkJCQlBNTMyNDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9j
b2xPYmplY3RzLmNwcCAqLywKIAkJCQlBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVj
dG9yUHJvdG9jb2xPYmplY3RzLmggKi8sCisJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8q
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExODE5M0UyMUI0RTBDREIw
MEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQTE1ODdENzMx
QjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmggKi8sCisJCQkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdG
NkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBN0Q4MDFBNjE4
ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovLAogCQkJCUE3RDgwMUE3MTg4MEQ2
QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovLAogCQkJCUJDODdDREI4MTA3MTJBQ0EwMDA2
MTRDRiAvKiBKU09OT2JqZWN0Lmx1dC5oICovLApAQCAtNDQ3Miw2ICs0NTI2LDI0IEBACiAJCQkJ
QTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLywK
IAkJCQlCQzlCQjk1QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJQkMxMTY2N0EwRTE5OUMwNTAwODA2NkREIC8qIEludGVybmFsRnVuY3Rpb24uaCAqLywK
KwkJCQlBMUI5RTIzMzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCAqLywKKwkJ
CQlBMUI5RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi8sCisJCQkJQTFC
OUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLywK
KwkJCQlBMUI5RTIzNjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQlBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcCAqLywKKwkJCQlBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
UHJvdG90eXBlLmggKi8sCisJCQkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgKi8sCisJCQkJQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdC5oICovLAorCQkJCUExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTE1ODdENkExQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTE1ODdE
NkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8s
CisJCQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oICovLAorCQkJCUExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0LmNwcCAqLywKKwkJCQlBMUQ3OTJGNzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdC5oICovLAorCQkJCUExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMUQ3OTJGQTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTFENzkyRkIx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLywKIAkJCQlB
MTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8sCiAJCQkJQTEyQkJG
RjExQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLywKIAkJCQk4NkJGNjQyQTE0OERC
MkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCkBAIC01NjUyLDYgKzU3MjQsNyBAQAogCQkJ
CTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdl
dHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzRGNEI2RjUxQTA1Qzk4NDAwNUNBQjc2
IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKKwkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4
MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5
NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFN0JBNjEwMUEx
QTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTcwMSw2
ICs1Nzc0LDcgQEAKIAkJCQkwRjI0RTU0MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNU
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8q
IEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1RDJFNjY1MTk1RTE3NDAwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzEwLDYgKzU3ODQsNyBAQAogCQkJCTBGQjdGMzk3
MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdG
Mzk4MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTFCOUUyM0ExQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2Rl
QmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzIzMEVE
MUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC01
NzkwLDExICs1ODY1LDEzIEBACiAJCQkJQTVFQTcwRTgxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcw
NEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFCOUUyM0MxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYy
MDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGMDU0RkExQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6
ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0Fk
amFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVE
QiAvKiBERkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzc4MTBDMTc5OUVBMkUw
MDgxNzUzMyAvKiBERkdBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFCOUUyM0UxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1QzNBMUE2MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgz
QjY4NyAvKiBERkdBcml0aE1vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNTg1OSw2ICs1OTM2LDcg
QEAKIAkJCQk4NkVDOURDQzEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3OEE5Nzc5MTc5NzM4QjgwMDlERjc0NCAvKiBERkdKSVRGaW5hbGl6
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzk3RjQwMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdK
dW1wUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMjU4NDZGMUI0NUEzNjAwMEND
N0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTczQTUzNUIxNzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4
IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTg4LDYgKzYwNjYsNyBAQAog
CQkJCTBGNkIxQ0I2MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOEYyQjk2MTcyRTA0QTMwMDdEQkRBNSAvKiBGVExMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkNFRkFFMDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3
QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAq
LywKQEAgLTYwNTUsNiArNjEzNCw3IEBACiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8q
IEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0
NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMTU4N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0Iy
IC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAw
NDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFDQzE4
MDVFNzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MTA5LDYgKzYxODksNyBAQAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVRE
aXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxRjE4MTI0QUNF
MDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEQxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9w
ZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAv
KiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjA5LDYgKzYyOTAsNyBAQAog
CQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDREIxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURl
ZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0EgLyog
SlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTgxOTNFNDFCNEUwQ0RC
MDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYyNTUzRDIxNjEzNkUxQTAwOUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWluUHRyLmggaW4g
SGVhZGVycyAqLywKQEAgLTYyMjAsNiArNjMwMiw3IEBACiAJCQkJQkMxOEM0NUUwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5ODdBQjYw
MDI5OURCMiAvKiBKU1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0Mjcw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q3
NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyog
SlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI4MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU1N0cmluZ1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC02MzIyLDYgKzY0MDUsNyBA
QAogCQkJCUJDMDJFOTExMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkxMzBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZl
RXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjYzMThCRTk5NTAwMDZD
RUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJ
QTE4MTkzRTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVDb25z
dHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAv
KiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzRjBFMTZG
NUNEMDBCMzQ0NjAgLyogTm9kZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ0NSw2ICs2NTI5LDcg
QEAKIAkJCQlBNzI5OURBNjE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8q
IFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjhC
REVCMUFENENGNzEwMERGRTg4NCAvKiBJbmZlcnJlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjcwNTE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtNjUxOSw2ICs2NjA0LDcgQEAKIAkJCQkwRjVGMDhDRjE0NkM3
NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIy
IC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAw
MTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUM1RTVGMThF
MzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY1
NDYsNiArNjYzMiw3IEBACiAJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFy
cmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAx
IC8qIFdyaXRlQmFycmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQw
NDNCRjUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBMTU4N0Q3MjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4NDNCMTAgLyog
eHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQTFCRkExQTlFQ0I3RDAwMERFMDFBIC8qIERG
R1B1dFN0YWNrU2lua2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTcxMjgsNiArNzIxNSw3
IEBACiAJCQkJMEZFQTBBMzExNzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1vbkRhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTcxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0
aW9uS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDE5MTdDRkU3NTUwMEIxNDREMyAv
KiBERkdDb21waWxhdGlvbk1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyM0IxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNTE3QTBC
OENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTcxNzEsNiArNzI1OSw3IEBACiAJCQkJQTdEODlDRkIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYw
RjE5OTE2QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTc2N0I1QjUxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVh
dGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjNEMUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRD
NEQxNTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjBGMTlDMTZCNzJBMDMwMDVERjk1QiAvKiBERkdOb2RlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNzMzNCw2ICs3NDIzLDcgQEAKIAkJCQkyQUY3MzgyQzE4QkJCRjky
MDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZE
MDA4MTE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NTMyNDM4NzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTcwOUZCODY5MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzODkxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03MzU3LDYgKzc0NDcsNyBAQAogCQkJCUJDREQ1MUVCMEZCOERGNzQwMDRBOEJEQyAvKiBKSVRP
cGNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAv
KiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2RTg0NUExOTAzMEJF
RjAwNTYyNzQxIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjRFNTRDMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0MxRThFNDExMkU3MkVGMDBB
MzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0
ODQsNiArNzU3NSw3IEBACiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JE
NUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VD
RjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTFENzkzMDAxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMx
NzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1M0NF
MDg1MThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNzU2Myw2ICs3NjU1LDcgQEAKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFERkEyNjMxOEVGMzU0MDAw
NEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1
RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBMUQ3OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE1QkExNUVFMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NTAxN0VFMjc0OTAwQUJCMjE3IC8qIFJl
cGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTcwLDYgKzc2NjMsNyBAQAogCQkJCTBGNzcw
MDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3MEVDMEVDNjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyMzkxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2NzE4OUFGRTlD
MDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQw
MDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYwNDM5NkQxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC03NjE2LDYgKzc3MTAsOCBAQAogCQkJCTBGQTJDMTdCMTdEN0NG
ODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcz
ODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjJCNjcwNzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE1ODdENzExQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjJCNjcwQTE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTJDOTUyQjkxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IDQxYjk0ZjFiZjQ3YmZjNjZkODc2NDUwYzAxMzAxZTU1MjFm
Zjk1NmQuLjEyMzJlYTc1NjY3MTQ3ZDgzNTBiYmViYjlmMzcyNmRmMGJjNWM4YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
MzMsNyArMzMsOSBAQAogICAgIG1hY3JvKEFycmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRF
U19QRVJfRUxFTUVOVCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKKyAgICBtYWNybyhDb2xsYXRv
cikgXAogICAgIG1hY3JvKERhdGUpIFwKKyAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAogICAg
IG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rp
b24pIFwKQEAgLTQ1LDYgKzQ3LDcgQEAKICAgICBtYWNybyhNYXRoKSBcCiAgICAgbWFjcm8oTmFO
KSBcCiAgICAgbWFjcm8oTnVtYmVyKSBcCisgICAgbWFjcm8oTnVtYmVyRm9ybWF0KSBcCiAgICAg
bWFjcm8oT2JqZWN0KSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFJhbmdlRXJy
b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwCmluZGV4IGQ2MzI5ZmRmMWIwMjUwZDc4MjRjOGM4YmQ3MGRkNjg3MDQ3MmI0ZmMuLmVl
NjU2YTMwOTc0ZTNlYzVkYjEwNGYxNmM1MzRkNDI2YjJiZTg1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTMsNyArNTMs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogbmFtZXNwYWNlIEpTQyB7CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCmluZGV4IDA1NGY1NzFkNTc5ZThjZTRmMzRi
NTQwOTE3YjhkMDI4YjUwZGZiOWIuLmNkYWM5N2QzMWJhMzZhOWMyMmVhYzAyNDhhZmM2ZjUyMTJi
Zjc5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oCkBAIC01OSw2ICs1OSw4IEBAIHByaXZhdGU6CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RE
YXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRGF0ZUNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MTA4ZmMx
ODU5OGQzZTJjN2FkODllMGNmMWY4OGQ0ZTVhMTFlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0wLDAgKzEsMTIy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNy
YWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW50bENvbGxhdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvcjo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0
b3IpIH07CisKK0ludGxDb2xsYXRvciogSW50bENvbGxhdG9yOjpjcmVhdGUoVk0mIHZtLCBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bENvbGxhdG9yKiBm
b3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXAp
KSBJbnRsQ29sbGF0b3Iodm0sIGNvbnN0cnVjdG9yLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKKyAg
ICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitT
dHJ1Y3R1cmUqIEludGxDb2xsYXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsQ29sbGF0b3I6Oklu
dGxDb2xsYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVj
dGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxDb2xsYXRvcjo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bENvbGxhdG9yKj4oY2Vs
bCktPkludGxDb2xsYXRvcjo6fkludGxDb2xsYXRvcigpOworfQorCit2b2lkIEludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEludGxDb2xsYXRvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRDb21wYXJlKTsKK30KKwordm9pZCBJbnRs
Q29sbGF0b3I6OnNldEJvdW5kQ29tcGFyZShWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0
KQoreworICAgIG1fYm91bmRDb21wYXJlLnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy40IENvbGxhdG9yIENvbXBhcmUgRnVuY3Rpb25zIChF
Q01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoZSB0aGlzIHZhbHVlLgor
ICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKworICAgIC8vIDIuIEFzc2VydDogVHlwZShjb2xsYXRvcikg
aXMgT2JqZWN0IGFuZCBjb2xsYXRvciBoYXMgYW4gW1tpbml0aWFsaXplZENvbGxhdG9yXV0gaW50
ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorICAgIGlmICghY29sbGF0b3IpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAg
Ly8gMy4gSWYgeCBpcyBub3QgcHJvdmlkZWQsIGxldCB4IGJlIHVuZGVmaW5lZC4KKyAgICAvLyA0
LiBJZiB5IGlzIG5vdCBwcm92aWRlZCwgbGV0IHkgYmUgdW5kZWZpbmVkLgorICAgIC8vIDUuIExl
dCBYIGJlIFRvU3RyaW5nKHgpLgorICAgIEpTU3RyaW5nKiBhID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyk7CisgICAgLy8gNi4gUmV0dXJuSWZBYnJ1cHQoWCkuCisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworCisgICAgLy8gNy4gTGV0IFkgYmUgVG9TdHJpbmcoeSkuCisgICAgSlNTdHJp
bmcqIGIgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKTsKKyAgICAvLyA4LiBSZXR1
cm5JZkFicnVwdChZKS4KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA5LiBSZXR1cm4g
Q29tcGFyZVN0cmluZ3MoY29sbGF0b3IsIFgsIFkpLgorCisgICAgLy8gMTAuMy40IENvbXBhcmVT
dHJpbmdzIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQorICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgQ29tcGFyZVN0cmluZ3MuCisKKyAgICAvLyBSZXR1cm4gc2ltcGxlIGNoZWNrIHVu
dGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoY29kZVBvaW50Q29tcGFyZShhLT52YWx1ZShleGVjKS5pbXBsKCksIGItPnZhbHVlKGV4
ZWMpLmltcGwoKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmYyMjUxNDk0MWEyMTE4NjNmOWMyODQyZmMxNzBkNjFiY2E0NjEwMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50
bENvbGxhdG9yX2gKKyNkZWZpbmUgSW50bENvbGxhdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQor
CisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwor
CitjbGFzcyBJbnRsQ29sbGF0b3IgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRp
YyBJbnRsQ29sbGF0b3IqIGNyZWF0ZShWTSYsIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRDb21wYXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZENvbXBhcmUuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldEJvdW5kQ29tcGFyZShWTSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0
ZWQ6CisgICAgSW50bENvbGxhdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRl
OgorICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJlOworfTsK
KyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0NvbXBh
cmUoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY1YmVjYzQwYTFkYzhhNTRjZTIwNmQ4OGU4ZDQwZjczNTQ4M2MyOGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgi
CisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50
bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlNsb3RW
aXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3Rh
dGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJmNv
bGxhdG9yQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3JD
b25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5s
dXQuaAorQGJlZ2luIGNvbGxhdG9yQ29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVz
T2YgICAgICAgICAgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0ludGxDb2xs
YXRvckNvbnN0cnVjdG9yKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90
b3R5cGUsIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUpCit7CisgICAgSW50bENvbGxhdG9y
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bENvbGxhdG9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcih2
bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGNvbGxh
dG9yUHJvdG90eXBlLCBjb2xsYXRvclN0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK0ludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3Ry
dWN0dXJlKQoreworfQorCit2b2lkIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUsIFN0
cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIEFTQ0lJTGl0ZXJhbCgiQ29sbGF0b3IiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgY29sbGF0b3JQcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fY29sbGF0b3JTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBjb2xsYXRvclN0cnVjdHVyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICAvLyAxMC4xLjIgSW50bC5Db2xsYXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00
MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJn
ZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBO
ZXdUYXJnZXQuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGludm9rZWQgd2hlbiBjYWxs
ZWQgYXMgY29uc3RydWN0b3Igc28gbmV3VGFyZ2V0IGlzIHRoZSBDb2xsYXRvciBmdW5jdGlvbi4K
KworICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3Rv
cihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZt
LCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisg
ICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29sbGF0b3IpLgorICAgIGlmICghY29sbGF0b3IpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0
LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3Io
Y29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29sbGF0b3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRs
Q29sbGF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9y
IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3
VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9u
IG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBGSVhNRTog
U3VwcG9ydCBOZXdUYXJnZXQgaW4gc3VwZXIoKSBjYWxscy4KKworICAgIC8vIDIuIExldCBjb2xs
YXRvciBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRv
clByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9y
Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1
cHQoY29sbGF0b3IpLgorICAgIGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZUNv
bGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9w
dGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3IpOworfQorCitD
b25zdHJ1Y3RUeXBlIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENv
bnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENhbGxUeXBl
SG9zdDsKK30KKworYm9vbCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5j
dGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxl
LCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ly8gMTAuMi4yIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0
aW9uc10pIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBi
ZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0
ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpOworCisgICAgLy8gMi4gUmV0dXJu
SWZBYnJ1cHQocmVxdWVzdGVkTG9jYWxlcykuCisgICAgLy8gaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgIC8vICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoJUNvbGxhdG9yJS5bW2F2YWlsYWJs
ZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3Rl
ZCwgb3B0aW9ucykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5
IGltcGxlbWVudGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBK
U0FycmF5KiBzdXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2Nh
bGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMp
OworfQorICAgIAordm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRhYTk4ZjJmYWEyNDc5Yjg0Zjc5YjcxMDc1ZjVlOTg3ZmFlZTc2ZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxDb2xsYXRvcjsKK2NsYXNz
IEludGxDb2xsYXRvclByb3RvdHlwZTsKKworY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3Ig
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5h
bEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisK
KyAgICBzdGF0aWMgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSosIEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2xsYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0
cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAg
CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKK307CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNT
dGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4
ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDIxMjMyM2M0YTNlODk5MmJmYjBiNDkzOTFmOWVjMGQxYmYxODNiZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsQ29s
bGF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBh
cmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
Q29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmSW50bENvbGxhdG9yOjpzX2luZm8sICZjb2xsYXRvclByb3RvdHlwZVRhYmxlLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSkgfTsKKworLyogU291cmNl
IGZvciBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBjb2xsYXRvclByb3RvdHlw
ZVRhYmxlCisgIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsQ29s
bGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitA
ZW5kCisqLworCitJbnRsQ29sbGF0b3JQcm90b3R5cGUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sK
KyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEludGxDb2xsYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEludGxDb2xsYXRvclByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsQ29sbGF0b3JQcm90b3R5cGU6OkludGxDb2xsYXRvclByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50bENvbGxhdG9yKHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCiti
b29sIEludGxDb2xsYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmpl
Y3Q+KGV4ZWMsIGNvbGxhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JQcm90
b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0
b3Igb2JqZWN0LgorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PElu
dGxDb2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNvbGxhdG9yKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAg
IEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlID0gY29sbGF0b3ItPmJvdW5kQ29tcGFyZSgp
OworICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gaXMgdW5kZWZpbmVkLAor
ICAgIGlmICghYm91bmRDb21wYXJlKSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0
aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KKyAgICAgICAgLy8gYi4gVGhlIHZhbHVl
IG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAyLgorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgQVNDSUlM
aXRlcmFsKCJjb21wYXJlIiksIEludGxDb2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7
CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJvdW5k
QXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKKworICAgICAgICAvLyBjLiBMZXQgYmMgYmUgQm91bmRGdW5jdGlvbkNy
ZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCisgICAgICAgIGJvdW5kQ29tcGFyZSA9IEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3Is
IGJvdW5kQXJncywgMiwgQVNDSUlMaXRlcmFsKCJjb21wYXJlIikpOworICAgICAgICAvLyBkLiBT
ZXQgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSB0byBiYy4KKyAgICAgICAgY29sbGF0b3ItPnNl
dEJvdW5kQ29tcGFyZSh2bSwgYm91bmRDb21wYXJlKTsKKyAgICB9CisgICAgLy8gMy4gUmV0dXJu
IGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShi
b3VuZENvbXBhcmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xs
YXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNN
QS00MDIgMi4wKQorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PElu
dGxDb2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNvbGxhdG9yKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAg
IC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFu
ZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVy
YWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoZSB2YWx1
ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMgQ29sbGF0b3Igb2Jq
ZWN0IChzZWUgMTAuNCk6IGxvY2FsZSwgdXNhZ2UsIHNlbnNpdGl2aXR5LCBpZ25vcmVQdW5jdHVh
dGlvbiwgY29sbGF0aW9uLCBhcyB3ZWxsIGFzIHRob3NlIHByb3BlcnRpZXMgc2hvd24gaW4gVGFi
bGUgMSB3aG9zZSBrZXlzIGFyZSBpbmNsdWRlZCBpbiB0aGUgJUNvbGxhdG9yJVtbcmVsZXZhbnRF
eHRlbnNpb25LZXlzXV0gaW50ZXJuYWwgc2xvdCBvZiB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gb2Jq
ZWN0IHRoYXQgaXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgSW50bC5Db2xsYXRvci4KKworICAgIEpT
T2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKKyAgICAvLyBG
SVhNRTogUG9wdWxhdGUgb2JqZWN0IGZyb20gaW50ZXJuYWwgc2xvdHMuCisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODE2NDI2NzllOWY1MTIx
NDVjZGY3ZTAyY2NhZjQ2OTdmZWI3Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFm
dGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JQcm90b3R5cGVf
aAorI2RlZmluZSBJbnRsQ29sbGF0b3JQcm90b3R5cGVfaAorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlIDogcHVibGljIEludGxD
b2xsYXRvciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRsQ29sbGF0b3IgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5
cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlm
IC8vIEludGxDb2xsYXRvclByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODYyOGZiZTg2
NTY1Mzc4ZGZkZjNmN2UxZTkzYTRjMWZlZDI1MjJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMCwwICsx
LDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNs
dWRlICJEYXRlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50bERhdGVUaW1lRm9ybWF0KSB9OworCitJbnRsRGF0ZVRpbWVGb3JtYXQq
IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFw
KSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+ZGF0ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmUoKSk7CisgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZv
cm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworSW50bERhdGVUaW1lRm9ybWF0OjpJbnRsRGF0ZVRpbWVGb3JtYXQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhp
bmZvKCkpKTsKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQoreworICAgIHN0YXRpY19jYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGNlbGwpLT5JbnRs
RGF0ZVRpbWVGb3JtYXQ6On5JbnRsRGF0ZVRpbWVGb3JtYXQoKTsKK30KKwordm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRm9y
bWF0KTsKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KFZNJiB2
bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQpCit7CisgICAgbV9ib3VuZEZvcm1hdC5zZXQodm0s
IHRoaXMsIGZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAv
LyAxMi4zLjQgRGF0ZVRpbWUgRm9ybWF0IEZ1bmN0aW9ucyAoRUNNQS00MDIgMi4wKQorICAgIC8v
IDEuIExldCBkdGYgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBm
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKKyAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoZHRmKSBpcyBPYmplY3QgYW5kIGR0ZiBoYXMg
YW4gW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1
ZSBpcyB0cnVlLgorICAgIGlmICghZm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIEpTVmFsdWUgZGF0ZSA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIGRvdWJsZSB2YWx1ZTsKKworICAgIC8vIDMuIElmIGRhdGUgaXMgbm90
IHByb3ZpZGVkIG9yIGlzIHVuZGVmaW5lZCwgdGhlbgorICAgIGlmIChkYXRlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgLy8gYS4gTGV0IHggYmUgJURhdGVfbm93JSgpLgorICAgICAgICB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShkYXRlTm93KGV4ZWMpKS50b051bWJlcihleGVjKTsKKyAgICAv
LyA0LiBFbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gYS4gTGV0IHggYmUgVG9OdW1iZXIo
ZGF0ZSkuCisgICAgICAgIHZhbHVlID0gZGF0ZS50b051bWJlcihleGVjKTsKKyAgICAgICAgLy8g
Yi4gUmV0dXJuSWZBYnJ1cHQoeCkuCisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
fQorCisgICAgLy8gNS4gUmV0dXJuIEZvcm1hdERhdGVUaW1lKGR0ZiwgeCkuCisKKyAgICAvLyAx
Mi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisK
KyAgICAvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIsIHRoZW4gdGhyb3cgYSBSYW5n
ZUVycm9yIGV4Y2VwdGlvbi4KKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihleGVjLCBTdHJpbmcoImRh
dGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdC5mb3JtYXQoKSIpKSk7CisK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50IDIgLSA5CisKKyAgICAvLyBSZXR1cm4gbmV3IERhdGUo
dmFsdWUpLnRvU3RyaW5nKCkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIERhdGVJbnN0YW5jZSogZCA9IERhdGVJbnN0
YW5jZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVTdHJ1Y3R1cmUoKSwgdmFsdWUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShkKS50b1N0cmluZyhleGVjKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdkYWVkMTM4ZmIwOGRjZmEzYmU2N2QzN2M4M2E0N2RiNGFhYmNiZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElu
dGxEYXRlVGltZUZvcm1hdF9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdF9oCisKKyNpZiBF
TkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNz
IEpTQm91bmRGdW5jdGlvbjsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0IDogcHVibGljIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0KiBjcmVhdGUoVk0m
LCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQo
Vk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJvdGVjdGVkOgorICAgIEludGxEYXRlVGltZUZv
cm1hdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU0JvdW5k
RnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Cit9OworICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0YXRlKik7
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRp
ZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4ZDgxOGFiODRjMmFjN2M5MTQyMmRkMTI2NjY3ZTNlMjQ3MjNlZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgi
CisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
Ikxvb2t1cC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5j
bHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJmRhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZQor
ICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKK0BlbmQKKyovCisKK0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFN0
cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUsIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiRGF0ZVRpbWVGb3JtYXQiKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
ZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwor
ICAgIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBkYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4xLjIgSW50
bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQor
ICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhl
IGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQu
CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGludm9rZWQgd2hlbiBjYWxsZWQgYXMgY29u
c3RydWN0b3Igc28gbmV3VGFyZ2V0IGlzIHRoZSBEYXRlVGltZUZvcm1hdCBmdW5jdGlvbi4KKwor
ICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1
Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IElu
dGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQo
ZGF0ZVRpbWVGb3JtYXQpLgorICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplRGF0ZVRpbWVG
b3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11d
KSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gRklYTUU6IFN1cHBvcnQgTmV3VGFyZ2V0IGluIHN1
cGVyKCkgY2FsbHMuCisKKyAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlD
cmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUl
KS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0
ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMu
IFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBpZiAoIWRhdGVUaW1lRm9ybWF0
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAg
Ly8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9j
YWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0KTsKK30KKworQ29u
c3RydWN0VHlwZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0OworICAg
IHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
K3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bERhdGVUaW1lRm9ybWF0
OworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4
ZWMsIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1
bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEyLjIuMiBJ
bnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNd
KSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJURh
dGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICAvLyBGSVhNRTogYXZhaWxh
YmxlID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmdldEF2YWlsYWJsZUxvY2FsZXMo
KQorCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxl
TGlzdChsb2NhbGVzKS4KKyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9j
YWxlTGlzdChsb2NhbGVzKQorCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVl
c3RlZCwgb3B0aW9ucykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Bl
cmx5IGltcGxlbWVudGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICBKU0FycmF5KiBzdXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRM
b2NhbGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2Fs
ZXMpOworfQorICAgIAordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVU
aW1lRm9ybWF0U3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmMDQz
YTdlNzBhNDJmZmVhZmYyZDhkYmI1NjBlYmExYzMzYWNhNTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdDsK
K2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKKworY2xhc3MgSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSos
IFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBT
dHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSop
OworCitwcml2YXRlOgorICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgCisg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKK307
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9y
bWF0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERh
dGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI2NDcyZDBhMzNmYTY0
MjkxMDAyNmIyOWY3OTY4YTljMWY3NzA0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0
aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJ
TlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
Kik7CisKK30KKworI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5m
bywgJmRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFi
bGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJG
b3JtYXQgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0
aW9uIDAKK0BlbmQKKyovCisKK0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlPih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZSk7CisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGxE
YXRlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBkYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMgRGF0ZVRp
bWVGb3JtYXQgb2JqZWN0LgorICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRmID0ganNEeW5hbWlj
Q2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgLy8gMi4g
UmV0dXJuSWZBYnJ1cHQoZHRmKS4KKyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgCisgICAgSlNCb3VuZEZ1bmN0
aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKKyAgICAvLyAzLiBJZiB0aGUg
W1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmpl
Y3QgaXMgdW5kZWZpbmVkLAorICAgIGlmICghYm91bmRGb3JtYXQpIHsKKyAgICAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBu
ZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgorICAgICAg
ICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG
4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQorICAgICAgICBKU0Z1
bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpT
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCks
IDApOworICAgICAgICBpZiAoIWJvdW5kQXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgCisgICAgICAg
IC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4K
KyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZv
cm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGR0Zi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCisg
ICAgICAgIGR0Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9CisgICAg
Ly8gNC4gUmV0dXJuIGR0Zi5bW2JvdW5kRm9ybWF0XV0uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYg
PSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjKSk7CisKKyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qg
d2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVk
IGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcg
cHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBv
ZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCAoc2VlIDEyLjQpOiBsb2NhbGUsIGNhbGVuZGFy
LCBudW1iZXJpbmdTeXN0ZW0sIHRpbWVab25lLCBob3VyMTIsIHdlZWtkYXksIGVyYSwgeWVhciwg
bW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGFuZCB0aW1lWm9uZU5hbWUuIFByb3Bl
cnRpZXMgd2hvc2UgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90cyBhcmUgbm90IHByZXNlbnQg
YXJlIG5vdCBhc3NpZ25lZC4KKyAgICAvLyBOb3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIEVD
TUFTY3JpcHQgMjAxNSBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEksIHRoZSB0aW1lWm9uZSBwcm9w
ZXJ0eSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHRpbWUgem9uZSBpZiBubyB0aW1l
Wm9uZSBwcm9wZXJ0eSB3YXMgcHJvdmlkZWQgaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHByb3ZpZGVk
IHRvIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yLiBUaGUgcHJldmlvdXMgdmVy
c2lvbiBsZWZ0IHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB1bmRlZmluZWQgaW4gdGhpcyBjYXNlLgor
CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwor
ICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEyZmQ1ZTM0ZWE3OTU4NmU0Nzg5NmZhZmZjNDRlNWU2ZmE2MTU5Y2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9oCisjZGVmaW5lIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZV9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50bERhdGVUaW1l
Rm9ybWF0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxEYXRlVGltZUZvcm1hdCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgor
ICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM5ZGM1YjE5ZWE0OGVjYjRhNGFlMzE3OTBlMzA5ZWI0YWM3
NmFiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgor
CisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0KSB9Owor
CitJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxOdW1iZXJG
b3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3Jt
YXQ+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+bnVtYmVyRm9y
bWF0U3RydWN0dXJlKCkpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJl
dHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCitJbnRsTnVtYmVyRm9ybWF0OjpJbnRsTnVtYmVyRm9ybWF0KFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGlu
Zm8oKSkpOworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQoreworICAgIHN0YXRpY19jYXN0PEludGxOdW1iZXJGb3JtYXQqPihjZWxsKS0+SW50bE51bWJl
ckZvcm1hdDo6fkludGxOdW1iZXJGb3JtYXQoKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSW50bE51bWJlckZvcm1hdCogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKK30KKwordm9p
ZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlv
biogZm9ybWF0KQoreworICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9y
bWF0TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMS4zLjQgRm9ybWF0IE51bWJl
ciBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgbmYgYmUgdGhlIHRoaXMg
dmFsdWUuCisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRs
TnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlw
ZShuZikgaXMgT2JqZWN0IGFuZCBuZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1d
IGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWZvcm1hdCkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAg
ICAvLyAzLiBJZiB2YWx1ZSBpcyBub3QgcHJvdmlkZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQu
CisgICAgLy8gNC4gTGV0IHggYmUgVG9OdW1iZXIodmFsdWUpLgorICAgIGRvdWJsZSB2YWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpOworICAgIC8vIDUuIFJldHVybklmQWJy
dXB0KHgpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDYuIFJldHVybiBGb3JtYXRO
dW1iZXIobmYsIHgpLgorICAgIAorICAgIC8vIDExLjMuNCBGb3JtYXROdW1iZXIgYWJzdHJhY3Qg
b3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBGb3JtYXRO
dW1iZXIuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlKS50b1N0
cmluZyhleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2MyNTM4ZjliZmJhMzBlNzQzODIxYjJmMGQxODFlNjM4NzJhMTIw
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEludGxOdW1iZXJGb3JtYXRfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0X2gKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2Ns
YXNzIEpTQm91bmRGdW5jdGlvbjsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJs
ZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXQqIGNyZWF0ZShWTSYs
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0m
LCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJvdGVjdGVkOgorICAgIEludGxOdW1iZXJGb3JtYXQo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0
aW9uPiBtX2JvdW5kRm9ybWF0OworfTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKik7CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRs
TnVtYmVyRm9ybWF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZDgy
NTA3YmVkYWE1Yzc2M2I5NjVkMzFjNzlkMDNmZGZhNmNiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCAmbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JU
YWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCitAZW5kCisqLworCitJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0
dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIG51
bWJlckZvcm1hdFByb3RvdHlwZSwgbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgi
TnVtYmVyRm9ybWF0IikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERv
bnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAo
RUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBu
ZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rhcmdl
dCBiZSBOZXdUYXJnZXQuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGludm9rZWQgd2hl
biBjYWxsZWQgYXMgY29uc3RydWN0b3Igc28gbmV3VGFyZ2V0IGlzIHRoZSBOdW1iZXJGb3JtYXQg
ZnVuY3Rpb24uCisKKyAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRl
RnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0
ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJldHVybklmQWJydXB0
KG51bWJlckZvcm1hdCkuCisgICAgaWYgKCFudW1iZXJGb3JtYXQpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlh
bGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8v
IEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVt
YmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRs
Lk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAg
IC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFj
dGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisg
ICAgLy8gRklYTUU6IFN1cHBvcnQgTmV3VGFyZ2V0IGluIHN1cGVyKCkgY2FsbHMuCisKKyAgICAv
LyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5l
d1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1h
dDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+
Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisg
ICAgaWYgKCFudW1iZXJGb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChu
dW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7
Cit9CisKK0NvbnN0cnVjdFR5cGUgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0
OworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxOdW1iZXJGb3Jt
YXQ7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4
ZWMsIG51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBw
b3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjIuMiBJbnRsLk51
bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEt
NDAyIDIuMCkKKworICAgIC8vIDEuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVOdW1iZXJGb3Jt
YXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIEZJWE1FOiBhdmFpbGFibGUgPSBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldEF2YWlsYWJsZUxvY2FsZXMoKQorCisgICAgLy8g
Mi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVz
KS4KKyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2Nh
bGVzKQorCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3RlZCwgb3B0aW9u
cykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5IGltcGxlbWVu
dGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0FycmF5KiBz
dXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2NhbGVzKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMpOworfQorCit2
b2lkIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI3NWYxMDIxNjRjY2RmMTJjZTUzZTVjOTQ4YjZjYTEx
Nzk5OWFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKyNk
ZWZpbmUgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQor
CisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSW50bE51bWJlckZvcm1hdDsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CisK
K2NsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqLCBTdHJ1
Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAg
ICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsK
K307CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZv
cm1hdChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxO
dW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mjc4YzU4MTdiODI0NzNlODIxNzZj
YjRiMTM0MTFjNzJmMWU4YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmSW50bE51bWJlckZvcm1hdDo6c19pbmZvLCAmbnVtYmVyRm9ybWF0UHJvdG90eXBl
VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSkgfTsK
KworLyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4g
bnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAg
cmVzb2x2ZWRPcHRpb25zICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJ
bnRsTnVtYmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgbnVtYmVyRm9y
bWF0UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKj4ob2Jq
ZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAo
RUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmpl
Y3QuCisgICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFuZikKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgCisgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOworICAgIC8vIDIuIElm
IG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZEZvcm1hdCkg
eworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgICAgICAv
LyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBp
biAxMS4zLjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVy
dHkgaXMgMS4KKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IiksIEludGxO
dW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTQXJy
YXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJvdW5kQXJncykKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsK
KworICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMg
dmFsdWXCuykuCisgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxp
dGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IG5mLltbYm91bmRGb3JtYXRdXSB0
byBiZi4KKyAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CisgICAg
fQorICAgIC8vIDMuIFJldHVybiBuZi5bW2JvdW5kRm9ybWF0XV0uCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBpZiAoIW5mKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMpKTsKKworICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9z
ZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkg
YW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9w
ZXJ0aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRo
aXMgTnVtYmVyRm9ybWF0IG9iamVjdCAoc2VlIDExLjQpOiBsb2NhbGUsIG51bWJlcmluZ1N5c3Rl
bSwgc3R5bGUsIGN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXksIG1pbmltdW1JbnRlZ2VyRGlnaXRz
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRpZ2l0cywgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzLCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGFuZCB1c2VHcm91cGlu
Zy4gUHJvcGVydGllcyB3aG9zZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3RzIGFyZSBub3Qg
cHJlc2VudCBhcmUgbm90IGFzc2lnbmVkLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3Qg
ZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9u
cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhiYzA1MWZkZGI4ODUyYTlhOTVmOWYxN2Q5OGFl
OGNiNzg1MjExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwu
Y29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaAorI2Rl
ZmluZSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlIDogcHVibGlj
IEludGxOdW1iZXJGb3JtYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgSW50bE51bWJlckZvcm1h
dCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3Rh
dGljIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJv
dGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKKworcHJp
dmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
aW5kZXggMTJkYTkzOGZhODEzYWUzMWYzNzU2ZGIwNGRmMDdmYmIwOTkyZGQwYy4uYmE0NTdlNzI1
NjA5MTA3ODkxMjJmNTEzNzVlZTlmZGMxMDI0ZDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTI4LDYgKzI4LDE2IEBACiAKICNpZiBFTkFC
TEUoSU5UTCkKIAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50
bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAt
NDgsMTcgKzU4LDQzIEBAIEludGxPYmplY3Q6OkludGxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKIH0KIAotSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsT2JqZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKICAgICBJbnRsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxJbnRsT2JqZWN0Pih2bS5oZWFwKSkgSW50bE9iamVjdCh2bSwgc3RydWN0dXJlKTsKLSAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXZvaWQgSW50bE9iamVj
dDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworICAgIC8v
IFNldCB1cCBDb2xsYXRvci4KKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJv
dG90eXBlID0gSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
SW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogY29sbGF0
b3JTdHJ1Y3R1cmUgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjb2xsYXRvclByb3RvdHlwZSk7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNv
bGxhdG9yQ29uc3RydWN0b3IgPSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGNvbGxhdG9yUHJvdG90eXBlLCBj
b2xsYXRvclN0cnVjdHVyZSk7CisKKyAgICBjb2xsYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb2xsYXRv
ckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyBTZXQgdXAgTnVtYmVyRm9ybWF0Lgor
ICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSA9IElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogbnVtYmVyRm9y
bWF0U3RydWN0dXJlID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIG51bWJlckZvcm1hdFByb3RvdHlwZSk7CisgICAgSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKiBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBl
KCkpLCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIG51bWJlckZvcm1hdFN0cnVjdHVyZSk7CisKKyAg
ICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKKworICAgIC8vIFNldCB1cCBEYXRlVGltZUZvcm1hdC4KKyAgICBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IqIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IgPSBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Q
cm90b3R5cGUoKSksIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZSk7CisKKyAgICBkYXRlVGltZUZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBkYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyA4LjEgUHJvcGVydGllcyBvZiB0aGUg
SW50bCBPYmplY3QgKEVDTUEtNDAyIDIuMCkKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Q29sbGF0b3IsIGNvbGxhdG9yQ29uc3RydWN0b3IsIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+TnVtYmVyRm9ybWF0LCBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EYXRl
VGltZUZvcm1hdCwgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogfQogCiBT
dHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGY0NWI5YWI2NDkwMjI4ZWRlYTU3YWIyZTBi
ZTljMGI1YTg5ZTJmYzAuLjgzNDI4NTQyYjJkMGZiYzdlNWIxNDRhMzZiY2JiODZlZGZjYmJlODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTMyLDE4
ICszMiwyNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGU7CitjbGFzcyBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKK2Ns
YXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGU7CisKIGNsYXNzIEludGxPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKLSAgICBzdGF0aWMgSW50bE9iamVjdCogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xB
UkVfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToK
ICAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTBiZjE3NzgyMDIyYzQ3OTRk
MzBlNzBlZmIyYmVmNWRmMjQyY2UxOC4uMzY5YzMxMjg0ZDMwMjBlMWNmMGVlM2I4YWUzMTkzY2Vh
MGM0ZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmV2YWws
IG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAgICAgCiAjaWYgRU5BQkxFKElOVEwp
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPklu
dGwsIEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGwsIEludGxPYmpl
Y3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CiAjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2bSwgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk1hdGgsIE1h
dGhPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBi
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGZlNTZiYzBiMWJmZDYwYzUxYTA1N2U5NTU0ZDE5ZWQ0ODc0ZjRmNDIuLmQyMjA5MmE3Yjlk
M2MzZTBmYWE1NmQ4ODNjYzRhMGE0NGQyZmY3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNyArMTE2
LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRf
bWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJM
RV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9z
X1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZmU1NmJjMGIxYmZkNjBjNTFhMDU3ZTk1NTRk
MTllZDQ4NzRmNGY0Mi4uZDIyMDkyYTdiOWQzYzNlMGZhYTU2ZDg4M2NjNGEwYTQ0ZDJmZjdjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTExNiw3ICsxMTYsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9
IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0Vf
SU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVS
TkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBm
ZTU2YmMwYjFiZmQ2MGM1MWEwNTdlOTU1NGQxOWVkNDg3NGY0ZjQyLi5kMjIwOTJhN2I5ZDNjM2Uw
ZmFhNTZkODgzY2M0YTBhNDRkMmZmN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBA
IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5U
TCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9F
VkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRI
X0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9F
VkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggNTE0MTE1Mzc1NWFjNDUzZjQ2YzQ3
ZDM3ZDQ4NGRiOTY3NTY3ZjJiNi4uYzUzYjZiNWZmNTIxZGQ1NTExOGEwYjk4OWRiOTc1ZmI1YWVk
Mjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtOTgsNyArOTgsNyBAQCBtYWNy
byhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9J
TlBVVF9UWVBFX01PTlRIICJUb2dnbGUgbW9udGggdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZB
VEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUg
IlRvZ2dsZSB0aW1lIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9XRUVLICJUb2dnbGUgd2VlayB0eXBl
IDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlRMICJUb2dnbGUgSW50bCBzdXBwb3J0IiBQUklWQVRF
IE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JT1NfQUlSUExBWSAiVG9nZ2xl
IGlPUyBhaXJwbGF5IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HICJUb2dnbGUgaU9TIHRleHQgYXV0b3Npemlu
ZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
SklUICJFbmFibGUgSnVzdEluVGltZSBqYXZhc2NyaXB0IHN1cHBvcnQiIFBSSVZBVEUgT04pCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDBjOTc1
YzUzNmY3ZDA0NjQzMmVkNTk4NTBmMmQxZmY5ZmMzYzU0My4uN2E3YmEyYTA1MDE2MzcyMDE0MTU5
ZmJhMGIxMDc3OThhYjc1OTg3NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3LTEzICBBbmR5IFZhbldhZ29u
ZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2lj
IHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5MDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgZmxhZyBub3cgdGhh
dCB0aGUgYmFzaWMgb2JqZWN0cyBhcmUgaW4gcGxhY2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IEVuYWJsZWQgSU5UTAorCiAyMDE1LTA3LTEwICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFVuYWJsZSB0
byBkaXNtaXNzIGNvbnRleHQgbWVudSBkdXJpbmcgdGVzdCBydW5zCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggMDg3ZTY4YzExYjBiNDcxMjM4YjdmYjg4MmVjNzQ5
ZjE5ZmI3NGM3Ny4uMGFmYzMyOWFiODU2ODU4NmY3ZmU3ZTY3MmY1MjE5Njk1ZDQzMWQ4ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjg2LDcgKzI4Niw3IEBA
IG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVXZWVrU3VwcG9ydCB9LAogCiAg
ICAgeyBvcHRpb24gPT4gImludGwiLCBkZXNjID0+ICJUb2dnbGUgSW50bCBzdXBwb3J0IiwKLSAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW50
bFN1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDEs
IHZhbHVlID0+IFwkaW50bFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJsZWdhY3ktbm90
aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBMZWdhY3kgTm90aWZpY2F0aW9ucyBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIiwgZGVmYXVs
dCA9PiAwLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjA5MWIxZjk5NjYwY2Q4MThmYjQ3MmNlMWVmOWE0MmNlYzk3ZjhkNi4uNzQzM2RjMDM1MTI1OTVi
OWIwM2YxODVlYzNlYTIwYTMxYTdjZGJlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3
LTEzICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0
aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0RXhwZWN0YXRpb25zOiBFbmFibGVkIGludGwgdGVzdHMuCisgICAgICAgICoganMvaW50
bC1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwu
anM6IEFkZGVkIHRlc3RzIGZvciBDb2xsYXRvciwgTnVtYmVyRm9ybWF0LCBhbmQgRGF0ZVRpbWVG
b3JtYXQuCisKIDIwMTUtMDctMTMgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBw
bGUuY29tPgogCiAgICAgICAgIE9iamVjdCBjeWNsZXMgc2hvdWxkIG5vdCBwcmV2ZW50IGFsbG9j
YXRpb24gZWxpbWluYXRpb24vc2lua2luZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWM2ODZiZjI2
NmIwM2JlYTcxMTkxYzgxNTViZTFhNWVmZjgxMjA0Ni4uYjExZjI5NWNlMGRhODJkODBlYWQyYWNi
ZWYxYTI2NDJhNTYyZTAwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC01MjYsNiArNTI2LDMgQEAg
d2Via2l0Lm9yZy9iLzE0NjE4MiBlZGl0aW5nL3NlbGVjdGlvbi9sZWFrLWRvY3VtZW50LXdpdGgt
c2VsZWN0aW9uLWluc2lkZS5odG1sIFsKIAogd2Via2l0Lm9yZy9iLzE0NjQzNCBmYXN0L2RvbS9I
VE1MSW1hZ2VFbGVtZW50L3NpemVzIFsgU2tpcCBdCiAKLSMgSW50bCBpcyBub3QgZW5hYmxlZCB5
ZXQKLWpzL2ludGwuaHRtbCBbIFNraXAgXQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9p
bnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CmluZGV4
IGIyNmFmODYzMzY1MWIxNDBjOGYxMGI4OTdhOTA4ZjBjYThjYWE5ZDYuLjdlYThhZTUzNTk3ODYx
ZWExZDk5YTEzOGU3N2I2N2E0M2RmOThkYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2lu
dGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwg
b2JqZWN0IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uLgorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Ig
b2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4KIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC0xMSw2ICsxMSw1NyBAQCBQQVNTIG5ldyBJbnRsIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZh
bHVhdGluZwogUEFTUyBJbnRsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW50bCBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdJbnRsKCknLCAnSW50bCcgaXMgYW4gaW5zdGFuY2Ugb2YgT2Jq
ZWN0KS4KIFBBU1MgZGVsZXRlIEludGw7IGlzIHRydWUKIFBBU1MgJ0ludGwnIGluIGdsb2JhbCgp
IGlzIGZhbHNlCitQQVNTIEludGwuQ29sbGF0b3IgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24K
K1BBU1MgSW50bC5Db2xsYXRvcigpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BB
U1MgSW50bC5Db2xsYXRvci5jYWxsKHt9KSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9y
CitQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRv
cgorUEFTUyBJbnRsLkNvbGxhdG9yLmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwg
J3Byb3RvdHlwZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIGlz
IGZhbHNlCitQQVNTIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCBpcyAx
CitQQVNTIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKCkgaXMgYW4gaW5zdGFuY2Ug
b2YgQXJyYXkKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgSW50
bC5Db2xsYXRvcgorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGlzIGFuIGlu
c3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZ2V0IGlzIGFuIGluc3RhbmNlIG9m
IEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xs
YXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuc2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFy
ZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmxlbmd0aCBpcyAyCitQ
QVNTIEludGwuTnVtYmVyRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIElu
dGwuTnVtYmVyRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1iZXJGb3JtYXQKK1BB
U1MgSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1i
ZXJGb3JtYXQKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2Yg
SW50bC5OdW1iZXJGb3JtYXQKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQubGVuZ3RoIGlzIDAKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3By
b3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3Jt
YXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgSW50bC5OdW1iZXJG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCBpcyAxCitQQVNTIEludGwuTnVtYmVyRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3RhbmNlIG9mIEFycmF5CitQQVNTIElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBJbnRsLk51bWJlckZvcm1h
dAorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGlzIGFuIGluc3RhbmNl
IG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1
bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zv
cm1hdCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFi
bGUgaXMgdHJ1ZQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0
aCBpcyAxCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rp
b24KK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdCgpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0
ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5jYWxsKHt9KSBpcyBhbiBpbnN0
YW5jZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0CitQQVNTIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0
KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBJbnRsLkRhdGVU
aW1lRm9ybWF0Lmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwg
J3Byb3RvdHlwZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJh
YmxlIGlzIGZhbHNlCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09m
Lmxlbmd0aCBpcyAxCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09m
KCkgaXMgYW4gaW5zdGFuY2Ugb2YgQXJyYXkKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUuY29uc3RydWN0b3IgaXMgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLCAnZm9ybWF0Jykuc2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZW51
bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIGlzIHRy
dWUKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCBpcyAx
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2ludGwuanMKaW5kZXggOGE0Y2Y1ODRlMmYwOWNlYzg3ZDU1ZjkzMjI2
NDQzZWQ3MTgzMmUzOS4uOGM2YmJjYzU3OTg2YjM0MzgwYzY3OWZjNzQ2YmY5YWE0Njg0NjQxMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMKQEAgLTEsMjAgKzEsMjAgQEAKLS8vIFRo
aXMgZmVhdHVyZSBpc24ndCBlbmFibGVkIHlldC4KLS8vQCBza2lwCitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJl
ZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlv
biAoRUNNQS00MDIgMi4wKS4iKTsKIAotZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhl
IGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmliZWQgaW4gOCBvZiB0aGUgRUNN
QVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbi4iKTsKKy8vIDgg
VGhlIEludGwgT2JqZWN0CiAKLS8vIFRoZSBJbnRsIG9iamVjdCBpcyBhIHN0YW5kYXJkIGJ1aWx0
LWluIG9iamVjdCB0aGF0IGlzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBJbnRsIHByb3BlcnR5
IG9mIHRoZSBnbG9iYWwgb2JqZWN0LgorLy8gVGhlIEludGwgb2JqZWN0IGlzIGEgc2luZ2xlIG9y
ZGluYXJ5IG9iamVjdC4KIHNob3VsZEJlVHlwZSgiSW50bCIsICJPYmplY3QiKTsKIHNob3VsZEJl
KCJ0eXBlb2YgSW50bCIsICInb2JqZWN0JyIpOwogc2hvdWxkQmUoIk9iamVjdC5wcm90b3R5cGUu
dG9TdHJpbmcuY2FsbChJbnRsKSIsICInW29iamVjdCBPYmplY3RdJyIpOwogCi0vLyBUaGUgdmFs
dWUgb2YgdGhlIFtbUHJvdG90eXBlXV0gaW50ZXJuYWwgcHJvcGVydHkgb2YgdGhlIEludGwgb2Jq
ZWN0IGlzIHRoZSBidWlsdC1pbiBPYmplY3QgcHJvdG90eXBlIG9iamVjdCBzcGVjaWZpZWQgYnkg
dGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbi4KKy8vIFRoZSB2YWx1ZSBvZiB0
aGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBzbG90IG9mIHRoZSBJbnRsIG9iamVjdCBpcyB0aGUg
aW50cmluc2ljIG9iamVjdCAlT2JqZWN0UHJvdG90eXBlJS4KIHNob3VsZEJlVHJ1ZSgiT2JqZWN0
LmdldFByb3RvdHlwZU9mKEludGwpID09PSBPYmplY3QucHJvdG90eXBlIik7CiAKLS8vIFRoZSBJ
bnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgW1tDb25zdHJ1Y3RdXSBpbnRlcm5hbCBwcm9wZXJ0
eTsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUgSW50bCBvYmplY3QgYXMgYSBjb25zdHJ1
Y3RvciB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuCisvLyBUaGUgSW50bCBvYmplY3QgaXMgbm90IGEg
ZnVuY3Rpb24gb2JqZWN0LgorLy8gSXQgZG9lcyBub3QgaGF2ZSBhIFtbQ29uc3RydWN0XV0gaW50
ZXJuYWwgbWV0aG9kOyBpdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIHRoZSBJbnRsIG9iamVjdCBh
cyBhIGNvbnN0cnVjdG9yIHdpdGggdGhlIG5ldyBvcGVyYXRvci4KIHNob3VsZFRocm93KCJuZXcg
SW50bCIsICInVHlwZUVycm9yOiBPYmplY3QgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgXFwnbmV3IEludGxcXCcpJyIpOwogCi0vLyBUaGUgSW50bCBvYmplY3QgZG9lcyBub3QgaGF2
ZSBhIFtbQ2FsbF1dIGludGVybmFsIHByb3BlcnR5OyBpdCBpcyBub3QgcG9zc2libGUgdG8gaW52
b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9uLgorLy8gVGhlIEludGwgb2JqZWN0IGRv
ZXMgbm90IGhhdmUgYSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Q7IGl0IGlzIG5vdCBwb3NzaWJs
ZSB0byBpbnZva2UgdGhlIEludGwgb2JqZWN0IGFzIGEgZnVuY3Rpb24uCiBzaG91bGRUaHJvdygi
SW50bCgpIiwgIidUeXBlRXJyb3I6IEludGwgaXMgbm90IGEgZnVuY3Rpb24uIChJbiBcXCdJbnRs
KClcXCcsIFxcJ0ludGxcXCcgaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0KSciKTsKIAogLy8gaXMg
ZGVsZXRhYmxlLCBpbmZlcnJlZCBmcm9tIHVzZSBvZiAiSW5pdGlhbCIgaW4gc3BlYywgY29uc2lz
dGVudCB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucwpAQCAtMjUsMyArMjUsMTY5IEBAIGZ1bmN0
aW9uIGdsb2JhbCgpIHsgcmV0dXJuIHRoaXM7IH0KIHNob3VsZEJlRmFsc2UoIidJbnRsJyBpbiBn
bG9iYWwoKSIpOwogCiBJbnRsID0gX19JbnRsOworCisKKworLy8gMTAuMSBUaGUgSW50bC5Db2xs
YXRvciBDb25zdHJ1Y3RvcgorCisvLyBUaGUgSW50bC5Db2xsYXRvciBjb25zdHJ1Y3RvciBpcyBh
IHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3Nob3VsZEJl
VHlwZSgiSW50bC5Db2xsYXRvciIsICJGdW5jdGlvbiIpOworCisvLyAxMC4xLjIgSW50bC5Db2xs
YXRvcihbIGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9y
KCkiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yLmNhbGwo
e30pIiwgIkludGwuQ29sbGF0b3IiKTsKK3Nob3VsZEJlVHlwZSgibmV3IEludGwuQ29sbGF0b3Io
KSIsICJJbnRsLkNvbGxhdG9yIik7CisKKy8vIDEwLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5D
b2xsYXRvciBDb25zdHJ1Y3RvcgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlz
IDApCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5sZW5ndGgiLCAiMCIpOworCisvLyAxMC4yLjEg
SW50bC5Db2xsYXRvci5wcm90b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJp
YnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29u
ZmlndXJhYmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hv
dWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9y
LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykuY29uZmlndXJh
YmxlIik7CisKKy8vIDEwLjIuMiBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZiAobG9j
YWxlcyBbLCBvcHRpb25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5
IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCitzaG91bGRCZSgiSW50bC5D
b2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIiwgIjEiKTsKKworLy8gUmV0dXJucyBT
dXBwb3J0ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9j
YWxlc09mKCkiLCAiQXJyYXkiKTsKKworLy8gMTAuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkNv
bGxhdG9yIFByb3RvdHlwZSBPYmplY3QKKworLy8gVGhlIHZhbHVlIG9mIEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICVDb2xsYXRvciUuCitzaG91bGRCZSgiSW50bC5Db2xs
YXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50bC5Db2xsYXRvciIpOworCisvLyAxMC4z
LjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZQorCisvLyBUaGlzIG5hbWVkIGFjY2Vz
c29yIHByb3BlcnR5IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNvbXBhcmVzIHR3byBzdHJpbmdz
IGFjY29yZGluZyB0byB0aGUgc29ydCBvcmRlciBvZiB0aGlzIENvbGxhdG9yIG9iamVjdC4KK3No
b3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSIsICJGdW5jdGlvbiIp
OworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbR2V0XV0gYXR0cmlidXRlIGlzIGEgZnVuY3Rpb24K
K3Nob3VsZEJlVHlwZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxh
dG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5nZXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZh
bHVlIG9mIHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRlZmluZWQuCitzaG91bGRCZSgiT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2Nv
bXBhcmUnKS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8vIE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5z
cGVjaWZlZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZW51bWVyYWJsZSIpOworc2hvdWxk
QmVUcnVlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJv
dG90eXBlLCAnY29tcGFyZScpLmNvbmZpZ3VyYWJsZSIpOworCisvLyBUaGUgdmFsdWUgb2YgRuKA
mXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZS5sZW5ndGgiLCAiMiIpOworCisKKworLy8gMTEuMSBUaGUgSW50bC5OdW1iZXJG
b3JtYXQgQ29uc3RydWN0b3IKKworLy8gVGhlIEludGwuTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9y
IGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIEludGwgb2JqZWN0Lgorc2hv
dWxkQmVUeXBlKCJJbnRsLk51bWJlckZvcm1hdCIsICJGdW5jdGlvbiIpOworCisvLyAxMS4xLjIg
SW50bC5OdW1iZXJGb3JtYXQoWyBsb2NhbGVzIFssIG9wdGlvbnNdXSkKK3Nob3VsZEJlVHlwZSgi
SW50bC5OdW1iZXJGb3JtYXQoKSIsICJJbnRsLk51bWJlckZvcm1hdCIpOworc2hvdWxkQmVUeXBl
KCJJbnRsLk51bWJlckZvcm1hdC5jYWxsKHt9KSIsICJJbnRsLk51bWJlckZvcm1hdCIpOworc2hv
dWxkQmVUeXBlKCJuZXcgSW50bC5OdW1iZXJGb3JtYXQoKSIsICJJbnRsLk51bWJlckZvcm1hdCIp
OworCisvLyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVj
dG9yCisKKy8vIGxlbmd0aCBwcm9wZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkKK3Nob3VsZEJlKCJJ
bnRsLk51bWJlckZvcm1hdC5sZW5ndGgiLCAiMCIpOworCisvLyAxMS4yLjEgSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlCisKKy8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzIHsg
W1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJs
ZV1dOiBmYWxzZSB9Lgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7CitzaG91bGRC
ZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0
LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZp
Z3VyYWJsZSIpOworCisvLyAxMS4yLjIgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mIChsb2NhbGVzIFssIG9wdGlvbnMgXSkKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGgg
cHJvcGVydHkgb2YgdGhlIHN1cHBvcnRlZExvY2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJl
KCJJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIiwgIjEiKTsKKwor
Ly8gUmV0dXJucyBTdXBwb3J0ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIiwgIkFycmF5Iik7CisKKy8vIDExLjMgUHJvcGVydGll
cyBvZiB0aGUgSW50bC5OdW1iZXJGb3JtYXQgUHJvdG90eXBlIE9iamVjdAorCisvLyBUaGUgdmFs
dWUgb2YgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICVOdW1iZXJG
b3JtYXQlLgorc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciIsICJJbnRsLk51bWJlckZvcm1hdCIpOworCisvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdAorCisvLyBUaGlzIG5hbWVkIGFjY2Vzc29yIHByb3BlcnR5IHJldHVy
bnMgYSBmdW5jdGlvbiB0aGF0IGZvcm1hdHMgYSBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBlZmZl
Y3RpdmUgbG9jYWxlIGFuZCB0aGUgZm9ybWF0dGluZyBvcHRpb25zIG9mIHRoaXMgTnVtYmVyRm9y
bWF0IG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZv
cm1hdCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbR2V0XV0gYXR0cmli
dXRlIGlzIGEgZnVuY3Rpb24KK3Nob3VsZEJlVHlwZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVu
Y3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRl
ZmluZWQuCitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8v
IE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5zcGVjaWZlZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9y
bWF0JykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3Vy
YWJsZSIpOworCisvLyBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCitz
aG91bGRCZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGgiLCAiMSIp
OworCisKKworLy8gMTIuMSBUaGUgSW50bC5EYXRlVGltZUZvcm1hdCBDb25zdHJ1Y3RvcgorCisv
LyBUaGUgSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBpcyBhIHN0YW5kYXJkIGJ1aWx0
LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRl
VGltZUZvcm1hdCIsICJGdW5jdGlvbiIpOworCisvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1h
dChbIGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9y
bWF0KCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVU
aW1lRm9ybWF0LmNhbGwoe30pIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKK3Nob3VsZEJlVHlw
ZSgibmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7CisK
Ky8vIDEyLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBDb25zdHJ1Y3Rv
cgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitzaG91bGRCZSgiSW50
bC5EYXRlVGltZUZvcm1hdC5sZW5ndGgiLCAiMCIpOworCisvLyAxMi4yLjEgSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMg
eyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJh
YmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hv
dWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1l
Rm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBl
JykuY29uZmlndXJhYmxlIik7CisKKy8vIDEyLjIuMiBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBv
cnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0
aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEu
CitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3Ro
IiwgIjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIklu
dGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkiLCAiQXJyYXkiKTsKKworLy8g
MTIuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IFByb3RvdHlwZSBPYmpl
Y3QKKworLy8gVGhlIHZhbHVlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0
cnVjdG9yIGlzICVEYXRlVGltZUZvcm1hdCUuCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1h
dC5wcm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworCisvLyAx
Mi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CisKKy8vIFRoaXMgbmFt
ZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgZm9ybWF0cyBhIGRh
dGUgYWNjb3JkaW5nIHRvIHRoZSBlZmZlY3RpdmUgbG9jYWxlIGFuZCB0aGUgZm9ybWF0dGluZyBv
cHRpb25zIG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhl
IHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0ZSBpcyBhIGZ1bmN0aW9uCitzaG91bGRCZVR5
cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9m
IHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRlZmluZWQuCitzaG91bGRCZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zv
cm1hdCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNw
ZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUiKTsKK3No
b3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSIpOworCisvLyBUaGUgdmFs
dWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCitzaG91bGRCZSgiSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIxIik7CisKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkYTQ4M2RiYjg5MTQxYjBjNDBhNzk0OTViNjYxMGY1
YWRkNDNkNTIwLi4xNzg3MzZjMDc3ZTU5NDY4MTY0MzUzMWU2YjNiMjE5ZWNjMTBhYjk3IDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUt
MDctMTMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6
YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVuYWJsZSBmbGFnIG5vdyB0aGF0IHRoZSBiYXNpYyBvYmplY3RzIGFyZSBpbiBwbGFjZS4KKwor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZTogZW5hYmxlIElOVEwK
KwogMjAxNS0wNy0xMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gYXIgd2FybmluZyB3aGVuIGxpbmtpbmcgc3RhdGljIGxpYnJhcmll
cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>