<?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>102999</bug_id>
          
          <creation_ts>2012-11-21 18:14:51 -0800</creation_ts>
          <short_desc>JSC should be able to report profiling data associated with the IR dumps and disassembly</short_desc>
          <delta_ts>2012-12-05 09:42:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103000</dependson>
    
    <dependson>103009</dependson>
    
    <dependson>103492</dependson>
    
    <dependson>103623</dependson>
    
    <dependson>103832</dependson>
    
    <dependson>104031</dependson>
    
    <dependson>104103</dependson>
    
    <dependson>104106</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hnandor</cc>
    
    <cc>kilvadyb</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>773461</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-21 18:14:51 -0800</bug_when>
    <thetext>It would be really easy to do a per-bytecode-instruction counting profiler.  It would be only slightly harder to do a sampling profiler that does the same.  But right now reporting the results would be hard.

I want jsc to be able to dump profiling output, either periodically to the console, at the end of execution to the console, or to just internally as a JSON dump for the web inspector for example, that looks something like:

CodeBlock 0x6426426, instruction count = 52:
    source code:
           function foo(p, a, b) { if (p) return a + b; }
    profiled (LLInt/Baseline/DFG) bytecode:
           100/900/700     [  0] op_enter
           100/900/700     [  1] op_jeq_null
           75/800/500       [  5] op_add
           75/1300/0         [  9] op_ret
           25/100/200       [ 11] op_ret

Or something.

To do that I&apos;ll need the following:

- Everything that gets printed to the console for disassembly should have the option of being saved in memory (probably as a sequence of strings, one per bytecode instruction) until such time as we&apos;re ready to print it.  That means rethinking dataLog().
- Some better way of identifying (naming) a code block.  I&apos;m really getting tired of the hex code block addresses and instruction counts.
- We need some counters somewhere and the data structures for storing the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780536</commentid>
    <comment_count>1</comment_count>
      <attachid>177050</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-30 16:41:18 -0800</bug_when>
    <thetext>Created attachment 177050
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780573</commentid>
    <comment_count>2</comment_count>
      <attachid>177062</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-30 17:23:59 -0800</bug_when>
    <thetext>Created attachment 177062
moar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780786</commentid>
    <comment_count>3</comment_count>
      <attachid>177117</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-01 16:13:28 -0800</bug_when>
    <thetext>Created attachment 177117
git-r-done!

Still some more stuff to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780802</commentid>
    <comment_count>4</comment_count>
      <attachid>177119</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-01 17:10:07 -0800</bug_when>
    <thetext>Created attachment 177119
almost there!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780836</commentid>
    <comment_count>5</comment_count>
      <attachid>177127</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-01 21:28:53 -0800</bug_when>
    <thetext>Created attachment 177127
sample profiling session

Sample session using the new display-pbp-output tool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780837</commentid>
    <comment_count>6</comment_count>
      <attachid>177128</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-01 21:41:09 -0800</bug_when>
    <thetext>Created attachment 177128
it does things

I think this will probably still make EWS blow up.  Also, I may yet split the patch up a bit, though I have very little wiggle room in that department.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780839</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-01 21:46:09 -0800</bug_when>
    <thetext>Attachment 177128 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/profiler/PBPOriginStack.h:50:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/profiler/PBPOriginStack.h:56:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/profiler/PBPBytecodes.h:38:  The parameter name &quot;hash&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/profiler/PBPDatabase.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/text/WTFString.h:443:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/profiler/PBPCompilationKind.h:31:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 6 in 55 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>780840</commentid>
    <comment_count>8</comment_count>
      <attachid>177128</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-01 21:50:36 -0800</bug_when>
    <thetext>Comment on attachment 177128
it does things

Attachment 177128 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15105021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780841</commentid>
    <comment_count>9</comment_count>
      <attachid>177128</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-01 21:51:37 -0800</bug_when>
    <thetext>Comment on attachment 177128
it does things

Attachment 177128 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15105020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780842</commentid>
    <comment_count>10</comment_count>
      <attachid>177128</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-01 21:51:45 -0800</bug_when>
    <thetext>Comment on attachment 177128
it does things

Attachment 177128 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15060933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780843</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-01 21:54:50 -0800</bug_when>
    <thetext>Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780844</commentid>
    <comment_count>12</comment_count>
      <attachid>177128</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-01 22:08:49 -0800</bug_when>
    <thetext>Comment on attachment 177128
it does things

Attachment 177128 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15064920</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780846</commentid>
    <comment_count>13</comment_count>
      <attachid>177128</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-01 22:29:46 -0800</bug_when>
    <thetext>Comment on attachment 177128
it does things

Attachment 177128 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15100055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780868</commentid>
    <comment_count>14</comment_count>
      <attachid>177134</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-02 01:09:20 -0800</bug_when>
    <thetext>Created attachment 177134
WRONG PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780869</commentid>
    <comment_count>15</comment_count>
      <attachid>177134</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-02 01:09:54 -0800</bug_when>
    <thetext>Comment on attachment 177134
WRONG PATCH

Not sure what I was doing there.  Wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780870</commentid>
    <comment_count>16</comment_count>
      <attachid>177135</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-02 01:11:00 -0800</bug_when>
    <thetext>Created attachment 177135
the patch

The right patch this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780871</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 01:16:50 -0800</bug_when>
    <thetext>Attachment 177135 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/profiler/PBPCompilationKind.h:34:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 60 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>780872</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-02 01:19:14 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 177135 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
&gt; Source/JavaScriptCore/profiler/PBPCompilationKind.h:34:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
&gt; Total errors found: 1 in 60 files

I believe it&apos;s getting confused by &quot;DFG&quot; being an enum member.  I don&apos;t believe that &quot;Dfg&quot; would have been correct.

&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780873</commentid>
    <comment_count>19</comment_count>
      <attachid>177135</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-02 01:23:13 -0800</bug_when>
    <thetext>Comment on attachment 177135
the patch

Attachment 177135 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15099110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780874</commentid>
    <comment_count>20</comment_count>
      <attachid>177135</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-02 01:25:03 -0800</bug_when>
    <thetext>Comment on attachment 177135
the patch

Attachment 177135 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15065926</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780875</commentid>
    <comment_count>21</comment_count>
      <attachid>177135</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-02 01:25:52 -0800</bug_when>
    <thetext>Comment on attachment 177135
the patch

Attachment 177135 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15060979</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780876</commentid>
    <comment_count>22</comment_count>
      <attachid>177136</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-02 01:33:35 -0800</bug_when>
    <thetext>Created attachment 177136
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780877</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 01:39:45 -0800</bug_when>
    <thetext>Attachment 177136 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/profiler/PBPCompilationKind.h:34:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 60 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>780879</commentid>
    <comment_count>24</comment_count>
      <attachid>177136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-02 01:46:02 -0800</bug_when>
    <thetext>Comment on attachment 177136
the patch

Attachment 177136 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15106034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780880</commentid>
    <comment_count>25</comment_count>
      <attachid>177136</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-02 01:46:15 -0800</bug_when>
    <thetext>Comment on attachment 177136
the patch

Attachment 177136 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15100120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780883</commentid>
    <comment_count>26</comment_count>
      <attachid>177136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-02 01:47:24 -0800</bug_when>
    <thetext>Comment on attachment 177136
the patch

Attachment 177136 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15064964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780886</commentid>
    <comment_count>27</comment_count>
      <attachid>177136</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-02 02:19:05 -0800</bug_when>
    <thetext>Comment on attachment 177136
the patch

Attachment 177136 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15086545</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780970</commentid>
    <comment_count>28</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-02 11:09:35 -0800</bug_when>
    <thetext>Wow, you managed to break everything :-O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780972</commentid>
    <comment_count>29</comment_count>
      <attachid>177136</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-02 11:14:44 -0800</bug_when>
    <thetext>Comment on attachment 177136
the patch

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

&gt; Source/JavaScriptCore/profiler/PBPBytecode.h:31
&gt; +

#include &lt;climits&gt; is needed for UINT_MAX (is causing the failure on EFL port).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781013</commentid>
    <comment_count>30</comment_count>
      <attachid>177152</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-02 14:13:26 -0800</bug_when>
    <thetext>Created attachment 177152
try to break fewer things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781014</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 14:18:17 -0800</bug_when>
    <thetext>Attachment 177152 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/profiler/PBPCompilationKind.h:34:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 60 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>781018</commentid>
    <comment_count>32</comment_count>
      <attachid>177152</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-02 14:52:56 -0800</bug_when>
    <thetext>Comment on attachment 177152
try to break fewer things

Attachment 177152 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15105277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781020</commentid>
    <comment_count>33</comment_count>
      <attachid>177152</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-02 14:56:08 -0800</bug_when>
    <thetext>Comment on attachment 177152
try to break fewer things

Attachment 177152 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15121036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781023</commentid>
    <comment_count>34</comment_count>
      <attachid>177154</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-02 15:05:10 -0800</bug_when>
    <thetext>Created attachment 177154
fix more bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781024</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 15:09:01 -0800</bug_when>
    <thetext>Attachment 177154 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/profiler/PBPCompilationKind.h:34:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 62 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>782254</commentid>
    <comment_count>36</comment_count>
      <attachid>177154</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-12-03 23:18:56 -0800</bug_when>
    <thetext>Comment on attachment 177154
fix more bots

I&apos;m not wild about the name &quot;PBP&quot;.  WebKit style is anti-acronyms (though I guess there is solid precedent for namespace names).
I&apos;d consider thinking about a rename – maybe simply &apos;Profiler&apos;, or another whole-word name – I know we have a legacy profiling tool, but I don&apos;t think that&apos;s touched enough to be a practical concern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782258</commentid>
    <comment_count>37</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-03 23:28:03 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 177154 [details])
&gt; I&apos;m not wild about the name &quot;PBP&quot;.  WebKit style is anti-acronyms (though I guess there is solid precedent for namespace names).
&gt; I&apos;d consider thinking about a rename – maybe simply &apos;Profiler&apos;, or another whole-word name – I know we have a legacy profiling tool, but I don&apos;t think that&apos;s touched enough to be a practical concern.

I like Profiler.  I will rename the PBP namespace to Profiler.

But this raises the question of how to name files.  Currently all of the PBP files use the PBP prefix.  I propose simply prefixing the filenames with &quot;Profiler&quot;.  This will be a bit verbose, i.e. we will have things like Source/JavaScriptCore/profiler/ProfilerDatabase.h.  But, I think it has the benefit of clarity.

I will also rename display-pbp-output to display-profiler-ouput.

Let me know if you think that&apos;s all reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782280</commentid>
    <comment_count>38</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-12-03 23:45:52 -0800</bug_when>
    <thetext>(In reply to comment #37)

Yep, that all sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782848</commentid>
    <comment_count>39</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-04 13:16:16 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; 
&gt; Yep, that all sounds good to me.

There is already a class called Profiler, which conflicts with the use of Profiler as a namespace.

I&apos;m going to rename the Profiler class to LegacyProfiler: https://bugs.webkit.org/show_bug.cgi?id=104031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783153</commentid>
    <comment_count>40</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-04 17:27:57 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/136601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783431</commentid>
    <comment_count>41</comment_count>
    <who name="Nandor Huszka">hnandor</who>
    <bug_when>2012-12-04 23:17:09 -0800</bug_when>
    <thetext>It broke the Qt build, fix it please.

/data/buildbot/mips-1/qt-linux-mipsel-mips32r2-release/build/Source/JavaScriptCore/jit/JIT.cpp: In member function &apos;void JSC::JIT::privateCompileMainPass()&apos;:
/data/buildbot/mips-1/qt-linux-mipsel-mips32r2-release/build/Source/JavaScriptCore/jit/JIT.cpp:241: error: &apos;add64&apos; was not declared in this scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783462</commentid>
    <comment_count>42</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-05 00:20:38 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; It broke the Qt build, fix it please.
&gt; 
&gt; /data/buildbot/mips-1/qt-linux-mipsel-mips32r2-release/build/Source/JavaScriptCore/jit/JIT.cpp: In member function &apos;void JSC::JIT::privateCompileMainPass()&apos;:
&gt; /data/buildbot/mips-1/qt-linux-mipsel-mips32r2-release/build/Source/JavaScriptCore/jit/JIT.cpp:241: error: &apos;add64&apos; was not declared in this scope

This is something that the MIPS maintainers should fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783534</commentid>
    <comment_count>43</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-05 01:49:04 -0800</bug_when>
    <thetext>CC the MIPS maintainer. I think we should track it in a separated bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783545</commentid>
    <comment_count>44</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-05 02:03:08 -0800</bug_when>
    <thetext>And it broke the ARM traditional build too - https://bugs.webkit.org/show_bug.cgi?id=104103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783566</commentid>
    <comment_count>45</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-12-05 02:29:46 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; CC the MIPS maintainer. I think we should track it in a separated bug.

I added Bug 104106 for it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177050</attachid>
            <date>2012-11-30 16:41:18 -0800</date>
            <delta_ts>2012-11-30 17:23:59 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>37181</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDE2ICsxNjAsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRU
eXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyNlbHNlCisg
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVWZXJzaW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIHZvaWQgdmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlz
dGljcygpOwogCi0gICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKCk7Ci0gICAgICAgIHZvaWQgZHVt
cEJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBwcmludFN0
cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBwcmludFN0cnVjdHVy
ZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKKyAg
ICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsK
KyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShQcmludFN0cmVh
bSYsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwog
CiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1v
ZGU7IH0KIApAQCAtMTIxNSwxNyArMTIyMCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLnNldCgqbV9nbG9iYWxEYXRhLCBvd25lckV4
ZWN1dGFibGUoKSwgY29uc3RhbnRzW2ldLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJik7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFt
JiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomKTsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikg
Y29uc3Q7Ci0gICAgICAgIHZvaWQgcHJpbnRVbmFyeU9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
biwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwotICAgICAgICB2b2lkIHBy
aW50QmluYXJ5T3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiom
LCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1bXAoRXhl
Y1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomLCBpbnQgbG9j
YXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKLSAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVj
U3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYpOwotICAgICAgICB2b2lk
IHByaW50R2V0QnlJZENhY2hlU3RhdHVzKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbik7CisgICAg
ICAgIHZvaWQgcHJpbnRVbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CisgICAgICAgIHZvaWQg
cHJpbnRCaW5hcnlPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOworICAgICAgICB2b2lkIHByaW50Q29u
ZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
LCBjb25zdCBJbnN0cnVjdGlvbiomLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKKyAg
ICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBs
b2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7CisgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlk
Q2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24pOwogICAg
ICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9Owot
ICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUpOwotICAgICAgICB2
b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOworICAgICAgICB2b2lkIHByaW50Q2FsbE9wKFByaW50
U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBj
b25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSk7CisgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlk
T3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0
aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKICAgICAgICAgdm9pZCB2aXNpdFN0cnVjdHVyZXMoU2xv
dFZpc2l0b3ImLCBJbnN0cnVjdGlvbiogdlBDKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19K
SVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4u
Y3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDExIEBAIENvZGVCbG9j
a0hhc2ggSW5saW5lQ2FsbEZyYW1lOjpoYXNoKCkgY28KICAgICByZXR1cm4gZXhlY3V0YWJsZS0+
aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7CiB9CiAKK0NvZGVCbG9jayogSW5saW5lQ2Fs
bEZyYW1lOjpiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV4ZWN1dGFi
bGUtPmJhc2xpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOworfQorCiB2b2lk
IElubGluZUNhbGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91
dC5wcmludCgiIyIsIGhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRhYmxlLmdldCgpKSwg
IiwgYmMjIiwgY2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHNwZWNpYWxpemF0aW9uS2luZCgp
LCAiPiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDggQEAgc3RydWN0IElu
bGluZUNhbGxGcmFtZSB7CiAgICAgCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7CiAg
ICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0OworICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIFBCUEJ5dGVjb2RlX2gKKyNkZWZpbmUgUEJQQnl0ZWNvZGVfaAorCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBC
UCB7CisKK2NsYXNzIEJ5dGVjb2RlIHsKK3B1YmxpYzoKKyAgICBCeXRlY29kZSgpCisgICAgICAg
IDogbV9ieXRlY29kZUluZGV4KFVJTlRfTUFYKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQnl0
ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgQ1N0cmluZyYgZGVzY3JpcHRpb24p
CisgICAgICAgIDogbV9ieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICwgbV9k
ZXNjcmlwdGlvbihkZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7IH0KKyAgICBj
b25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247
IH0KK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIENTdHJpbmcg
bV9kZXNjcmlwdGlvbjsKK307CisKK2lubGluZSB1bnNpZ25lZCBnZXRCeXRlY29kZUluZGV4Rm9y
Qnl0ZWNvZGUoQnl0ZWNvZGUqIGJ5dGVjb2RlKSB7IHJldHVybiBieXRlY29kZS0+Ynl0ZWNvZGVJ
bmRleCgpOyB9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUEJ5
dGVjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVj
b2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UEJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKKworQnl0ZWNvZGVzOjpCeXRlY29kZXMoc2l6ZV90IGlkLCBDb2RlQmxvY2tI
YXNoIGhhc2gpCisgICAgOiBtX2lkKGlkKQorICAgICwgbV9oYXNoKGhhc2gpCit7Cit9CisKK0J5
dGVjb2Rlczo6fkJ5dGVjb2RlcygpIHsgfQorCit1bnNpZ25lZCBCeXRlY29kZXM6OmluZGV4Rm9y
Qnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdAoreworICAgIHJldHVy
biBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGUsIHVuc2lnbmVkLCBnZXRCeXRlY29kZUluZGV4Rm9yQnl0
ZWNvZGU+KG1fYnl0ZWNvZGUuYmVnaW4oKSwgbV9ieXRlY29kZS5zaXplKCksIGJ5dGVjb2RlSW5k
ZXgpIC0gbV9ieXRlY29kZS5iZWdpbigpOworfQorCitjb25zdCBCeXRlY29kZSYgQnl0ZWNvZGVz
Ojpmb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGF0KGluZGV4Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KSk7Cit9CisKK3Zv
aWQgQnl0ZWNvZGVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnBy
aW50KCIjIiwgbV9oYXNoLCAiKCIsIG1faWQsICIpIik7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVj
b2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBC
eXRlY29kZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBCeXRlY29kZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUEJ5dGVjb2Rl
c19oCisjZGVmaW5lIFBCUEJ5dGVjb2Rlc19oCisKKyNpbmNsdWRlICJQQlBCeXRlY29kZS5oIgor
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlcyB7CitwdWJsaWM6CisgICAgQnl0ZWNvZGVzKHNpemVf
dCBpZCwgQ29kZUJsb2NrSGFzaCBoYXNoKTsKKyAgICB+Qnl0ZWNvZGVzKCk7CisgICAgCisgICAg
dm9pZCBhcHBlbmQoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlKSB7IG1fYnl0ZWNvZGUuYXBwZW5k
KGJ5dGVjb2RlKTsgfQorICAgIAorICAgIHNpemVfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICBDb2RlQmxvY2tIYXNoIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKyAg
ICAKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBub3QgaW5kZXhlZCBi
eSBieXRlY29kZSBpbmRleC4KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
eXRlY29kZS5zaXplKCk7IH0KKyAgICBjb25zdCBCeXRlY29kZSYgYXQodW5zaWduZWQgaSkgY29u
c3QgeyByZXR1cm4gbV9ieXRlY29kZVtpXTsgfQorICAgIAorICAgIHVuc2lnbmVkIGluZGV4Rm9y
Qnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsKKyAgICBjb25zdCBC
eXRlY29kZSYgZm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsK
KyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6
CisgICAgc2l6ZV90IG1faWQ7CisgICAgQ29kZUJsb2NrSGFzaCBtX2hhc2g7CisgICAgVmVjdG9y
PEJ5dGVjb2RlPiBtX2J5dGVjb2RlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAor
CisjZW5kaWYgLy8gUEJQQnl0ZWNvZGVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uX2gKKyNkZWZpbmUgUEJQQ29tcGlsYXRpb25faAor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKKy8vIFJlcHJlc2VudHMgdGhlIGFj
dCBvZiBleGVjdXRpbmcgc29tZSBieXRlY29kZXMgaW4gc29tZSBlbmdpbmUsIGFuZCBkb2VzCisv
LyBhbGwgb2YgdGhlIGNvdW50aW5nIGZvciB0aG9zZSBleGVjdXRpb25zLgorCitjbGFzcyBDb21w
aWxhdGlvbiB7CitwdWJsaWM6CisgICAgQ29tcGlsYXRpb24oUEJQQnl0ZWNvZGVzKiwgQ29tcGls
YXRpb25LaW5kKTsKKyAgICB+Q29tcGlsYXRpb24oKTsKKyAgICAKKyAgICB2b2lkIGFkZERlc2Ny
aXB0aW9uKGNvbnN0IENvbXBpbGVkQnl0ZWNvZGUmKTsKKyAgICBFeGVjdXRpb25Db3VudGVyKiBl
eGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJik7CisgICAgCitwcml2YXRlOgor
ICAgIENvbXBpbGF0aW9uS2luZCBtX2tpbmQ7CisgICAgVmVjdG9yPENvbXBpbGVkQnl0ZWNvZGU+
IG1fZGVzY3JpcHRpb25zOworICAgIEhhc2hNYXA8T3JpZ2luU3RhY2ssIE93blB0cjxFeGVjdXRp
b25Db3VudGVyPj4gbV9jb3VudGVyczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAK
KworI2VuZGlmIC8vIFBCUENvbXBpbGF0aW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uS2luZF9oCisjZGVmaW5l
IFBCUENvbXBpbGF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsK
KworZW51bSBDb21waWxhdGlvbktpbmQgeyBMTEludCwgQmFzZWxpbmUsIERGRyB9OworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBDb21waWxhdGlvbktpbmRfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21w
aWxlZEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UEJQQ29tcGlsZWRCeXRlY29kZV9oCisjZGVmaW5lIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAorCisj
aW5jbHVkZSAiUEJQT3JpZ2luU3RhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQ
QlAgeworCitjbGFzcyBDb21waWxlZEJ5dGVjb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBJdCdzIHZh
bGlkIHRvIGhhdmUgYW4gZW1wdHkgT3JpZ2luU3RhY2ssIHdoaWNoIGluZGljYXRlcyB0aGF0IHRo
aXMgaXMgc29tZQorICAgIC8vIHNvcnQgb2Ygbm9uLWJ5dGVjb2RlLXJlbGF0ZWQgbWFjaGluZSBj
b2RlLgorICAgIENvbXBpbGVkQnl0ZWNvZGUoY29uc3QgT3JpZ2luU3RhY2smLCBjb25zdCBDU3Ry
aW5nJiBkZXNjcmlwdGlvbik7CisgICAgfkNvbXBpbGVkQnl0ZWNvZGUoKTsKKyAgICAKKyAgICBj
b25zdCBPcmlnaW5TdGFjayYgb3JpZ2luU3RhY2soKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsg
fQorICAgIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNj
cmlwdGlvbjsgfQorICAgIAorcHJpdmF0ZToKKyAgICBPcmlnaW5TdGFjayBtX29yaWdpbjsKKyAg
ICBDU3RyaW5nIG1fZGVzY3JpcHRpb247Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQ
CisKKyNlbmRpZiAvLyBQQlBDb21waWxlZEJ5dGVjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQRGF0YWJhc2UuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitEYXRhYmFzZTo6RGF0YWJhc2Uo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEp
Cit7Cit9CisKK0J5dGVjb2RlcyogRGF0YWJhc2U6OmFkZEJ5dGVjb2RlcyhDb2RlQmxvY2tIYXNo
IGhhc2gpCit7CisgICAgbV9ieXRlY29kZXMuYXBwZW5kKEJ5dGVjb2RlcyhtX2J5dGVjb2Rlcy5z
aXplKCksIGhhc2gpKTsKKyAgICByZXR1cm4gJm1fYnl0ZWNvZGVzLmxhc3QoKTsKK30KKworQnl0
ZWNvZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayogY29kZUJsb2Nr
KQoreworICAgIGNvZGVCbG9jayA9IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCk7CisgICAg
CisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29kZXMqPjo6aXRlcmF0b3IgaXRlciA9IG1f
Ynl0ZWNvZGVzTWFwLmZpbmQoY29kZUJsb2NrKTsKKyAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2Rl
c01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOworICAgIAorICAgIEJ5dGVj
b2RlcyogcmVzdWx0ID0gYWRkQnl0ZWNvZGVzKGNvZGVCbG9jay0+aGFzaCgpKTsKKyAgICAKKyAg
ICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSAwOyBieXRlY29kZUluZGV4IDwgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7KSB7CisgICAgICAgIFN0cmluZ1ByaW50U3RyZWFt
IG91dDsKKyAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4
KTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3V0LnRv
Q1N0cmluZygpKSk7CisgICAgICAgIAorICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29kZUxl
bmd0aCgKKyAgICAgICAgICAgIG1fZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4
XS51Lm9wY29kZSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lk
IERhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAg
ICAvLyBXZSBvbmx5IGRvIHRoaW5ncyBmb3IgYmFzZWxpbmUgY29kZSBibG9ja3MuCisgICAgaWYg
KGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkgIT0gY29kZUJsb2NrKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV9ieXRlY29kZXNNYXAucmVtb3ZlKGNvZGVCbG9jayk7Cit9CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1BCUERhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUERhdGFiYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFBCUERhdGFiYXNlX2gKKyNkZWZpbmUgUEJQRGF0YWJhc2VfaAorCisjaW5jbHVkZSAiUEJQQnl0
ZWNvZGVzLmgiCisjaW5jbGR1ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU2VnbWVu
dGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3Mg
RGF0YWJhc2UgeworcHVibGljOgorICAgIERhdGFiYXNlKEpTR2xvYmFsRGF0YSYpOworICAgIAor
ICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayopOworICAgIHZvaWQg
bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKik7CisgICAgCisgICAgQ29tcGlsYXRpb24qIG5l
d0NvbXBpbGF0aW9uKENvZGVCbG9jayosIENvbXBpbGF0aW9uS2luZCk7CisgICAgQ29tcGlsYXRp
b24qIG5ld0NvbXBpbGF0aW9uKEJ5dGVjb2RlcyosIENvbXBpbGF0aW9uS2luZCk7CisKK3ByaXZh
dGU6CisgICAgQnl0ZWNvZGVzKiBhZGRCeXRlY29kZXMoQ29kZUJsb2NrSGFzaCk7CisgICAgCisg
ICAgSlNHbG9iYWxEYXRhJiBtX2dsb2JhbERhdGE7CisgICAgU2VnbWVudGVkVmVjdG9yPEJ5dGVj
b2Rlcz4gbV9ieXRlY29kZXM7CisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29kZXMqPiBt
X2J5dGVjb2Rlc01hcDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlm
IC8vIFBCUERhdGFiYXNlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIFBCUEV4ZWN1dGlvbkNvdW50ZXJfaAorI2RlZmluZSBQQlBFeGVj
dXRpb25Db3VudGVyX2gKKworI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsK
KworY2xhc3MgRXhlY3V0aW9uQ291bnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
IFdURl9NQUtFX05PTkNPUFlBQkxFKEV4ZWN1dGlvbkNvdW50ZXIpOworcHVibGljOgorICAgIEV4
ZWN1dGlvbkNvdW50ZXIoKSA6IG1fY291bnRlcigwKSB7IH0KKyAgICAKKyAgICB1aW50NjRfdCog
YWRkcmVzcygpIHsgcmV0dXJuICZtX2NvdW50ZXI7IH0KKyAgICAKKyAgICB1aW50NjRfdCBjb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnRlcjsgfQorCitwcml2YXRlOgorICAgIHVpbnQ2NF90
IG1fY291bnRlcjsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8v
IFBCUEV4ZWN1dGlvbkNvdW50ZXJfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQT3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQT3JpZ2luLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBPcmlnaW4uaCIKKworI2luY2x1ZGUgIlBCUEJ5dGVj
b2Rlcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK09yaWdpbjo6T3Jp
Z2luKERhdGFiYXNlJiBkYXRhYmFzZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpCisgICAgOiBtX2J5dGVjb2RlcyhkYXRhYmFzZS5lbnN1cmVCeXRlY29kZXNG
b3IoY29kZUJsb2NrKSkKKyAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQorewor
fQorCit2b2lkIE9yaWdpbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91
dC5wcmludCgqbV9ieXRlY29kZXMsICI6YmMjIiwgbV9ieXRlY29kZUluZGV4KTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1BCUE9yaWdpbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUE9yaWdpbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUE9y
aWdpbl9oCisjZGVmaW5lIFBCUE9yaWdpbl9oCisKKyNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBCeXRlY29kZXM7Citj
bGFzcyBEYXRhYmFzZTsKKworY2xhc3MgT3JpZ2luIHsKK3B1YmxpYzoKKyAgICBPcmlnaW4oKQor
ICAgICAgICA6IG1fYnl0ZWNvZGVJbmRleChVSU5UX01BWCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIE9yaWdpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9i
eXRlY29kZUluZGV4KFVJTlRfTUFYIC0gMSkKKyAgICB7CisgICAgfQorICAgIAorICAgIE9yaWdp
bihCeXRlY29kZXMqIGJ5dGVjb2RlcywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICAgICAg
OiBtX2J5dGVjb2RlcyhieXRlY29kZXMpCisgICAgICAgICwgbV9ieXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4IDwgVUlOVF9N
QVggLSAxKTsKKyAgICB9CisgICAgCisgICAgT3JpZ2luKERhdGFiYXNlJiwgQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXggPT0gVUlOVF9NQVg7IH0KKyAgICAKKyAgICBCeXRl
Y29kZXMqIGJ5dGVjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVzOyB9CisgICAgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmlnaW4mKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0OworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitw
cml2YXRlOgorICAgIEJ5dGVjb2RlcyogbV9ieXRlY29kZXM7CisgICAgdW5zaWduZWQgbV9ieXRl
Y29kZUluZGV4OworfTsKKworaW5saW5lIGJvb2wgT3JpZ2luOjpvcGVyYXRvcj09KGNvbnN0IE9y
aWdpbiYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnl0ZWNvZGVzID09IG90aGVyLm1f
Ynl0ZWNvZGVzCisgICAgICAgICYmIG1fYnl0ZWNvZGVJbmRleCA9PSBvdGhlci5tX2J5dGVjb2Rl
SW5kZXg7Cit9CisKK2lubGluZSB1bnNpZ25lZCBPcmlnaW46Omhhc2goKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OlB0ckhhc2g8Qnl0ZWNvZGVzKj46Omhhc2gobV9ieXRlY29kZXMpICsgbV9i
eXRlY29kZUluZGV4OworfQorCitpbmxpbmUgYm9vbCBPcmlnaW46OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ieXRlY29kZUluZGV4ID09IFVJTlRfTUFY
IC0gMTsKK30KKworc3RydWN0IE9yaWdpbkhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IE9yaWdpbiYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgT3JpZ2luJiBhLCBjb25zdCBPcmlnaW4mIGIpIHsgcmV0dXJuIGEgPT0g
YjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gdHJ1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlBCUDo6T3JpZ2luPiB7CisgICAgdHlwZWRlZiBKU0M6
OlBCUDpPcmlnaW5IYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpQQlA6T3JpZ2lu
PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlBCUDo6T3JpZ2luPiB7IH07CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUEJQT3JpZ2luX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQ
T3JpZ2luU3RhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitPcmln
aW5TdGFjazo6T3JpZ2luU3RhY2soV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorewor
ICAgIG1fc3RhY2suYXBwZW5kKE9yaWdpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpCit9
CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhjb25zdCBPcmlnaW4mIG9yaWdpbikKK3sKKyAg
ICBtX3N0YWNrLmFwcGVuZChvcmlnaW4pCit9CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhE
YXRhYmFzZSYgZGF0YWJhc2UsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luKQoreworICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBzdGFjayA9IGNvZGVPcmln
aW4uaW5saW5lU3RhY2soKTsKKyAgICAKKyAgICBhcHBlbmQoT3JpZ2luKGRhdGFiYXNlLCBjb2Rl
QmxvY2ssIHN0YWNrWzBdLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgc3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXBwZW5kKE9yaWdpbigK
KyAgICAgICAgICAgIGRhdGFiYXNlLmVuc3VyZUJ5dGVjb2Rlc0ZvcihzdGFja1tpXS5pbmxpbmVD
YWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrKCkpLAorICAgICAgICAgICAgc3RhY2tbaV0uYnl0
ZWNvZGVJbmRleCkpOworICAgIH0KK30KKworT3JpZ2luU3RhY2s6On5PcmlnaW5TdGFjaygpIHsg
fQorCit2b2lkIE9yaWdpblN0YWNrOjphcHBlbmQoY29uc3QgT3JpZ2luJiBvcmlnaW4pCit7Cisg
ICAgbV9zdGFjay5hcHBlbmQob3JpZ2luKQorfQorCitib29sIE9yaWdpblN0YWNrOjpvcGVyYXRv
cj09KGNvbnN0IE9yaWdpblN0YWNrJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9zdGFjay5z
aXplKCkgIT0gb3RoZXIubV9zdGFjay5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAg
ICBpZiAobV9zdGFja1tpXSAhPSBvdGhlci5tX3N0YWNrW2ldKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgT3Jp
Z2luU3RhY2s6Omhhc2goKSBjb25zdAoreworICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fc3RhY2su
c2l6ZSgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc3RhY2suc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgIHJlc3VsdCAqPSAzOworICAgICAgICByZXN1bHQgKz0gbV9zdGFja1tpXS5o
YXNoKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UE9yaWdpblN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUE9yaWdpblN0YWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFBCUE9yaWdpblN0YWNrX2gKKyNkZWZpbmUgUEJQT3JpZ2luU3RhY2tfaAorCisjaW5jbHVkZSAi
UEJQT3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBDb2RlQmxvY2s7CitzdHJ1Y3QgQ29kZU9yaWdpbjsKKworbmFtZXNwYWNlIFBCUCB7
CisKK2NsYXNzIERhdGFiYXNlOworCitjbGFzcyBPcmlnaW5TdGFjayB7CitwdWJsaWM6CisgICAg
T3JpZ2luU3RhY2soKSB7IH0KKyAgICAKKyAgICBPcmlnaW5TdGFjayhXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpOworICAgIAorICAgIGV4cGxpY2l0IE9yaWdpblN0YWNrKGNvbnN0IE9y
aWdpbiYgb3JpZ2luKTsKKyAgICAKKyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhEYXRhYmFzZSYs
IENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mKTsKKyAgICAKKyAgICB+T3JpZ2luU3RhY2so
KTsKKyAgICAKKyAgICB2b2lkIGFwcGVuZChjb25zdCBPcmlnaW4mIG9yaWdpbik7CisgICAgCisg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLmlzRW1wdHkoKTsgfQor
ICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLnNpemUoKTsg
fQorICAgIGNvbnN0IE9yaWdpbiYgZnJvbUJvdHRvbSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVy
biBtX3N0YWNrW2ldOyB9CisgICAgY29uc3QgT3JpZ2luJiBmcm9tVG9wKHVuc2lnbmVkIGkpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhY2tbbV9zdGFjay5zaXplKCkgLSBpIC0gMV07IH0KKyAgICAKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3JpZ2luU3RhY2smKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0OworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAor
cHJpdmF0ZToKKyAgICBWZWN0b3I8T3JpZ2luLCAxPiBtX3N0YWNrOworfTsKKworaW5saW5lIGJv
b2wgT3JpZ2luU3RhY2s6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zdGFjay5zaXplKCkgPT0gMSAmJiBtX3N0YWNrWzBdLmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBC
UE9yaWdpblN0YWNrX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177062</attachid>
            <date>2012-11-30 17:23:59 -0800</date>
            <delta_ts>2012-12-01 16:13:28 -0800</delta_ts>
            <desc>moar</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>118896</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDMzICsxODIsMzMgQEAgTkVWRVJfSU5MSU5F
IHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z0hvbwogICAgIHJldHVybiAiIjsKIH0KIAotdm9pZCBD
b2RlQmxvY2s6OnByaW50VW5hcnlPcChFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApCit2b2lkIENvZGVCbG9jazo6cHJp
bnRVbmFyeU9wKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9u
LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKIAot
ICAgIGRhdGFMb2dGKCJbJTRkXSAlc1x0XHQgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwot
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICBvdXQucHJp
bnRmKCJbJTRkXSAlc1x0XHQgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogfQogCi12b2lkIENvZGVC
bG9jazo6cHJpbnRCaW5hcnlPcChFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApCit2b2lkIENvZGVCbG9jazo6cHJpbnRC
aW5hcnlPcChQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApCiB7CiAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
aW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZ0YoIlslNGRdICVzXHRcdCAl
cywgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKLSAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
b3V0LnByaW50ZigiWyU0ZF0gJXNcdFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRDb25k
aXRpb25hbEp1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IElu
c3RydWN0aW9uKiYgaXQsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApCit2b2lkIENvZGVC
bG9jazo6cHJpbnRDb25kaXRpb25hbEp1bXAoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGludCBsb2Nh
dGlvbiwgY29uc3QgY2hhciogb3ApCiB7CiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2dGKCJbJTRk
XSAlc1x0XHQgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgIG91dC5wcmludGYoIlslNGRdICVzXHRc
dCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiom
IGl0KQordm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiBvdXQsIEV4
ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KQogewog
ICAgIGNvbnN0IGNoYXIqIG9wOwogICAgIHN3aXRjaCAoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0
T3Bjb2RlSUQoaXQtPnUub3Bjb2RlKSkgewpAQCAtMjYxLDI4ICsyNjEsMjggQEAgdm9pZCBDb2Rl
QmxvY2s6OnByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBpZDAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdCAlcywgJXMsICVzIiwg
bG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
KTsKKyAgICBvdXQucHJpbnRmKCJbJTRkXSAlc1x0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3As
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOwogICAgIGl0ICs9
IDU7CiB9CiAKICNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpIC8vIHVudXNlZCBpbiBz
b21lIGNvbmZpZ3VyYXRpb25zCi1zdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKGNvbnN0IGNoYXIq
IG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElkZW50aWZpZXIm
IGlkZW50KQorc3RhdGljIHZvaWQgZHVtcFN0cnVjdHVyZShQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBjaGFyKiBuYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJZGVu
dGlmaWVyJiBpZGVudCkKIHsKICAgICBpZiAoIXN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIGRhdGFMb2dGKCIlcyA9ICVwIiwgbmFtZSwgc3RydWN0dXJlKTsKKyAgICBvdXQu
cHJpbnRmKCIlcyA9ICVwIiwgbmFtZSwgc3RydWN0dXJlKTsKICAgICAKICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldChleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50KTsK
ICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCi0gICAgICAgIGRhdGFMb2dGKCIgKG9m
ZnNldCA9ICVkKSIsIG9mZnNldCk7CisgICAgICAgIG91dC5wcmludGYoIiAob2Zmc2V0ID0gJWQp
Iiwgb2Zmc2V0KTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEpJVCkgLy8gdW51c2VkIHdoZW4g
bm90IEVOQUJMRShKSVQpLCBsZWFkaW5nIHRvIHNpbGx5IHdhcm5pbmdzCi1zdGF0aWMgdm9pZCBk
dW1wQ2hhaW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIElkZW50aWZp
ZXImIGlkZW50KQorc3RhdGljIHZvaWQgZHVtcENoYWluKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBJZGVudGlmaWVyJiBpZGVudCkKIHsK
LSAgICBkYXRhTG9nRigiY2hhaW4gPSAlcDogWyIsIGNoYWluKTsKKyAgICBvdXQucHJpbnRmKCJj
aGFpbiA9ICVwOiBbIiwgY2hhaW4pOwogICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgIGZvciAo
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGN1cnJlbnRTdHJ1Y3R1cmUgPSBjaGFpbi0+aGVhZCgp
OwogICAgICAgICAgKmN1cnJlbnRTdHJ1Y3R1cmU7CkBAIC0yOTEsMTMgKzI5MSwxMyBAQCBzdGF0
aWMgdm9pZCBkdW1wQ2hhaW4oRXhlY1N0YXRlKiBleGVjLCBTCiAgICAgICAgICAgICBmaXJzdCA9
IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkYXRhTG9nRigiLCAiKTsKLSAgICAg
ICAgZHVtcFN0cnVjdHVyZSgic3RydWN0IiwgZXhlYywgY3VycmVudFN0cnVjdHVyZS0+Z2V0KCks
IGlkZW50KTsKKyAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBleGVjLCBjdXJy
ZW50U3RydWN0dXJlLT5nZXQoKSwgaWRlbnQpOwogICAgIH0KLSAgICBkYXRhTG9nRigiXSIpOwor
ICAgIG91dC5wcmludGYoIl0iKTsKIH0KICNlbmRpZgogCi12b2lkIENvZGVCbG9jazo6cHJpbnRH
ZXRCeUlkQ2FjaGVTdGF0dXMoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24pCit2b2lkIENv
ZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0
YXRlKiBleGVjLCBpbnQgbG9jYXRpb24pCiB7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC0zMDcsMjEgKzMwNywy
MSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoCiAgICAgCiAjaWYg
RU5BQkxFKExMSU5UKQogICAgIGlmIChleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfZ2V0X2FycmF5X2xlbmd0aCkKLSAgICAgICAg
ZGF0YUxvZ0YoIiBsbGludChhcnJheV9sZW5ndGgpIik7CisgICAgICAgIG91dC5wcmludGYoIiBs
bGludChhcnJheV9sZW5ndGgpIik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAgIGRhdGFM
b2dGKCIgbGxpbnQoIik7Ci0gICAgICAgIGR1bXBTdHJ1Y3R1cmUoInN0cnVjdCIsIGV4ZWMsIHN0
cnVjdHVyZSwgaWRlbnQpOwotICAgICAgICBkYXRhTG9nRigiKSIpOworICAgICAgICBvdXQucHJp
bnRmKCIgbGxpbnQoIik7CisgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgZXhl
Yywgc3RydWN0dXJlLCBpZGVudCk7CisgICAgICAgIG91dC5wcmludGYoIikiKTsKICAgICB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKG51bWJlck9mU3RydWN0dXJlU3R1Yklu
Zm9zKCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoIiBqaXQoIik7CisgICAgICAgIG91dC5wcmludGYo
IiBqaXQoIik7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGdldFN0dWJJ
bmZvKGxvY2F0aW9uKTsKICAgICAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICAgICAg
ZGF0YUxvZ0YoIm5vdCBzZWVuIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJub3Qgc2VlbiIp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSA9
IDA7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IDA7CkBAIC0z
MzEsNDAgKzMzMSw0MCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkg
ewogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6Ci0gICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoInNlbGYiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJzZWxmIik7
CiAgICAgICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYu
YmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoKLSAgICAgICAgICAgICAgICBkYXRh
TG9nRigicHJvdG8iKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJwcm90byIpOwogICAg
ICAgICAgICAgICAgIGJhc2VTdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRQcm90by5iYXNl
T2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgICAgIHByb3RvdHlwZVN0cnVjdHVy
ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZS5nZXQoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9j
aGFpbjoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiY2hhaW4iKTsKKyAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCJjaGFpbiIpOwogICAgICAgICAgICAgICAgIGJhc2VTdHJ1Y3R1cmUgPSBz
dHViSW5mby51LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAg
ICAgICAgICAgIGNoYWluID0gc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uY2hhaW4uZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
c2VsZl9saXN0OgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJzZWxmX2xpc3QiKTsKKyAgICAg
ICAgICAgICAgICBvdXQucHJpbnRmKCJzZWxmX2xpc3QiKTsKICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmVMaXN0ID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKICAg
ICAgICAgICAgICAgICBsaXN0U2l6ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RT
aXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0
X2J5X2lkX3Byb3RvX2xpc3Q6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoInByb3RvX2xpc3Qi
KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJwcm90b19saXN0Iik7CiAgICAgICAgICAg
ICAgICAgc3RydWN0dXJlTGlzdCA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5zdHJ1Y3R1
cmVMaXN0OwogICAgICAgICAgICAgICAgIGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkUHJv
dG9MaXN0Lmxpc3RTaXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoInVuc2V0Iik7CisgICAg
ICAgICAgICAgICAgb3V0LnByaW50ZigidW5zZXQiKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9nZW5lcmljOgotICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCJnZW5lcmljIik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiZ2Vu
ZXJpYyIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X2FycmF5X2xlbmd0aDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiYXJyYXlfbGVuZ3Ro
Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiYXJyYXlfbGVuZ3RoIik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0
aDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigic3RyaW5nX2xlbmd0aCIpOworICAgICAgICAg
ICAgICAgIG91dC5wcmludGYoInN0cmluZ19sZW5ndGgiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0zNzIsMTI1ICszNzIsMTI2IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5
SWRDYWNoZVN0YXR1cygKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKGJhc2VTdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCAiKTsKLSAg
ICAgICAgICAgICAgICBkdW1wU3RydWN0dXJlKCJzdHJ1Y3QiLCBleGVjLCBiYXNlU3RydWN0dXJl
LCBpZGVudCk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAg
ICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGV4ZWMsIGJhc2VTdHJ1Y3R1cmUsIGlk
ZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHByb3Rv
dHlwZVN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAgICAg
ICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUoInByb3RvdHlwZVN0cnVjdCIsIGV4ZWMsIGJhc2VTdHJ1
Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAgICAg
ICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAicHJvdG90eXBlU3RydWN0IiwgZXhlYywgYmFz
ZVN0cnVjdHVyZSwgaWRlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoY2hhaW4pIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCAiKTsKLSAgICAg
ICAgICAgICAgICBkdW1wQ2hhaW4oZXhlYywgY2hhaW4sIGlkZW50KTsKKyAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCIsICIpOworICAgICAgICAgICAgICAgIGR1bXBDaGFpbihvdXQsIGV4ZWMs
IGNoYWluLCBpZGVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChzdHJ1Y3R1cmVMaXN0KSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgbGlzdCA9
ICVwOiBbIiwgc3RydWN0dXJlTGlzdCk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZihvdXQs
ICIsIGxpc3QgPSAlcDogWyIsIHN0cnVjdHVyZUxpc3QpOwogICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
aSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nRigiKCIpOwotICAgICAgICAgICAgICAgICAgICBkdW1wU3RydWN0dXJl
KCJiYXNlIiwgZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS5iYXNlLmdldCgpLCBpZGVudCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIoIik7CisgICAgICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1
cmUob3V0LCAiYmFzZSIsIGV4ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0uYmFzZS5nZXQoKSwg
aWRlbnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlTGlzdC0+bGlzdFtpXS5p
c0NoYWluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlTGlzdC0+bGlz
dFtpXS51LmNoYWluLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0YoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcENoYWluKGV4ZWMsIHN0
cnVjdHVyZUxpc3QtPmxpc3RbaV0udS5jaGFpbi5nZXQoKSwgaWRlbnQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZHVtcENoYWluKG91dCwgZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS51LmNoYWlu
LmdldCgpLCBpZGVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlTGlz
dC0+bGlzdFtpXS51LnByb3RvLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0YoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVy
ZSgicHJvdG8iLCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLnUucHJvdG8uZ2V0KCksIGlk
ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAicHJvdG8iLCBleGVj
LCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLnUucHJvdG8uZ2V0KCksIGlkZW50KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nRigiKSIpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIpIik7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJdIik7CisgICAg
ICAgICAgICAgICAgb3V0LnByaW50ZigiXSIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIGRhdGFMb2dGKCIpIik7CisgICAgICAgIG91dC5wcmludGYoIikiKTsKICAgICB9CiAj
ZW5kaWYKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50Q2FsbE9wKEV4ZWNTdGF0ZSogZXhlYywg
aW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2Fj
aGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlKQordm9pZCBDb2RlQmxvY2s6OnByaW50Q2FsbE9wKFBy
aW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0
cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2Rl
KQogewogICAgIGludCBmdW5jID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGFyZ0NvdW50
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZ0YoIlslNGRdICVzXHQgJXMsICVkLCAlZCIsIGxvY2F0aW9u
LCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmMpLmRhdGEoKSwgYXJnQ291bnQsIHJlZ2lzdGVy
T2Zmc2V0KTsKKyAgICBvdXQucHJpbnRmKCJbJTRkXSAlc1x0ICVzLCAlZCwgJWQiLCBsb2NhdGlv
biwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jKS5kYXRhKCksIGFyZ0NvdW50LCByZWdpc3Rl
ck9mZnNldCk7CiAgICAgaWYgKGNhY2hlRHVtcE1vZGUgPT0gRHVtcENhY2hlcykgewogI2lmIEVO
QUJMRShMTElOVCkKICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGl0
WzFdLnUuY2FsbExpbmtJbmZvOwogICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNh
bGxlZSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIiBsbGludCglcCwgZXhlYyAlcCkiLAotICAg
ICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpLAotICAg
ICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLT5leGVjdXRhYmxl
KCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigKKyAgICAgICAgICAgICAgICAiIGxsaW50KCVw
LCBleGVjICVwKSIsCisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxl
ZS5nZXQoKSwKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLT5l
eGVjdXRhYmxlKCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgbGxp
bnQobm90IHNldCkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiBsbGludChub3Qgc2V0KSIp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgaWYgKG51bWJlck9mQ2FsbExpbmtJ
bmZvcygpKSB7CiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBnZXRDYWxsTGlua0lu
Zm8obG9jYXRpb24pLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwogICAgICAgICAgICAgaWYgKHRhcmdl
dCkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiIGppdCglcCwgZXhlYyAlcCkiLCB0YXJnZXQs
IHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0
KCVwLCBleGVjICVwKSIsIHRhcmdldCwgdGFyZ2V0LT5leGVjdXRhYmxlKCkpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgaml0KG5vdCBzZXQpIik7CisgICAg
ICAgICAgICAgICAgb3V0LnByaW50ZigiIGppdChub3Qgc2V0KSIpOwogICAgICAgICB9CiAjZW5k
aWYKICAgICB9Ci0gICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgIGl0
ICs9IDI7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqIGV4
ZWMsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3Ap
Cit2b2lkIENvZGVCbG9jazo6cHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0
YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNo
YXIqIG9wKQogewogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBpZDAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICBkYXRhTG9nRigiWyU0ZF0gJXNcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNcdCAl
cywgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpKTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxv
Y2F0aW9uKTsKICAgICBpdCArPSA1OwogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1
cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgaW50IG9wZXJhbmQp
Cit2b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgaW50IG9wZXJhbmQpCiB7CiAgICAg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQgPSB2UEMgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwotICAgIGRhdGFMb2dGKCIgIFslNGRdICVzOiAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsIG5h
bWUsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbb3BlcmFuZF0udS5zdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCkpOworICAgIG91dC5wcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgbmFtZSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1tvcGVyYW5kXS51LnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVy
ZXMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVy
ZXMoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykKIHsKICAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOwogICAgIHVu
c2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0ID0gdlBDIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
IAogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9n
ZXRfYnlfaWQpKSB7Ci0gICAgICAgIHByaW50U3RydWN0dXJlKCJnZXRfYnlfaWQiLCB2UEMsIDQp
OworICAgICAgICBwcmludFN0cnVjdHVyZShvdXQsICJnZXRfYnlfaWQiLCB2UEMsIDQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfc2VsZikpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1
cmUoImdldF9ieV9pZF9zZWxmIiwgdlBDLCA0KTsKKyAgICAgICAgcHJpbnRTdHJ1Y3R1cmUob3V0
LCAiZ2V0X2J5X2lkX3NlbGYiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlf
aWRfcHJvdG8pKSB7Ci0gICAgICAgIGRhdGFMb2dGKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGlu
c3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291cmNlU3RyaW5n
KHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5n
KHZQQ1s1XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG91dC5wcmludGYo
IiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfcHJv
dG8iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0
YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7Ci0gICAg
ICAgIGRhdGFMb2dGKCIgIFslNGRdICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNl
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51
LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51
LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s2XS51
LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgb3V0LnByaW50ZigiICBb
JTRkXSAlczogJXMsICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJwdXRfYnlfaWRfdHJh
bnNpdGlvbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbiku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikpIHsK
LSAgICAgICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZz
ZXQsICJnZXRfYnlfaWRfY2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3Ry
dWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3Ry
dWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnRmKCIgIFslNGRd
ICVzOiAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9p
bnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9p
bnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKSkgewotICAgICAgICBwcmludFN0cnVj
dHVyZSgicHV0X2J5X2lkIiwgdlBDLCA0KTsKKyAgICAgICAgcHJpbnRTdHJ1Y3R1cmUob3V0LCAi
cHV0X2J5X2lkIiwgdlBDLCA0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxh
Y2UpKSB7Ci0gICAgICAgIHByaW50U3RydWN0dXJlKCJwdXRfYnlfaWRfcmVwbGFjZSIsIHZQQywg
NCk7CisgICAgICAgIHByaW50U3RydWN0dXJlKG91dCwgInB1dF9ieV9pZF9yZXBsYWNlIiwgdlBD
LCA0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDk4LDcgKzQ5OSw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4KICAgICBBU1NFUlQodlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpIHx8
IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9n
ZW5lcmljKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9j
YWxsKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9jYWxs
X2V2YWwpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2Nv
bnN0cnVjdCkpOwogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKK3ZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKIHsKICAgICAvLyBXZSBvbmx5
IHVzZSB0aGUgRXhlY1N0YXRlKiBmb3IgdGhpbmdzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgbGVhZCB0
byBKUyBleGVjdXRpb24sCiAgICAgLy8gbGlrZSBjb252ZXJ0aW5nIGEgSlNTdHJpbmcgdG8gYSBT
dHJpbmcuIEhlbmNlIHRoZSBnbG9iYWxFeGVjIGlzIGFwcHJvcHJpYXRlLgpAQCAtNTA5LDkyICs1
MTAsOTIgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVj
LT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSld
KQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBkYXRhTG9nKCp0aGlzKTsKLSAg
ICBkYXRhTG9nRigKKyAgICBvdXQucHJpbnQoKnRoaXMpOworICAgIG91dC5wcmludGYoCiAgICAg
ICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVk
IGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAogICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkpLAogICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1
Y3Rpb24pKSwKICAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywg
bV9udW1WYXJzKTsKICAgICBpZiAoc3ltYm9sVGFibGUoKSAmJiBzeW1ib2xUYWJsZSgpLT5jYXB0
dXJlQ291bnQoKSkKLSAgICAgICAgZGF0YUxvZ0YoIjsgJWQgY2FwdHVyZWQgdmFyKHMpIiwgc3lt
Ym9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCkpOworICAgICAgICBvdXQucHJpbnRmKCI7ICVkIGNh
cHR1cmVkIHZhcihzKSIsIHN5bWJvbFRhYmxlKCktPmNhcHR1cmVDb3VudCgpKTsKICAgICBpZiAo
dXNlc0FyZ3VtZW50cygpKSB7Ci0gICAgICAgIGRhdGFMb2dGKAorICAgICAgICBvdXQucHJpbnRm
KAogICAgICAgICAgICAgIjsgdXNlcyBhcmd1bWVudHMsIGluIHIlZCwgciVkIiwKICAgICAgICAg
ICAgIGFyZ3VtZW50c1JlZ2lzdGVyKCksCiAgICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIoKSkpOwogICAgIH0KICAgICBpZiAobmVlZHNGdWxs
U2NvcGVDaGFpbigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBkYXRh
TG9nRigiOyBhY3RpdmF0aW9uIGluIHIlZCIsIGFjdGl2YXRpb25SZWdpc3RlcigpKTsKLSAgICBk
YXRhTG9nRigiXG5cbiIpOworICAgICAgICBvdXQucHJpbnRmKCI7IGFjdGl2YXRpb24gaW4gciVk
IiwgYWN0aXZhdGlvblJlZ2lzdGVyKCkpOworICAgIG91dC5wcmludGYoIlxuXG4iKTsKIAogICAg
IGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwogICAgIGZvciAo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
ZHVtcEJ5dGVjb2RlKGV4ZWMsIGJlZ2luLCBpdCk7CisgICAgICAgIGR1bXBCeXRlY29kZShvdXQs
IGV4ZWMsIGJlZ2luLCBpdCk7CiAKICAgICBpZiAoIW1faWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGRhdGFMb2dGKCJcbklkZW50aWZpZXJzOlxuIik7CisgICAgICAgIG91dC5wcmlu
dGYoIlxuSWRlbnRpZmllcnM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAgICBk
byB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICBpZCV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpKSwgbV9pZGVudGlmaWVyc1tpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiAgaWQldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaSksIG1faWRlbnRpZmllcnNbaV0uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgIT0gbV9pZGVudGlmaWVycy5zaXplKCkpOwog
ICAgIH0KIAogICAgIGlmICghbV9jb25zdGFudFJlZ2lzdGVycy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgZGF0YUxvZ0YoIlxuQ29uc3RhbnRzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuQ29u
c3RhbnRzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAg
ICAgICAgZGF0YUxvZ0YoIiAgIGsldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSks
IHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhlYywgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5nZXQoKSku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICBrJXUgPSAlc1xuIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIG1fY29u
c3RhbnRSZWdpc3RlcnNbaV0uZ2V0KCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgKytp
OwogICAgICAgICB9IHdoaWxlIChpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCkpOwogICAg
IH0KIAogICAgIGlmIChzaXplX3QgY291bnQgPSBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZSZWdF
eHBzKCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxubV9yZWdleHBzOlxuIik7CisgICAgICAgIG91
dC5wcmludGYoIlxubV9yZWdleHBzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAg
ICAgZG8gewotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgcmUldSA9ICVzXG4iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaSksIHJlZ2V4cFRvU291cmNlU3RyaW5nKG1fdW5saW5rZWRDb2RlLT5yZWdl
eHAoaSkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICByZSV1ID0g
JXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV91
bmxpbmtlZENvZGUtPnJlZ2V4cChpKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICArK2k7
CiAgICAgICAgIH0gd2hpbGUgKGkgPCBjb3VudCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBpZiAoIW1fc3RydWN0dXJlU3R1YkluZm9zLmlzRW1wdHkoKSkKLSAgICAgICAgZGF0YUxv
Z0YoIlxuU3RydWN0dXJlczpcbiIpOworICAgICAgICBvdXQucHJpbnRmKCJcblN0cnVjdHVyZXM6
XG4iKTsKICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fZXhj
ZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJcbkV4Y2VwdGlv
biBIYW5kbGVyczpcbiIpOworICAgICAgICBvdXQucHJpbnRmKCJcbkV4Y2VwdGlvbiBIYW5kbGVy
czpcbiIpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlx0ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6IFslNGRdIHRhcmdldDogWyU0
ZF0gfVxuIiwgaSArIDEsIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uc3RhcnQs
IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5kLCBtX3JhcmVEYXRhLT5tX2V4
Y2VwdGlvbkhhbmRsZXJzW2ldLnRhcmdldCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJcdCAl
ZDogeyBzdGFydDogWyU0ZF0gZW5kOiBbJTRkXSB0YXJnZXQ6IFslNGRdIH1cbiIsIGkgKyAxLCBt
X3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldLnN0YXJ0LCBtX3JhcmVEYXRhLT5tX2V4
Y2VwdGlvbkhhbmRsZXJzW2ldLmVuZCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tp
XS50YXJnZXQpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJl
RGF0YS0+bV9leGNlcHRpb25IYW5kbGVycy5zaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAo
bV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLmlz
RW1wdHkoKSkgewotICAgICAgICBkYXRhTG9nRigiSW1tZWRpYXRlIFN3aXRjaCBKdW1wIFRhYmxl
czpcbiIpOworICAgICAgICBvdXQucHJpbnRmKCJJbW1lZGlhdGUgU3dpdGNoIEp1bXAgVGFibGVz
OlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICBkYXRhTG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAg
JTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBpbnQgZW50cnkgPSAwOwogICAgICAgICAgICAg
VmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX2ltbWVk
aWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQoKTsKICAgICAgICAgICAg
IGZvciAoVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlciwgKytlbnRyeSkgewogICAgICAgICAgICAgICAgIGlmICghKml0ZXIp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0
Y2hKdW1wVGFibGVzW2ldLm1pbiwgKml0ZXIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYo
Ilx0XHQlNGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRj
aEp1bXBUYWJsZXNbaV0ubWluLCAqaXRlcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBk
YXRhTG9nRigiICAgICAgfVxuIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICAgICB9XG4i
KTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1f
aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAo
bV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLmlz
RW1wdHkoKSkgewotICAgICAgICBkYXRhTG9nRigiXG5DaGFyYWN0ZXIgU3dpdGNoIEp1bXAgVGFi
bGVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuQ2hhcmFjdGVyIFN3aXRjaCBKdW1wIFRh
YmxlczpcbiIpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAg
ICAgICAgZGF0YUxvZ0YoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgaW50IGVudHJ5ID0gMDsKICAgICAgICAg
ICAgIFZlY3RvcjxpbnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0YS0+bV9j
aGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuZW5kKCk7CiAgICAgICAg
ICAgICBmb3IgKFZlY3RvcjxpbnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmFyZURh
dGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsrZW50cnkpIHsKQEAgLTYwMiw5NiArNjAzLDk2IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICBBU1NFUlQoISgoaSArIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVy
U3dpdGNoSnVtcFRhYmxlc1tpXS5taW4pICYgfjB4RkZGRikpOwogICAgICAgICAgICAgICAgIFVD
aGFyIGNoID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGVudHJ5ICsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0
ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlx0
XHRcIiVzXCIgPT4gJTA0ZFxuIiwgU3RyaW5nKCZjaCwgMSkudXRmOCgpLmRhdGEoKSwgKml0ZXIp
OwotICAgICAgICB9Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAgICAgfVxuIik7CisgICAgICAg
ICAgICAgICAgb3V0LnByaW50ZigiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoJmNoLCAx
KS51dGY4KCkuZGF0YSgpLCAqaXRlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAo
aSA8IG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAg
IH0KICAgICAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkgewotICAgICAgICBkYXRhTG9nRigiXG5TdHJpbmcgU3dp
dGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuU3RyaW5nIFN3aXRj
aCBKdW1wIFRhYmxlczpcbiIpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8g
ewotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxl
OjpTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAg
Zm9yIChTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBp
dGVyID0gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxl
LmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
Ilx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgU3RyaW5nKGl0ZXItPmtleSkudXRmOCgpLmRhdGEoKSwg
aXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICB9
XG4iKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIs
IFN0cmluZyhpdGVyLT5rZXkpLnV0ZjgoKS5kYXRhKCksIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNl
dCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsr
aTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIGRhdGFMb2dGKCJcbiIpOworICAgIG91dC5wcmlu
dGYoIlxuIik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpCit2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KQog
ewogICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47CiAgICAgc3dpdGNoIChleGVjLT5pbnRl
cnByZXRlcigpLT5nZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CiAgICAgICAgIGNhc2Ugb3Bf
ZW50ZXI6IHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBlbnRlciIsIGxvY2F0aW9uKTsK
LSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGVudGVyIiwgbG9jYXRpb24pOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hY3RpdmF0aW9u
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBjcmVhdGVfYWN0aXZhdGlvbiAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjcmVh
dGVfYWN0aXZhdGlvbiAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3Jl
YXRlX2FyZ3VtZW50czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY3JlYXRlX2FyZ3VtZW50c1x0ICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIlslNGRdIGNyZWF0ZV9hcmd1bWVudHNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIGluaXRfbGF6eV9yZWdcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2NhbGxlZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gb3BfZ2V0X2NhbGxl
ZSAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIG9wX2dldF9jYWxsZWUgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICArK2l0OwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjcmVh
dGVfdGhpcyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlsl
NGRdIGNyZWF0ZV90aGlzICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnZlcnRfdGhpczogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigi
WyU0ZF0gY29udmVydF90aGlzXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY29udmVydF90aGlzXHQgJXMi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICArK2l0OyAvLyBTa2lwIHZhbHVlIHByb2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG5ld19vYmpl
Y3RcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewogICAgICAgICAgICAgaW50IGRzdCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nRigiWyU0ZF0gbmV3X2FycmF5XHQgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd2KS5kYXRh
KCksIGFyZ2MpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2FycmF5XHQgJXMsICVz
LCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCBhcmd2KS5kYXRhKCksIGFyZ2MpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICArK2l0OyAvLyBT
a2lwIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsZS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZTogewogICAgICAgICAgICAg
aW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxlbmd0aCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG5ld19hcnJheV93
aXRoX3NpemVcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgbGVuZ3RoKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gbmV3X2FycmF5X3dpdGhfc2l6ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBsZW5ndGgpLmRh
dGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxv
Y2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9m
aWxlLgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY5OSwxNDkgKzcwMCwxNDkg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICAgICAg
aW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X2FycmF5X2J1ZmZlclx0ICVzLCAlZCwg
JWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBhcmdj
KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19hcnJheV9idWZmZXJcdCAlcywgJWQs
ICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgYXJndiwgYXJn
Yyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxl
LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfcmVn
ZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByZTAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJb
JTRkXSBuZXdfcmVnZXhwXHQgJXMsICIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfcmVnZXhwXHQgJXMs
ICIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAg
ICBpZiAocjAgPj0wICYmIHIwIDwgKGludCltX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZSZWdFeHBz
KCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVzIiwgcmVnZXhwTmFtZShyZTAsIHJlZ2V4
cChyZTApKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnZXhw
TmFtZShyZTAsIHJlZ2V4cChyZTApKS5kYXRhKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICAgICAg
b3V0LnByaW50ZigiYmFkX3JlZ2V4cCglZCkiLCByZTApOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21vdjogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBtb3ZcdFx0ICVzLCAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbW92XHRcdCAlcywgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91
dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9ub3Q6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQs
ICJub3QiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm5vdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9lcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJl
cSIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImVxIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Vx
X251bGw6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJl
cV9udWxsIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJlcV9udWxsIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25lcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJuZXEiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJuZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbmVxX251bGw6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlv
biwgaXQsICJuZXFfbnVsbCIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAibmVxX251bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3Bfc3RyaWN0ZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAic3RyaWN0ZXEiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzdHJpY3RlcSIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uc3RyaWN0ZXE6IHsKLSAgICAgICAgICAg
IHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibnN0cmljdGVxIik7CisgICAgICAg
ICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibnN0cmljdGVxIik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xlc3M6IHsK
LSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibGVzcyIpOwor
ICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxlc3Mi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbGVzc2Vx
OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxlc3Nl
cSIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
Imxlc3NlcSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9ncmVhdGVyOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImdyZWF0ZXIiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJncmVhdGVyIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2dyZWF0ZXJlcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJncmVhdGVyZXEiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJncmVhdGVyZXEiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHJl
X2luY1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX3ByZV9kZWM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHByZV9kZWNcdFx0
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIHByZV9kZWNcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9wb3N0X2luYzogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInBvc3RfaW5jIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwb3N0X2luYyIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3N0X2RlYzogewotICAgICAgICAgICAgcHJpbnRV
bmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfZGVjIik7CisgICAgICAgICAgICBwcmlu
dFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwb3N0X2RlYyIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90b19qc251bWJlcjogewotICAg
ICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRvX2pzbnVtYmVyIik7
CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0b19q
c251bWJlciIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9uZWdhdGU6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQs
ICJuZWdhdGUiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm5lZ2F0ZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9hZGQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiYWRkIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAiYWRkIik7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9tdWw6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibXVsIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibXVsIik7CiAgICAgICAgICAgICArK2l0OwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kaXY6IHsKLSAgICAg
ICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiZGl2Iik7CisgICAgICAg
ICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGl2Iik7CiAgICAg
ICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9tb2Q6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0
LCAibW9kIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAibW9kIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3N1YjogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQs
ICJzdWIiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJzdWIiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2xzaGlmdDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJsc2hpZnQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJsc2hpZnQiKTsKICAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcnNoaWZ0OiB7Ci0gICAg
ICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJzaGlmdCIpOworICAg
ICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJzaGlmdCIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF91cnNoaWZ0
OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInVyc2hp
ZnQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJ1cnNoaWZ0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2JpdGFuZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJiaXRhbmQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJiaXRhbmQiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2JpdHhvcjogewotICAgICAgICAgICAgcHJp
bnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJiaXR4b3IiKTsKKyAgICAgICAgICAgIHBy
aW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJiaXR4b3IiKTsKICAgICAgICAg
ICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X2JpdG9yOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImJpdG9yIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAiYml0b3IiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtODUwLDQ4ICs4NTEsNDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBj
aGVja19oYXNfaW5zdGFuY2VcdFx0ICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY2hlY2tfaGFzX2luc3RhbmNlXHRcdCAl
cywgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIGluc3RhbmNlb2ZcdFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdHlwZW9mOiB7Ci0gICAgICAgICAgICBwcmludFVu
YXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAidHlwZW9mIik7CisgICAgICAgICAgICBwcmludFVu
YXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0eXBlb2YiKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkOiB7Ci0gICAgICAg
ICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfdW5kZWZpbmVkIik7Cisg
ICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc191bmRl
ZmluZWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
aXNfYm9vbGVhbjogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImlzX2Jvb2xlYW4iKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImlzX2Jvb2xlYW4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfaXNfbnVtYmVyOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfbnVtYmVyIik7CisgICAgICAgICAgICBwcmludFVuYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfc3RyaW5nOiB7Ci0gICAgICAgICAg
ICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfc3RyaW5nIik7CisgICAgICAg
ICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19zdHJpbmciKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfb2JqZWN0
OiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfb2Jq
ZWN0Iik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJpc19vYmplY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfaXNfZnVuY3Rpb246IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfZnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW46IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiaW4iKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfdG9fYmFzZV92YXJpYWJsZToKQEAgLTkwMCw4ICs5
MDEsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgdmFsdWUg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByZXNvbHZlSW5mbyA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHB1dF90b19iYXNlXHQg
JXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCB2YWx1ZSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSBwdXRfdG9fYmFzZVx0ICVzLCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCBiYXNlKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgdmFsdWUpLmRhdGEoKSwgcmVzb2x2ZUluZm8pOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmU6CkBA
IC05MTMsMTQgKzkxNCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0
ZSogCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByZXNvbHZlSW5m
byA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHJlc29s
dmVcdFx0ICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7
Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSByZXNvbHZlXHRcdCAlcywgJXMsICVkIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50
aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2ZUluZm8pOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbml0X2dsb2Jh
bF9jb25zdF9ub3A6IHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbml0X2dsb2JhbF9j
b25zdF9ub3BcdCIsIGxvY2F0aW9uKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGluaXRf
Z2xvYmFsX2NvbnN0X25vcFx0IiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAg
ICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGl0Kys7CkBAIC05MzAsOCArOTMxLDggQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICBjYXNlIG9wX2lu
aXRfZ2xvYmFsX2NvbnN0OiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJl
Z2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBp
bml0X2dsb2JhbF9jb25zdFx0IGclZCglcCksICVzIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0
LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRd
IGluaXRfZ2xvYmFsX2NvbnN0XHQgZyVkKCVwKSwgJXMiLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmpl
Y3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAg
ICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTM5LDggKzk0MCw4IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgY2FzZSBvcF9p
bml0X2dsb2JhbF9jb25zdF9jaGVjazogewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVyOwogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigi
WyU0ZF0gaW5pdF9nbG9iYWxfY29uc3RfY2hlY2tcdCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBt
X2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0
ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBpbml0X2dsb2JhbF9jb25zdF9jaGVja1x0IGclZCglcCksICVzIiwgbG9j
YXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIp
LCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAg
ICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTk1NSwxNiArOTU2LDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRl
KiAKICAgICAgICAgICAgIGludCBpc1N0cmljdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHJlc29sdmVJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcHV0VG9CYXNlSW5mbyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIlslNGRdIHJlc29sdmVfYmFzZSVzXHQgJXMsICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgaXNT
dHJpY3QgPyAiX3N0cmljdCIgOiAiIiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlk
TmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbywgcHV0VG9C
YXNlSW5mbyk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSByZXNvbHZlX2Jhc2Ulc1x0ICVz
LCAlcywgJWQsICVkIiwgbG9jYXRpb24sIGlzU3RyaWN0ID8gIl9zdHJpY3QiIDogIiIsIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSwgcmVzb2x2ZUluZm8sIHB1dFRvQmFzZUluZm8pOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsr
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9lbnN1cmVf
cHJvcGVydHlfZXhpc3RzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBlbnN1cmVfcHJvcGVydHlfZXhpc3RzXHQgJXMsICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBlbnN1cmVfcHJv
cGVydHlfZXhpc3RzXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX2Jh
c2U6IHsKQEAgLTk3Myw4ICs5NzQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4
ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgcmVzb2x2ZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBwdXRUb0Jhc2VJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiWyU0ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlcywgJWQsICVkIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJ
bmZvLCBwdXRUb0Jhc2VJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVf
d2l0aF9iYXNlICVzLCAlcywgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbywgcHV0VG9CYXNlSW5mbyk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
OTgzLDggKzk4NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHJlc29sdmVJbmZvID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcmVzb2x2ZV93
aXRoX3RoaXMgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lk
ZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2ZUluZm8pOwotICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50
ZigiWyU0ZF0gcmVzb2x2ZV93aXRoX3RoaXMgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2ZUluZm8pOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7
CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEw
MDIsNTAgKzEwMDMsNTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUq
IAogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9nZW5lcmljOgogICAgICAgICBjYXNlIG9wX2dl
dF9hcnJheV9sZW5ndGg6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3N0cmluZ19sZW5ndGg6IHsKLSAg
ICAgICAgICAgIHByaW50R2V0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgICAg
ICBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhleGVjLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBwcmlu
dEdldEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCk7CisgICAgICAgICAgICBwcmludEdl
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGV4ZWMsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xlbmd0aDogewot
ICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9hcmd1bWVu
dHNfbGVuZ3RoIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJnZXRfYXJndW1lbnRzX2xlbmd0aCIpOwogICAgICAgICAgICAgaXQrKzsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7Ci0g
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWQi
KTsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAg
ICBwcmludFB1dEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRf
b2ZfbGluZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKKyAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb246IHsKLSAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKLSAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKKyAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTogewotICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9v
dXRfb2ZfbGluZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRl
cl9zZXR0ZXI6IHsKQEAgLTEwNTMsMjQgKzEwNTQsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRk
XSBwdXRfZ2V0dGVyX3NldHRlclx0ICVzLCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1dF9nZXR0ZXJfc2V0dGVy
XHQgJXMsICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBkZWxfYnlfaWRcdCAlcywgJXMs
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZGVsX2J5X2lkXHQgJXMsICVzLCAlcyIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlf
dmFsOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZ2V0X2J5X3ZhbFx0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBnZXRfYnlfdmFsXHQgJXMsICVzLCAlcyIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAg
ICAgICAgaXQrKzsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEw
NzksOCArMTA4MCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRfYXJndW1lbnRfYnlfdmFs
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9hcmd1bWVudF9ieV92YWxcdCAl
cywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlv
bik7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTA5MiwxNiArMTA5MywxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHI1
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZ2V0X2J5
X3BuYW1lXHQgJXMsICVzLCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgp
KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9ieV9wbmFtZVx0ICVzLCAlcywgJXMs
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjUpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHB1dF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTEwOSwyMDggKzExMTAsMjA4IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBkZWxfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlsl
NGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pbmRleDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBk
YXRhTG9nRigiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1dF9ieV9pbmRleFx0ICVzLCAldSwg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG4wLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gam1wXHRcdCAlZCgtPiVk
KSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIGptcFx0XHQgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShv
dXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbG9vcDogewogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGxvb3BcdFx0ICVkKC0+JWQpIiwgbG9jYXRp
b24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gbG9vcFx0XHQgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfanRy
dWU6IHsKLSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwg
bG9jYXRpb24sICJqdHJ1ZSIpOworICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0
LCBleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAianRydWUiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl90cnVlOiB7Ci0gICAgICAgICAg
ICBwcmludENvbmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9p
Zl90cnVlIik7CisgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJl
Z2luLCBpdCwgbG9jYXRpb24sICJsb29wX2lmX3RydWUiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9mYWxzZTogewotICAgICAgICAgICAg
cHJpbnRDb25kaXRpb25hbEp1bXAoZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImxvb3BfaWZf
ZmFsc2UiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywgYmVn
aW4sIGl0LCBsb2NhdGlvbiwgImxvb3BfaWZfZmFsc2UiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfamZhbHNlOiB7Ci0gICAgICAgICAgICBwcmludENv
bmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamZhbHNlIik7CisgICAg
ICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRp
b24sICJqZmFsc2UiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfamVxX251bGw6IHsKLSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMs
IGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZXFfbnVsbCIpOworICAgICAgICAgICAgcHJpbnRDb25k
aXRpb25hbEp1bXAob3V0LCBleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamVxX251bGwiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxs
OiB7Ci0gICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxv
Y2F0aW9uLCAiam5lcV9udWxsIik7CisgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChv
dXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqbmVxX251bGwiKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgU3BlY2lhbDo6UG9p
bnRlciBwb2ludGVyID0gKCsraXQpLT51LnNwZWNpYWxQb2ludGVyOwogICAgICAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGpuZXFfcHRyXHRcdCAlcywgJWQgKCVwKSwgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHBvaW50ZXIsIG1fZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2lu
dGVyRm9yKHBvaW50ZXIpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIGpuZXFfcHRyXHRcdCAlcywgJWQgKCVwKSwgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHBvaW50ZXIsIG1fZ2xvYmFsT2Jq
ZWN0LT5hY3R1YWxQb2ludGVyRm9yKHBvaW50ZXIpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVz
czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbGVzc1x0XHQg
JXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamxlc3NcdFx0ICVzLCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVzc2VxOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywg
JWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgt
PiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQo
LT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gam5sZXNzXHRcdCAlcywgJXMsICVkKC0+JWQp
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmxlc3NlcTogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gam5sZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nRigiWyU0ZF0gam5ncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gam5ncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xlc3M6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9pZl9sZXNzXHQgJXMsICVzLCAlZCgt
PiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gbG9vcF9pZl9sZXNzXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzc2VxOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGxvb3BfaWZfbGVzc2VxXHQgJXMs
ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQp
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbG9vcF9pZl9sZXNzZXFcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVh
dGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGxvb3BfaWZf
Z3JlYXRlclx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGxvb3BfaWZfZ3JlYXRl
clx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9sb29wX2lmX2dyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJlcVx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlsl
NGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaGludDogewotICAgICAgICAgICAgZGF0YUxvZ0Yo
IlslNGRdIGxvb3BfaGludCIsIGxvY2F0aW9uKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRd
IGxvb3BfaGludCIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRl
eCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHN3aXRjaF9pbW1c
dCAlZCwgJWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQs
IGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJl
Z2lzdGVyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gc3dpdGNoX2ltbVx0
ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwg
bG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVn
aXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKICAgICAgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3dpdGNoX2NoYXJcdCAlZCwg
JWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0
aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVy
KS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gc3dpdGNoX2NoYXJcdCAlZCwg
JWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0
aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVy
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3N3aXRjaF9zdHJpbmc6IHsKICAgICAgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAl
ZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRp
b24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQgJWQs
ICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2Nh
dGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3Rl
cikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91
dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9uZXdfZnVuYzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBzaG91bGRDaGVjayA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0Yo
IlslNGRdIG5ld19mdW5jXHRcdCAlcywgZiVkLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgZjAsIHNob3VsZENoZWNrID8gIjxDaGVja2VkPiIgOiAiPFVuY2hl
Y2tlZD4iKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19mdW5jXHRcdCAlcywgZiVk
LCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjAsIHNob3Vs
ZENoZWNrID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91LHQgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGYwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X2Z1bmNfZXhw
XHQgJXMsIGYlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjAp
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2Z1bmNfZXhwXHQgJXMsIGYlZCIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjApOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKLSAgICAgICAgICAg
IHByaW50Q2FsbE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzKTsKKyAg
ICAgICAgICAgIHByaW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1
bXBDYWNoZXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAgIHByaW50Q2FsbE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImNhbGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzKTsKKyAgICAgICAgICAgIHByaW50Q2FsbE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsX3ZhcmFy
Z3M6IHsKQEAgLTEzMTgsNjAgKzEzMTksNjAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IHRoaXNWYWx1ZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50cyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IGZpcnN0RnJlZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVzLCAlcywgJWQiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgdGhpc1ZhbHVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd1bWVudHMpLmRh
dGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY2Fs
bF92YXJhcmdzXHQgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgdGhpc1ZhbHVlKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCBhcmd1bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RlYXJfb2Zm
X2FjdGl2YXRpb246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSB0ZWFyX29mZl9hY3RpdmF0aW9uXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSB0ZWFyX29mZl9hcmd1bWVudHMgJXMs
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSB0ZWFyX29m
Zl9hcmd1bWVudHMgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmV0OiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSByZXRcdFx0
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIHJldFx0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY2FsbF9wdXRfcmVzdWx0
XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRcdFx0ICVzIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmV0X29iamVjdF9v
cl90aGlzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0Yo
IlslNGRdIGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIlslNGRdIGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXMiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9jb25zdHJ1Y3Q6IHsKLSAgICAgICAgICAgIHByaW50Q2FsbE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImNvbnN0cnVjdCIsIER1bXBDYWNoZXMpOworICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGNvdW50ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3RyY2F0XHRcdCAlcywgJXMsICVkIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgY291bnQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gc3RyY2F0
XHRcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291bnQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZTogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSB0b19wcmltaXRp
dmVcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRd
IHRvX3ByaW1pdGl2ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9wbmFtZXM6IHsKQEAgLTEzODAs
OCArMTM4MSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAg
ICAgICAgICAgIGludCByMiA9IGl0WzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMyA9
IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdFs1XS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZ2V0X3BuYW1lc1x0ICVzLCAlcywgJXMs
ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVz
KSAtIDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTM5Miw1NCArMTM5Myw1
NCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAg
ICBpbnQgc2l6ZSA9IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpdGVyID0gaXRb
NV0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzZdLnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXh0X3BuYW1lXHQgJXMsICVzLCAlcywgJXMs
ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVzdCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgaXRlcikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIG5leHRfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVkKC0+JWQp
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpdGVyKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCArPSBPUENP
REVfTEVOR1RIKG9wX25leHRfcG5hbWUpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwdXNo
X3dpdGhfc2NvcGVcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwdXNoX3dpdGhfc2NvcGVcdCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcG9wX3Njb3BlOiB7Ci0gICAgICAgICAg
ICBkYXRhTG9nRigiWyU0ZF0gcG9wX3Njb3BlIiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gcG9wX3Njb3BlIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1c2hfbmFtZV9zY29wZTogewogICAgICAgICAg
ICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHVzaF9uYW1lX3Njb3Bl
IFx0JXMsICVzLCAldSIsIGxvY2F0aW9uLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGF0dHJpYnV0ZXMpOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHVzaF9uYW1lX3Njb3BlIFx0JXMsICVzLCAldSIsIGxv
Y2F0aW9uLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2ptcF9zY29wZXM6IHsKICAgICAgICAgICAgIGlu
dCBzY29wZURlbHRhID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gam1wX3Nj
b3Blc1x0XiVkLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGptcF9zY29wZXNcdF4l
ZCwgJWQoLT4lZCkiLCBsb2NhdGlvbiwgc2NvcGVEZWx0YSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxv
Y2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
Y2F0Y2g6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZ0YoIlslNGRdIGNhdGNoXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjYXRjaFx0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJbJTRkXSB0aHJvd1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gdGhyb3dcdFx0ICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6IHsKICAgICAg
ICAgICAgIGludCBrMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGsxID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gdGhyb3dfc3Rh
dGljX2Vycm9yXHQgJXMsICVzIiwgbG9jYXRpb24sIGNvbnN0YW50TmFtZShleGVjLCBrMCwgZ2V0
Q29uc3RhbnQoazApKS5kYXRhKCksIGsxID8gInRydWUiIDogImZhbHNlIik7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSB0aHJvd19zdGF0aWNfZXJyb3JcdCAlcywgJXMiLCBsb2NhdGlvbiwg
Y29uc3RhbnROYW1lKGV4ZWMsIGswLCBnZXRDb25zdGFudChrMCkpLmRhdGEoKSwgazEgPyAidHJ1
ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9kZWJ1ZzogewpAQCAtMTQ0NywyNiArMTQ0OCwyNiBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgZmlyc3RMaW5lID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGFzdExpbmUgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBjb2x1bW4gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCwgJWQiLCBsb2NhdGlv
biwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNvbHVt
bik7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCwgJWQi
LCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExp
bmUsIGNvbHVtbik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShv
dXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6IHsKICAgICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHByb2ZpbGVfd2ls
bF9jYWxsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgp
KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOiB7
CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJbJTRkXSBwcm9maWxlX2RpZF9jYWxsXHQgJXMiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gcHJvZmlsZV9kaWRfY2FsbFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCBmdW5jdGlvbikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9lbmQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGVuZFx0XHQgJXMiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gZW5kXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKQEAgLTE0NzYsMTEgKzE0NzcsMTEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShF
eGVjU3RhdGUqIAogICAgIH0KIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBjb25zdCBJbnN0cnVjdGlv
biogaXQgPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgZHVt
cEJ5dGVjb2RlKGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsKKyAgICBkdW1wQnl0
ZWNvZGUob3V0LCBleGVjLCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCk7CiB9CiAKICNpZiBE
VU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3
IEBACiAKIC8vIFNldCBFTkFCTEVfQllURUNPREVfQ09NTUVOVFMgdG8gMSB0byBlbmFibGUgcmVj
b3JkaW5nIGJ5dGVjb2RlIGdlbmVyYXRvcgogLy8gY29tbWVudHMgZm9yIHRoZSBieXRlY29kZXMg
dGhhdCBpdCBnZW5lcmF0ZXMuIFRoaXMgd2lsbCBhbGxvdwotLy8gQ29kZUJsb2NrOjpkdW1wKCkg
dG8gcHJvdmlkZSBzb21lIGNvbnRleHR1YWwgaW5mbyBhYm91dCB0aGUgYnl0ZWNvZGVzLgorLy8g
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKSB0byBwcm92aWRlIHNvbWUgY29udGV4dHVhbCBpbmZv
IGFib3V0IHRoZSBieXRlY29kZXMuCiAvLwogLy8gVGhlIHdheSB0aGlzIGNvbW1lbnQgc3lzdGVt
IHdvcmtzIGlzIGFzIGZvbGxvd3M6CiAvLyAxLiBUaGUgQnl0ZWNvZGVHZW5lcmF0b3IgY2FsbHMg
cHJlcGVuZENvbW1lbnQoKSB3aXRoIGEgY29uc3RhbnQgY29tbWVudApAQCAtODksNyArODksNyBA
QAogLy8gICAgcHJlcGVuZGVkIGNvbW1lbnQgd2lsbCBiZSByZWNvcmRlZCB3aXRoIHRoZSBQQyBv
ZiB0aGUgb3Bjb2RlIGJlaW5nCiAvLyAgICBlbWl0dGVkLiBUaGlzIGNvbW1lbnQgaXMgYmVpbmcg
cmVjb3JkZWQgaW4gdGhlIENvZGVCbG9jaydzCiAvLyAgICBtX2J5dGVjb2RlQ29tbWVudHMuCi0v
LyAzLiBXaGVuIENvZGVCbG9jazo6ZHVtcCgpIGlzIGNhbGxlZCwgaXQgd2lsbCBwYWlyIHVwIHRo
ZSBjb21tZW50cyB3aXRoCisvLyAzLiBXaGVuIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkgaXMg
Y2FsbGVkLCBpdCB3aWxsIHBhaXIgdXAgdGhlIGNvbW1lbnRzIHdpdGgKIC8vICAgIHRoZWlyIGNv
cnJlc3BvbmRpbmcgYnl0ZWNvZGVzIGJhc2VkIG9uIHRoZSBieXRlY29kZSBhbmQgY29tbWVudCdz
CiAvLyAgICBQQy4gSWYgYSBtYXRjaGluZyBwYWlyIGlzIGZvdW5kLCB0aGUgY29tbWVudCB3aWxs
IGJlIHByaW50ZWQgYWZ0ZXIKIC8vICAgIHRoZSBieXRlY29kZS4gSWYgbm90LCBubyBjb21tZW50
IGlzIHByaW50ZWQuCkBAIC0xNjAsMTYgKzE2MCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUo
KSkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorI2Vsc2UKKyAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZVZlcnNpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgdm9pZCB2aXNpdEFnZ3Jl
Z2F0ZShTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNz
KCk7CiAKLSAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKLSAgICAgICAgdm9pZCBkdW1wQnl0
ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICB2b2lkIHByaW50U3RydWN0
dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOworICAgICAg
ICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCkpOworICAg
ICAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKFByaW50U3RyZWFtJiwg
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCk7CiAKICAg
ICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsg
fQogCkBAIC0xODksMTAgKzE5NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGludCBsb2NhdGlvbik7CisgICAgICAgIHZvaWQgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoUHJpbnRTdHJlYW0mLCBpbnQgbG9jYXRpb24pOwog
I2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKLSAgICAgICAgY29uc3QgY2hhciogY29tbWVu
dEZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgdm9p
ZCBkdW1wQnl0ZWNvZGVDb21tZW50cygpOworICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50Rm9y
Qnl0ZWNvZGVPZmZzZXQoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Cisg
ICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlQ29tbWVudHMoUHJpbnRTdHJlYW0mKTsKICNlbmRpZgog
CiAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpOwpAQCAtMTIxNSwxNyArMTIyMCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLnNldCgqbV9nbG9iYWxEYXRh
LCBvd25lckV4ZWN1dGFibGUoKSwgY29uc3RhbnRzW2ldLmdldCgpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJ
bnN0cnVjdGlvbiomKTsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUq
LCBpbnQgcikgY29uc3Q7Ci0gICAgICAgIHZvaWQgcHJpbnRVbmFyeU9wKEV4ZWNTdGF0ZSosIGlu
dCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwotICAgICAg
ICB2b2lkIHByaW50QmluYXJ5T3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0
cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgICAgIHZvaWQgcHJpbnRDb25kaXRpb25h
bEp1bXAoRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiom
LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKLSAgICAgICAgdm9pZCBwcmludEdldEJ5
SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYpOwotICAg
ICAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
bik7CisgICAgICAgIHZvaWQgcHJpbnRVbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwg
aW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CisgICAg
ICAgIHZvaWQgcHJpbnRCaW5hcnlPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2Nh
dGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOworICAgICAgICB2b2lk
IHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5z
dHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIq
IG9wKTsKKyAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0
ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7CisgICAgICAgIHZvaWQgcHJp
bnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRp
b24pOwogICAgICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENh
Y2hlcyB9OwotICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
biwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUpOwot
ICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOworICAgICAgICB2b2lkIHByaW50Q2Fs
bE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVj
dGlvbiomLCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSk7CisgICAgICAgIHZvaWQgcHJp
bnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0
IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKICAgICAgICAgdm9pZCB2aXNpdFN0cnVj
dHVyZXMoU2xvdFZpc2l0b3ImLCBJbnN0cnVjdGlvbiogdlBDKTsKICAgICAgICAgCiAjaWYgRU5B
QkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9y
aWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDExIEBA
IENvZGVCbG9ja0hhc2ggSW5saW5lQ2FsbEZyYW1lOjpoYXNoKCkgY28KICAgICByZXR1cm4gZXhl
Y3V0YWJsZS0+aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7CiB9CiAKK0NvZGVCbG9jayog
SW5saW5lQ2FsbEZyYW1lOjpiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGV4ZWN1dGFibGUtPmJhc2xpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOwor
fQorCiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIG91dC5wcmludCgiIyIsIGhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRhYmxl
LmdldCgpKSwgIiwgYmMjIiwgY2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHNwZWNpYWxpemF0
aW9uS2luZCgpLCAiPiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDggQEAg
c3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkg
Y29uc3Q7CiAgICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0Owor
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFBCUEJ5dGVjb2RlX2gKKyNkZWZpbmUgUEJQQnl0ZWNvZGVf
aAorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlIHsKK3B1YmxpYzoKKyAgICBCeXRlY29kZSgp
CisgICAgICAgIDogbV9ieXRlY29kZUluZGV4KFVJTlRfTUFYKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgQ1N0cmluZyYgZGVz
Y3JpcHRpb24pCisgICAgICAgIDogbV9ieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAg
ICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQorICAgIAorICAg
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7
IH0KKyAgICBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
Y3JpcHRpb247IH0KK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAg
IENTdHJpbmcgbV9kZXNjcmlwdGlvbjsKK307CisKK2lubGluZSB1bnNpZ25lZCBnZXRCeXRlY29k
ZUluZGV4Rm9yQnl0ZWNvZGUoQnl0ZWNvZGUqIGJ5dGVjb2RlKSB7IHJldHVybiBieXRlY29kZS0+
Ynl0ZWNvZGVJbmRleCgpOyB9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlm
IC8vIFBCUEJ5dGVjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1BCUEJ5dGVjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGVzLmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKKworQnl0ZWNvZGVzOjpCeXRlY29kZXMoc2l6ZV90IGlkLCBD
b2RlQmxvY2tIYXNoIGhhc2gpCisgICAgOiBtX2lkKGlkKQorICAgICwgbV9oYXNoKGhhc2gpCit7
Cit9CisKK0J5dGVjb2Rlczo6fkJ5dGVjb2RlcygpIHsgfQorCit1bnNpZ25lZCBCeXRlY29kZXM6
OmluZGV4Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdAorewor
ICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGUsIHVuc2lnbmVkLCBnZXRCeXRlY29kZUlu
ZGV4Rm9yQnl0ZWNvZGU+KG1fYnl0ZWNvZGUuYmVnaW4oKSwgbV9ieXRlY29kZS5zaXplKCksIGJ5
dGVjb2RlSW5kZXgpIC0gbV9ieXRlY29kZS5iZWdpbigpOworfQorCitjb25zdCBCeXRlY29kZSYg
Qnl0ZWNvZGVzOjpmb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGF0KGluZGV4Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KSk7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgb3V0LnByaW50KCIjIiwgbV9oYXNoLCAiKCIsIG1faWQsICIpIik7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1BCUEJ5dGVjb2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBCeXRlY29kZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBCeXRlY29kZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBC
UEJ5dGVjb2Rlc19oCisjZGVmaW5lIFBCUEJ5dGVjb2Rlc19oCisKKyNpbmNsdWRlICJQQlBCeXRl
Y29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlcyB7CitwdWJsaWM6CisgICAgQnl0ZWNv
ZGVzKHNpemVfdCBpZCwgQ29kZUJsb2NrSGFzaCBoYXNoKTsKKyAgICB+Qnl0ZWNvZGVzKCk7Cisg
ICAgCisgICAgdm9pZCBhcHBlbmQoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlKSB7IG1fYnl0ZWNv
ZGUuYXBwZW5kKGJ5dGVjb2RlKTsgfQorICAgIAorICAgIHNpemVfdCBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KKyAgICBDb2RlQmxvY2tIYXNoIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hh
c2g7IH0KKyAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBub3Qg
aW5kZXhlZCBieSBieXRlY29kZSBpbmRleC4KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlY29kZS5zaXplKCk7IH0KKyAgICBjb25zdCBCeXRlY29kZSYgYXQodW5zaWdu
ZWQgaSkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZVtpXTsgfQorICAgIAorICAgIHVuc2lnbmVk
IGluZGV4Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsKKyAg
ICBjb25zdCBCeXRlY29kZSYgZm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4
KSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAK
K3ByaXZhdGU6CisgICAgc2l6ZV90IG1faWQ7CisgICAgQ29kZUJsb2NrSGFzaCBtX2hhc2g7Cisg
ICAgVmVjdG9yPEJ5dGVjb2RlPiBtX2J5dGVjb2RlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OlBCUAorCisjZW5kaWYgLy8gUEJQQnl0ZWNvZGVzX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uX2gKKyNkZWZpbmUgUEJQQ29tcGls
YXRpb25faAorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKKy8vIFJlcHJlc2Vu
dHMgdGhlIGFjdCBvZiBleGVjdXRpbmcgc29tZSBieXRlY29kZXMgaW4gc29tZSBlbmdpbmUsIGFu
ZCBkb2VzCisvLyBhbGwgb2YgdGhlIGNvdW50aW5nIGZvciB0aG9zZSBleGVjdXRpb25zLgorCitj
bGFzcyBDb21waWxhdGlvbiB7CitwdWJsaWM6CisgICAgQ29tcGlsYXRpb24oUEJQQnl0ZWNvZGVz
KiwgQ29tcGlsYXRpb25LaW5kKTsKKyAgICB+Q29tcGlsYXRpb24oKTsKKyAgICAKKyAgICBCeXRl
Y29kZXMqIGJ5dGVjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVzOyB9CisgICAgQ29t
cGlsYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICAKKyAgICB2
b2lkIGFkZERlc2NyaXB0aW9uKGNvbnN0IENvbXBpbGVkQnl0ZWNvZGUmKTsKKyAgICBFeGVjdXRp
b25Db3VudGVyKiBleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJik7CisgICAg
Citwcml2YXRlOgorICAgIEJ5dGVjb2RlcyogbV9ieXRlY29kZXM7CisgICAgQ29tcGlsYXRpb25L
aW5kIG1fa2luZDsKKyAgICBWZWN0b3I8Q29tcGlsZWRCeXRlY29kZT4gbV9kZXNjcmlwdGlvbnM7
CisgICAgSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+ID4gbV9j
b3VudGVyczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBC
UENvbXBpbGF0aW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UENvbXBpbGF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uS2luZF9oCisjZGVmaW5lIFBCUENvbXBpbGF0aW9u
S2luZF9oCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworZW51bSBDb21waWxh
dGlvbktpbmQgeyBMTEludCwgQmFzZWxpbmUsIERGRyB9OworCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6UEJQCisKKyNlbmRpZiAvLyBQQlBDb21waWxhdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGls
ZWRCeXRlY29kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQQ29tcGlsZWRCeXRl
Y29kZV9oCisjZGVmaW5lIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAorCisjaW5jbHVkZSAiUEJQT3Jp
Z2luU3RhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBD
b21waWxlZEJ5dGVjb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBJdCdzIHZhbGlkIHRvIGhhdmUgYW4g
ZW1wdHkgT3JpZ2luU3RhY2ssIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgc29tZQorICAg
IC8vIHNvcnQgb2Ygbm9uLWJ5dGVjb2RlLXJlbGF0ZWQgbWFjaGluZSBjb2RlLgorICAgIENvbXBp
bGVkQnl0ZWNvZGUoY29uc3QgT3JpZ2luU3RhY2smLCBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlv
bik7CisgICAgfkNvbXBpbGVkQnl0ZWNvZGUoKTsKKyAgICAKKyAgICBjb25zdCBPcmlnaW5TdGFj
ayYgb3JpZ2luU3RhY2soKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGNvbnN0IENT
dHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBPcmlnaW5TdGFjayBtX29yaWdpbjsKKyAgICBDU3RyaW5nIG1fZGVz
Y3JpcHRpb247Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQ
QlBDb21waWxlZEJ5dGVjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQRGF0YWJhc2UuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBQQlAgeworCitEYXRhYmFzZTo6RGF0YWJhc2UoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQorICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCit7Cit9CisKK0J5dGVj
b2RlcyogRGF0YWJhc2U6OmFkZEJ5dGVjb2RlcyhDb2RlQmxvY2tIYXNoIGhhc2gpCit7CisgICAg
bV9ieXRlY29kZXMuYXBwZW5kKEJ5dGVjb2RlcyhtX2J5dGVjb2Rlcy5zaXplKCksIGhhc2gpKTsK
KyAgICByZXR1cm4gJm1fYnl0ZWNvZGVzLmxhc3QoKTsKK30KKworQnl0ZWNvZGVzKiBEYXRhYmFz
ZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIGNvZGVC
bG9jayA9IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCk7CisgICAgCisgICAgSGFzaE1hcDxD
b2RlQmxvY2sqLCBCeXRlY29kZXMqPjo6aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVzTWFwLmZp
bmQoY29kZUJsb2NrKTsKKyAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2Rlc01hcC5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOworICAgIAorICAgIEJ5dGVjb2RlcyogcmVzdWx0ID0g
YWRkQnl0ZWNvZGVzKGNvZGVCbG9jay0+aGFzaCgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXggPSAwOyBieXRlY29kZUluZGV4IDwgY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5zaXplKCk7KSB7CisgICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAg
Y29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4KTsKKyAgICAgICAgcmVz
dWx0LT5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3V0LnRvQ1N0cmluZygpKSk7Cisg
ICAgICAgIAorICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29kZUxlbmd0aCgKKyAgICAgICAg
ICAgIG1fZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCisgICAgICAgICAgICAg
ICAgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XS51Lm9wY29kZSkpOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIERhdGFiYXNlOjpub3Rp
ZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICAvLyBXZSBvbmx5IGRv
IHRoaW5ncyBmb3IgYmFzZWxpbmUgY29kZSBibG9ja3MuCisgICAgaWYgKGNvZGVCbG9jay0+YmFz
ZWxpbmVWZXJzaW9uKCkgIT0gY29kZUJsb2NrKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
bV9ieXRlY29kZXNNYXAucmVtb3ZlKGNvZGVCbG9jayk7Cit9CisKK0NvbXBpbGF0aW9uKiBEYXRh
YmFzZTo6bmV3Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBpbGF0aW9uS2lu
ZCBraW5kKQoreworICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChDb21waWxhdGlvbihieXRlY29k
ZXMsIGtpbmQpKTsKKyAgICByZXR1cm4gJm1fY29tcGlsYXRpb25zLmxhc3QoKTsKK30KKworQ29t
cGlsYXRpb24qIERhdGFiYXNlOjpuZXdDb21waWxhdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29tcGlsYXRpb25LaW5kIGtpbmQpCit7CisgICAgcmV0dXJuIG5ld0NvbXBpbGF0aW9uKGVuc3Vy
ZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2spLCBraW5kKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJh
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0
YWJhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBEYXRhYmFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQRGF0YWJhc2VfaAor
I2RlZmluZSBQQlBEYXRhYmFzZV9oCisKKyNpbmNsdWRlICJQQlBCeXRlY29kZXMuaCIKKyNpbmNs
ZHVlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBEYXRhYmFzZSB7CitwdWJs
aWM6CisgICAgRGF0YWJhc2UoSlNHbG9iYWxEYXRhJik7CisgICAgCisgICAgQnl0ZWNvZGVzKiBl
bnN1cmVCeXRlY29kZXNGb3IoQ29kZUJsb2NrKik7CisgICAgdm9pZCBub3RpZnlEZXN0cnVjdGlv
bihDb2RlQmxvY2sqKTsKKyAgICAKKyAgICBDb21waWxhdGlvbiogbmV3Q29tcGlsYXRpb24oQ29k
ZUJsb2NrKiwgQ29tcGlsYXRpb25LaW5kKTsKKyAgICBDb21waWxhdGlvbiogbmV3Q29tcGlsYXRp
b24oQnl0ZWNvZGVzKiwgQ29tcGlsYXRpb25LaW5kKTsKKworcHJpdmF0ZToKKyAgICBCeXRlY29k
ZXMqIGFkZEJ5dGVjb2RlcyhDb2RlQmxvY2tIYXNoKTsKKyAgICAKKyAgICBKU0dsb2JhbERhdGEm
IG1fZ2xvYmFsRGF0YTsKKyAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBtX2J5dGVjb2Rl
czsKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNvZGVzTWFwOwor
ICAgIFNlZ21lbnRlZFZlY3RvcjxDb21waWxhdGlvbj4gbV9jb21waWxhdGlvbnM7Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBEYXRhYmFzZV9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlv
bkNvdW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBFeGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBF
eGVjdXRpb25Db3VudGVyX2gKKyNkZWZpbmUgUEJQRXhlY3V0aW9uQ291bnRlcl9oCisKKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEV4ZWN1dGlvbkNvdW50
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOyBXVEZfTUFLRV9OT05DT1BZQUJMRShF
eGVjdXRpb25Db3VudGVyKTsKK3B1YmxpYzoKKyAgICBFeGVjdXRpb25Db3VudGVyKCkgOiBtX2Nv
dW50ZXIoMCkgeyB9CisgICAgCisgICAgdWludDY0X3QqIGFkZHJlc3MoKSB7IHJldHVybiAmbV9j
b3VudGVyOyB9CisgICAgCisgICAgdWludDY0X3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50ZXI7IH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2NvdW50ZXI7Cit9OworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBFeGVjdXRpb25Db3VudGVyX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2lu
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UEJQT3JpZ2luLmgiCisKKyNpbmNsdWRlICJQQlBCeXRlY29kZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBQQlAgeworCitPcmlnaW46Ok9yaWdpbihEYXRhYmFzZSYgZGF0YWJhc2Us
IENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIDogbV9i
eXRlY29kZXMoZGF0YWJhc2UuZW5zdXJlQnl0ZWNvZGVzRm9yKGNvZGVCbG9jaykpCisgICAgLCBt
X2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKK3sKK30KKwordm9pZCBPcmlnaW46OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoKm1fYnl0ZWNvZGVzLCAi
OmJjIyIsIG1fYnl0ZWNvZGVJbmRleCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBPcmlnaW5faAorI2RlZmluZSBQQlBPcmln
aW5faAorCisjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNvZGVzOworY2xhc3MgRGF0YWJhc2U7CisKK2NsYXNz
IE9yaWdpbiB7CitwdWJsaWM6CisgICAgT3JpZ2luKCkKKyAgICAgICAgOiBtX2J5dGVjb2RlSW5k
ZXgoVUlOVF9NQVgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fYnl0ZWNvZGVJbmRleChVSU5UX01BWCAt
IDEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oQnl0ZWNvZGVzKiBieXRlY29kZXMs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgICAgIDogbV9ieXRlY29kZXMoYnl0ZWNvZGVz
KQorICAgICAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCA8IFVJTlRfTUFYIC0gMSk7CisgICAgfQorICAgIAor
ICAgIE9yaWdpbihEYXRhYmFzZSYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZUlu
ZGV4ID09IFVJTlRfTUFYOyB9CisgICAgCisgICAgQnl0ZWNvZGVzKiBieXRlY29kZXMoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQorICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgT3JpZ2luJikgY29uc3Q7CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAg
IAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAgICAKKyAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBCeXRlY29kZXMq
IG1fYnl0ZWNvZGVzOworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKK307CisKK2lubGlu
ZSBib29sIE9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBPcmlnaW4mIG90aGVyKSBjb25zdAorewor
ICAgIHJldHVybiBtX2J5dGVjb2RlcyA9PSBvdGhlci5tX2J5dGVjb2RlcworICAgICAgICAmJiBt
X2J5dGVjb2RlSW5kZXggPT0gb3RoZXIubV9ieXRlY29kZUluZGV4OworfQorCitpbmxpbmUgdW5z
aWduZWQgT3JpZ2luOjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEJ5
dGVjb2Rlcyo+OjpoYXNoKG1fYnl0ZWNvZGVzKSArIG1fYnl0ZWNvZGVJbmRleDsKK30KKworaW5s
aW5lIGJvb2wgT3JpZ2luOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYnl0ZWNvZGVJbmRleCA9PSBVSU5UX01BWCAtIDE7Cit9CisKK3N0cnVjdCBPcmln
aW5IYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBPcmlnaW4mIGtleSkgeyBy
ZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE9yaWdpbiYg
YSwgY29uc3QgT3JpZ2luJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0M6OlBCUAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlND
OjpQQlA6Ok9yaWdpbj4geworICAgIHR5cGVkZWYgSlNDOjpQQlA6T3JpZ2luSGFzaCBIYXNoOwor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UEJQOk9yaWdpbj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8SlNDOjpQQlA6Ok9yaWdpbj4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlm
IC8vIFBCUE9yaWdpbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBPcmlnaW5TdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUE9yaWdpblN0YWNrLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworT3JpZ2luU3RhY2s6Ok9yaWdpblN0YWNrKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChPcmln
aW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKQorfQorCitPcmlnaW5TdGFjazo6T3JpZ2lu
U3RhY2soY29uc3QgT3JpZ2luJiBvcmlnaW4pCit7CisgICAgbV9zdGFjay5hcHBlbmQob3JpZ2lu
KQorfQorCitPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2soRGF0YWJhc2UmIGRhdGFiYXNlLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAgICBW
ZWN0b3I8Q29kZU9yaWdpbj4gc3RhY2sgPSBjb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7CisgICAg
CisgICAgYXBwZW5kKE9yaWdpbihkYXRhYmFzZSwgY29kZUJsb2NrLCBzdGFja1swXS5ieXRlY29k
ZUluZGV4KSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHN0YWNrLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGFwcGVuZChPcmlnaW4oCisgICAgICAgICAgICBkYXRhYmFzZS5l
bnN1cmVCeXRlY29kZXNGb3Ioc3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jaygpKSwKKyAgICAgICAgICAgIHN0YWNrW2ldLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICB9Cit9
CisKK09yaWdpblN0YWNrOjp+T3JpZ2luU3RhY2soKSB7IH0KKwordm9pZCBPcmlnaW5TdGFjazo6
YXBwZW5kKGNvbnN0IE9yaWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RhY2suYXBwZW5kKG9yaWdp
bikKK30KKworYm9vbCBPcmlnaW5TdGFjazo6b3BlcmF0b3I9PShjb25zdCBPcmlnaW5TdGFjayYg
b3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RhY2suc2l6ZSgpICE9IG90aGVyLm1fc3RhY2su
c2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9zdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKG1fc3RhY2tbaV0gIT0gb3Ro
ZXIubV9zdGFja1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2lnbmVkIE9yaWdpblN0YWNrOjpoYXNoKCkgY29uc3QK
K3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBtX3N0YWNrLnNpemUoKTsKKyAgICAKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX3N0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICByZXN1bHQgKj0g
MzsKKyAgICAgICAgcmVzdWx0ICs9IG1fc3RhY2tbaV0uaGFzaCgpOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFjay5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0
YWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBPcmlnaW5TdGFja19oCisjZGVm
aW5lIFBCUE9yaWdpblN0YWNrX2gKKworI2luY2x1ZGUgIlBCUE9yaWdpbi5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJsb2NrOworc3Ry
dWN0IENvZGVPcmlnaW47CisKK25hbWVzcGFjZSBQQlAgeworCitjbGFzcyBEYXRhYmFzZTsKKwor
Y2xhc3MgT3JpZ2luU3RhY2sgeworcHVibGljOgorICAgIE9yaWdpblN0YWNrKCkgeyB9CisgICAg
CisgICAgT3JpZ2luU3RhY2soV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKKyAgICAK
KyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhjb25zdCBPcmlnaW4mIG9yaWdpbik7CisgICAgCisg
ICAgZXhwbGljaXQgT3JpZ2luU3RhY2soRGF0YWJhc2UmLCBDb2RlQmxvY2sqLCBjb25zdCBDb2Rl
T3JpZ2luJik7CisgICAgCisgICAgfk9yaWdpblN0YWNrKCk7CisgICAgCisgICAgdm9pZCBhcHBl
bmQoY29uc3QgT3JpZ2luJiBvcmlnaW4pOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCk7IH0KKyAgICAKKyAgICB1bnNpZ25lZCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5zaXplKCk7IH0KKyAgICBjb25zdCBPcmlnaW4mIGZy
b21Cb3R0b20odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9zdGFja1tpXTsgfQorICAgIGNv
bnN0IE9yaWdpbiYgZnJvbVRvcCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3N0YWNrW21f
c3RhY2suc2l6ZSgpIC0gaSAtIDFdOyB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE9yaWdpblN0YWNrJikgY29uc3Q7CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIAor
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAgICAKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgVmVjdG9yPE9y
aWdpbiwgMT4gbV9zdGFjazsKK307CisKK2lubGluZSBib29sIE9yaWdpblN0YWNrOjppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhY2suc2l6ZSgpID09
IDEgJiYgbV9zdGFja1swXS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBPcmlnaW5TdGFja19oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177117</attachid>
            <date>2012-12-01 16:13:28 -0800</date>
            <delta_ts>2012-12-01 17:10:07 -0800</delta_ts>
            <desc>git-r-done!</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>157648</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzYyNzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSwyNyBAQAogCQkwRkY0Mjc3MTE1OTI3
NUQ1MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RTE1OTI3NUQyMDA0Q0I5RkYgLyog
UmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgKi87IH07CiAJCTBGRjQyNzcyMTU5Mjc1RDgwMDRDQjlG
RiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2Jh
bFN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzE2OEExNUEzQjIzMTAw
OEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QTUxNjZBRDM1MTAwMEY1QkEzIC8qIFBCUEJ5dGVj
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3
Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlBRDE2NkFEMzVDMDAwRjVCQTMg
LyogUEJQQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGNzI5OTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmNwcCAqLzsg
fTsKKwkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NDE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCAqLzsgfTsKKwkJMEZGNzI5QUYxNjZBRDM1QzAw
MEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTk2MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxh
dGlvbi5jcHAgKi87IH07CisJCTBGRjcyOUIwMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxh
dGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5jcHAgKi87
IH07CisJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlB
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmNwcCAqLzsgfTsKKwkJMEZG
NzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAv
KiBQQlBEYXRhYmFzZS5jcHAgKi87IH07CisJCTBGRjcyOUIzMTY2QUQzNUMwMDBGNUJBMyAvKiBQ
QlBPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgKi87IH07CisJCTBG
RjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMTE2NkFEMzQ3MDAwRjVC
QTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovOyB9OworCQkwRkY3MjlCNTE2NkFEMzVDMDAwRjVC
QTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NTc0MkY2MzBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgKi87IH07CisJ
CTBGRjcyOUI2MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQw
MDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjcxNjZBRDM1
QzAwMEY1QkEzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzU0MERBNDNCNDQwMEJDODNGMyAvKiBQcm9maWxlTm9k
ZS5jcHAgKi87IH07CisJCTBGRjcyOUI4MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODMyRTBE
QTQyQ0FEMDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwICovOyB9OworCQkwRkY3MjlCOTE2NkFEMzYw
MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZG
NzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMg
LyogUEJQQ29tcGlsYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRkY3MjlCQjE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25L
aW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3
Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkMxNjZBRDM2MDAw
MEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21w
aWxlZEJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5RDE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUEJQRXhlY3V0
aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRjE2
NkFEMzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2lu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZG
NzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMg
LyogUEJQT3JpZ2luU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
OyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAw
QzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTUxLDEx
ICs1NzIsNyBAQAogCQk5MzMwNDAyQzBFNkE3NjQwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzAzRkU4
MEU2QTcyQjUwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwICovOyB9OwogCQk5MzM1RjI0RDEy
RTY3NjVCMDAyQjU1NTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzM0NUE4NzEyRDgzOEM0MDAzMDJC
RTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi87IH07CiAJCTk1MzRBQUZCMEU1QjdB
OTYwMEI4QTQ1QiAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyQzYzQUMwRTQ3NzdENjAwQzEzOTM2IC8qIEpTUHJv
ZmlsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJOTU3NDJGNjUwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU3NDJGNjMwREQxMUY1QTAw
MDkxN0ZCIC8qIFByb2ZpbGUuY3BwICovOyB9OwotCQk5NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMg
LyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTVBQjgzMkUwREE0MkNBRDAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCAqLzsgfTsKLQkJ
OTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzU0MERBNDNCNDQwMEJDODNG
MyAvKiBQcm9maWxlTm9kZS5jcHAgKi87IH07Ci0JCTk1Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAv
KiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9y
LmNwcCAqLzsgfTsKLQkJOTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0
NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJOTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFBy
b2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVFM0JDMDUw
RTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUUzQkMwNDBFMUFFNjgyMDBCMkQxQzEgLyogQ2Fs
bElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5NUY2RTY5NTBFNUI1Rjk3MDA5MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkw
RTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3
QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJl
bFNjb3BlLmggKi87IH07CkBAIC0xMDc5LDYgKzEwOTYsMjMgQEAKIAkJMEZGNDI3NkUxNTkyNzVE
MjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc29sdmVHbG9iYWxT
dGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNzE2OEExNUEzQjIzMTAw
OEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb3BlcnR5T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcy
OTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBCeXRlY29kZS5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBC
eXRlY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTkzMTY2QUQz
NDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQQlBCeXRlY29kZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5
dGVjb2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBCeXRl
Y29kZXMuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBCeXRlY29kZXMuaDsgcGF0
aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5NjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsYXRpb24uY3BwOyBwYXRoID0g
cHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGlsYXRpb24uaDsgcGF0aCA9IHByb2ZpbGVy
L1BCUENvbXBpbGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk4
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsYXRpb25LaW5kLmNwcDsgcGF0aCA9IHBy
b2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRjcyOTk5MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGlsYXRpb25LaW5kLmg7IHBhdGgg
PSBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsZWRCeXRlY29k
ZS5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBp
bGVkQnl0ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGls
ZWRCeXRlY29kZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
RGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQRGF0
YWJhc2UuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQRGF0YWJhc2UuaDsgcGF0aCA9
IHByb2ZpbGVyL1BCUERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBFeGVjdXRpb25Db3VudGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUEV4ZWN1dGlvbkNvdW50ZXIuaDsgcGF0aCA9IHBy
b2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBPcmlnaW4uY3BwOyBwYXRoID0gcHJvZmlsZXIv
UEJQT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTAxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQQlBPcmlnaW4uaDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2lu
U3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQT3JpZ2lu
U3RhY2suY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2lu
U3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQT3JpZ2luU3RhY2su
aDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRm
Zy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRD
MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTE2LDYgKzI1NTAsMjMgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTVFM0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8q
IENhbGxJZGVudGlmaWVyLmggKi8sCisJCQkJMEZGNzI5OTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UEJ5dGVjb2RlLmNwcCAqLywKKwkJCQkwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0
ZWNvZGUuaCAqLywKKwkJCQkwRkY3Mjk5NDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVz
LmNwcCAqLywKKwkJCQkwRkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmgg
Ki8sCisJCQkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCAq
LywKKwkJCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCAqLywK
KwkJCQkwRkY3Mjk5ODE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCAq
LywKKwkJCQkwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmgg
Ki8sCisJCQkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUu
Y3BwICovLAorCQkJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVj
b2RlLmggKi8sCisJCQkJMEZGNzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmNw
cCAqLywKKwkJCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCAqLywK
KwkJCQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291bnRlci5oICov
LAorCQkJCTBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwICovLAorCQkJ
CTBGRjcyOUEwMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCAqLywKKwkJCQkwRkY3MjlB
MTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovLAorCQkJCTBGRjcyOUEy
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oICovLAogCQkJCTk1NzQyRjYzMERE
MTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLywKIAkJCQk5NTc0MkY2NDBERDExRjVBMDAw
OTE3RkIgLyogUHJvZmlsZS5oICovLAogCQkJCTk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQ
cm9maWxlR2VuZXJhdG9yLmNwcCAqLywKQEAgLTMwNzcsNiArMzEyOCwxNSBAQAogCQkJCTBGRERC
RkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMyMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8qIENvZGVCbG9j
a1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVC
QTMgLyogUEJQQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUI5MTY2QUQzNjAw
MDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJBMTY2
QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZG
NzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBEYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFBC
UEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJGMTY2QUQzNjAw
MDBGNUJBMyAvKiBQQlBPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUMwMTY2QUQz
NjAwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNTM0LDEw
ICszNTk0LDYgQEAKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3Bl
Y3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTU3NDJGNjUwREQxMUY1QTAwMDkx
N0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTVDRDQ1NzYwRTFDNEZERDAw
ODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTVBQjgz
NTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0ZCNjBBNDEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NDY5REU3MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eU5h
bWVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFODEwN0VDN0U3MDA2NTA0NDYg
LyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY2NSw2ICszNzIxLDE4IEBA
CiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGRjcyOUFEMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBCeXRlY29k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlBRTE2NkFEMzVDMDAwRjVCQTMgLyogUEJQ
Qnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUFGMTY2QUQzNUMwMDBGNUJB
MyAvKiBQQlBDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMDE2NkFE
MzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGRjcyOUIyMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMzE2NkFEMzVDMDAwRjVCQTMgLyogUEJQT3Jp
Z2luLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQ
QlBPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNTE2NkFEMzVDMDAw
RjVCQTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNjE2NkFEMzVD
MDAwRjVCQTMgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3
MjlCNzE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZGNzI5QjgxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsMzMgKzE4MiwzMyBAQCBORVZFUl9JTkxJ
TkUgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnSG9vCiAgICAgcmV0dXJuICIiOwogfQogCi12b2lk
IENvZGVCbG9jazo6cHJpbnRVbmFyeU9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJsb2NrOjpw
cmludFVuYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRp
b24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQogewogICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
Ci0gICAgZGF0YUxvZ0YoIlslNGRdICVzXHRcdCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
Ci0gICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgIG91dC5w
cmludGYoIlslNGRdICVzXHRcdCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiB9CiAKLXZvaWQgQ29k
ZUJsb2NrOjpwcmludEJpbmFyeU9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmlu
dEJpbmFyeU9wKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9u
LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdFx0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOwotICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAg
ICBvdXQucHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludENv
bmRpdGlvbmFsSnVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29k
ZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZ0YoIlsl
NGRdICVzXHRcdCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNc
dFx0ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRH
ZXRCeUlkT3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9u
KiYgaXQpCit2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwg
RXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpCiB7
CiAgICAgY29uc3QgY2hhciogb3A7CiAgICAgc3dpdGNoIChleGVjLT5pbnRlcnByZXRlcigpLT5n
ZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CkBAIC0yNjEsMjggKzI2MSwyOCBAQCB2b2lkIENv
ZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlCiAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2dGKCJbJTRkXSAlc1x0ICVzLCAlcywgJXMi
LCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRh
KCkpOworICAgIG91dC5wcmludGYoIlslNGRdICVzXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBv
cCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CiAgICAgaXQg
Kz0gNTsKIH0KIAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkgLy8gdW51c2VkIGlu
IHNvbWUgY29uZmlndXJhdGlvbnMKLXN0YXRpYyB2b2lkIGR1bXBTdHJ1Y3R1cmUoY29uc3QgY2hh
ciogbmFtZSwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRlbnRpZmll
ciYgaWRlbnQpCitzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IGNoYXIqIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElk
ZW50aWZpZXImIGlkZW50KQogewogICAgIGlmICghc3RydWN0dXJlKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgZGF0YUxvZ0YoIiVzID0gJXAiLCBuYW1lLCBzdHJ1Y3R1cmUpOworICAgIG91
dC5wcmludGYoIiVzID0gJXAiLCBuYW1lLCBzdHJ1Y3R1cmUpOwogICAgIAogICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQp
OwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKLSAgICAgICAgZGF0YUxvZ0YoIiAo
b2Zmc2V0ID0gJWQpIiwgb2Zmc2V0KTsKKyAgICAgICAgb3V0LnByaW50ZigiIChvZmZzZXQgPSAl
ZCkiLCBvZmZzZXQpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKSAvLyB1bnVzZWQgd2hl
biBub3QgRU5BQkxFKEpJVCksIGxlYWRpbmcgdG8gc2lsbHkgd2FybmluZ3MKLXN0YXRpYyB2b2lk
IGR1bXBDaGFpbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgSWRlbnRp
ZmllciYgaWRlbnQpCitzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91dCwgRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIElkZW50aWZpZXImIGlkZW50KQog
ewotICAgIGRhdGFMb2dGKCJjaGFpbiA9ICVwOiBbIiwgY2hhaW4pOworICAgIG91dC5wcmludGYo
ImNoYWluID0gJXA6IFsiLCBjaGFpbik7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgZm9y
IChXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY3VycmVudFN0cnVjdHVyZSA9IGNoYWluLT5oZWFk
KCk7CiAgICAgICAgICAqY3VycmVudFN0cnVjdHVyZTsKQEAgLTI5MSwxMyArMjkxLDEzIEBAIHN0
YXRpYyB2b2lkIGR1bXBDaGFpbihFeGVjU3RhdGUqIGV4ZWMsIFMKICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAg
ICAgICBkdW1wU3RydWN0dXJlKCJzdHJ1Y3QiLCBleGVjLCBjdXJyZW50U3RydWN0dXJlLT5nZXQo
KSwgaWRlbnQpOworICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGV4ZWMsIGN1
cnJlbnRTdHJ1Y3R1cmUtPmdldCgpLCBpZGVudCk7CiAgICAgfQotICAgIGRhdGFMb2dGKCJdIik7
CisgICAgb3V0LnByaW50ZigiXSIpOwogfQogI2VuZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpwcmlu
dEdldEJ5SWRDYWNoZVN0YXR1cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKK3ZvaWQg
Q29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBFeGVj
U3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKIHsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTMwNywyMSArMzA3
LDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cygKICAgICAKICNp
ZiBFTkFCTEUoTExJTlQpCiAgICAgaWYgKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlE
KGluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9nZXRfYXJyYXlfbGVuZ3RoKQotICAgICAg
ICBkYXRhTG9nRigiIGxsaW50KGFycmF5X2xlbmd0aCkiKTsKKyAgICAgICAgb3V0LnByaW50Zigi
IGxsaW50KGFycmF5X2xlbmd0aCkiKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgZGF0
YUxvZ0YoIiBsbGludCgiKTsKLSAgICAgICAgZHVtcFN0cnVjdHVyZSgic3RydWN0IiwgZXhlYywg
c3RydWN0dXJlLCBpZGVudCk7Ci0gICAgICAgIGRhdGFMb2dGKCIpIik7CisgICAgICAgIG91dC5w
cmludGYoIiBsbGludCgiKTsKKyAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBl
eGVjLCBzdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAobnVtYmVyT2ZTdHJ1Y3R1cmVTdHVi
SW5mb3MoKSkgewotICAgICAgICBkYXRhTG9nRigiIGppdCgiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiIGppdCgiKTsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1
YkluZm8obG9jYXRpb24pOwogICAgICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgICAg
ICBkYXRhTG9nRigibm90IHNlZW4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIm5vdCBzZWVu
Iik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJl
ID0gMDsKICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gMDsKQEAg
LTMzMSw0MCArMzMxLDQwIEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1
cygKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBl
KSB7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICAgICAgICAg
ICAgICBkYXRhTG9nRigic2VsZiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInNlbGYi
KTsKICAgICAgICAgICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2Vs
Zi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOgotICAgICAgICAgICAgICAgIGRh
dGFMb2dGKCJwcm90byIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInByb3RvIik7CiAg
ICAgICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmJh
c2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlU3RydWN0
dXJlID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLmdldCgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lk
X2NoYWluOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJjaGFpbiIpOworICAgICAgICAgICAg
ICAgIG91dC5wcmludGYoImNoYWluIik7CiAgICAgICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9
IHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAg
ICAgICAgICAgICAgY2hhaW4gPSBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9p
ZF9zZWxmX2xpc3Q6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoInNlbGZfbGlzdCIpOworICAg
ICAgICAgICAgICAgIG91dC5wcmludGYoInNlbGZfbGlzdCIpOwogICAgICAgICAgICAgICAgIHN0
cnVjdHVyZUxpc3QgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0Owog
ICAgICAgICAgICAgICAgIGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlz
dFNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19n
ZXRfYnlfaWRfcHJvdG9fbGlzdDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigicHJvdG9fbGlz
dCIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInByb3RvX2xpc3QiKTsKICAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVMaXN0ID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVj
dHVyZUxpc3Q7CiAgICAgICAgICAgICAgICAgbGlzdFNpemUgPSBzdHViSW5mby51LmdldEJ5SWRQ
cm90b0xpc3QubGlzdFNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigidW5zZXQiKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM6Ci0gICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoImdlbmVyaWMiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJn
ZW5lcmljIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vz
c19nZXRfYXJyYXlfbGVuZ3RoOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJhcnJheV9sZW5n
dGgiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJhcnJheV9sZW5ndGgiKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9zdHJpbmdfbGVu
Z3RoOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJzdHJpbmdfbGVuZ3RoIik7CisgICAgICAg
ICAgICAgICAgb3V0LnByaW50Zigic3RyaW5nX2xlbmd0aCIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTM3MiwxMjUgKzM3MiwxMjYgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZENhY2hlU3RhdHVzKAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoYmFzZVN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwot
ICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUoInN0cnVjdCIsIGV4ZWMsIGJhc2VTdHJ1Y3R1
cmUsIGlkZW50KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAgICAgICAg
ICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgZXhlYywgYmFzZVN0cnVjdHVyZSwg
aWRlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocHJv
dG90eXBlU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7Ci0gICAg
ICAgICAgICAgICAgZHVtcFN0cnVjdHVyZSgicHJvdG90eXBlU3RydWN0IiwgZXhlYywgYmFzZVN0
cnVjdHVyZSwgaWRlbnQpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAg
ICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJwcm90b3R5cGVTdHJ1Y3QiLCBleGVjLCBi
YXNlU3RydWN0dXJlLCBpZGVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChjaGFpbikgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAg
ICAgICAgICAgICAgIGR1bXBDaGFpbihleGVjLCBjaGFpbiwgaWRlbnQpOworICAgICAgICAgICAg
ICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICAgICAgZHVtcENoYWluKG91dCwgZXhl
YywgY2hhaW4sIGlkZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZUxpc3QpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCBsaXN0
ID0gJXA6IFsiLCBzdHJ1Y3R1cmVMaXN0KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKG91
dCwgIiwgbGlzdCA9ICVwOiBbIiwgc3RydWN0dXJlTGlzdCk7CiAgICAgICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCIoIik7Ci0gICAgICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1
cmUoImJhc2UiLCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLmJhc2UuZ2V0KCksIGlkZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGYoIigiKTsKKyAgICAgICAgICAgICAgICAgICAgZHVtcFN0cnVj
dHVyZShvdXQsICJiYXNlIiwgZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS5iYXNlLmdldCgp
LCBpZGVudCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVMaXN0LT5saXN0W2ld
LmlzQ2hhaW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVMaXN0LT5s
aXN0W2ldLnUuY2hhaW4uZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wQ2hhaW4oZXhlYywg
c3RydWN0dXJlTGlzdC0+bGlzdFtpXS51LmNoYWluLmdldCgpLCBpZGVudCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkdW1wQ2hhaW4ob3V0LCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLnUuY2hh
aW4uZ2V0KCksIGlkZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVM
aXN0LT5saXN0W2ldLnUucHJvdG8uZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wU3RydWN0
dXJlKCJwcm90byIsIGV4ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0udS5wcm90by5nZXQoKSwg
aWRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJwcm90byIsIGV4
ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0udS5wcm90by5nZXQoKSwgaWRlbnQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCIpIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiki
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIl0iKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgZGF0YUxvZ0YoIikiKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0K
ICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRDYWxsT3AoRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBD
YWNoZUR1bXBNb2RlIGNhY2hlRHVtcE1vZGUpCit2b2lkIENvZGVCbG9jazo6cHJpbnRDYWxsT3Ao
UHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IElu
c3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlIGNhY2hlRHVtcE1v
ZGUpCiB7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgYXJnQ291
bnQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdCAlcywgJWQsICVkIiwgbG9jYXRp
b24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuYykuZGF0YSgpLCBhcmdDb3VudCwgcmVnaXN0
ZXJPZmZzZXQpOworICAgIG91dC5wcmludGYoIlslNGRdICVzXHQgJXMsICVkLCAlZCIsIGxvY2F0
aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmMpLmRhdGEoKSwgYXJnQ291bnQsIHJlZ2lz
dGVyT2Zmc2V0KTsKICAgICBpZiAoY2FjaGVEdW1wTW9kZSA9PSBEdW1wQ2FjaGVzKSB7CiAjaWYg
RU5BQkxFKExMSU5UKQogICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
aXRbMV0udS5jYWxsTGlua0luZm87CiAgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmxhc3RTZWVu
Q2FsbGVlKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiIGxsaW50KCVwLCBleGVjICVwKSIsCi0g
ICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0g
ICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUtPmV4ZWN1dGFi
bGUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKAorICAgICAgICAgICAgICAgICIgbGxpbnQo
JXAsIGV4ZWMgJXApIiwKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2Fs
bGVlLmdldCgpLAorICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUt
PmV4ZWN1dGFibGUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZGF0YUxvZ0YoIiBs
bGludChub3Qgc2V0KSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KG5vdCBzZXQp
Iik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAobnVtYmVyT2ZDYWxsTGlu
a0luZm9zKCkpIHsKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGdldENhbGxMaW5r
SW5mbyhsb2NhdGlvbikubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgICAgICAgICBpZiAodGFy
Z2V0KQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgaml0KCVwLCBleGVjICVwKSIsIHRhcmdl
dCwgdGFyZ2V0LT5leGVjdXRhYmxlKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiBq
aXQoJXAsIGV4ZWMgJXApIiwgdGFyZ2V0LCB0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiBqaXQobm90IHNldCkiKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KG5vdCBzZXQpIik7CiAgICAgICAgIH0KICNl
bmRpZgogICAgIH0KLSAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
aXQgKz0gMjsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSog
ZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBFeGVj
U3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3Qg
Y2hhciogb3ApCiB7CiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgIGRhdGFMb2dGKCJbJTRkXSAlc1x0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICBvdXQucHJpbnRmKCJbJTRkXSAlc1x0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgIGl0ICs9IDU7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVj
dHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBpbnQgb3BlcmFu
ZCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZShQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBpbnQgb3BlcmFuZCkKIHsKICAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9IHZQQyAtIGluc3RydWN0aW9ucygpLmJlZ2lu
KCk7Ci0gICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwg
bmFtZSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1tvcGVyYW5kXS51LnN0cnVjdHVyZSkudXRm
OCgpLmRhdGEoKSk7CisgICAgb3V0LnByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDW29wZXJhbmRdLnUuc3Ry
dWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0
dXJlcyhjb25zdCBJbnN0cnVjdGlvbiogdlBDKQordm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0
dXJlcyhQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogdlBDKQogewogICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CiAgICAg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQgPSB2UEMgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwogCiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X2dldF9ieV9pZCkpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1cmUoImdldF9ieV9pZCIsIHZQQywg
NCk7CisgICAgICAgIHByaW50U3RydWN0dXJlKG91dCwgImdldF9ieV9pZCIsIHZQQywgNCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKSkgewotICAgICAgICBwcmludFN0cnVj
dHVyZSgiZ2V0X2J5X2lkX3NlbGYiLCB2UEMsIDQpOworICAgICAgICBwcmludFN0cnVjdHVyZShv
dXQsICJnZXRfYnlfaWRfc2VsZiIsIHZQQywgNCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9wcm90bykpIHsKLSAgICAgICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwg
aW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfcHJvdG8iLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgb3V0LnByaW50
ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9w
cm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUg
PT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpIHsKLSAg
ICAgICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zm
c2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRd
LnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVd
LnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzZd
LnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnRmKCIg
IFslNGRdICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRm
OCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkudXRm
OCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWlu
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBd
LnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSkg
ewotICAgICAgICBkYXRhTG9nRigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5z
dHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG91dC5wcmludGYoIiAgWyU0
ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfY2hhaW4iLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpKSB7Ci0gICAgICAgIHByaW50U3Ry
dWN0dXJlKCJwdXRfYnlfaWQiLCB2UEMsIDQpOworICAgICAgICBwcmludFN0cnVjdHVyZShvdXQs
ICJwdXRfYnlfaWQiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfcmVw
bGFjZSkpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1cmUoInB1dF9ieV9pZF9yZXBsYWNlIiwgdlBD
LCA0KTsKKyAgICAgICAgcHJpbnRTdHJ1Y3R1cmUob3V0LCAicHV0X2J5X2lkX3JlcGxhY2UiLCB2
UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00OTgsNyArNDk5LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyhjb25zdCBJbgogICAgIEFTU0VSVCh2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2VuZXJpYykg
fHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lk
X2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X2NhbGwpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2Nh
bGxfZXZhbCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
Y29uc3RydWN0KSk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQordm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewogICAgIC8vIFdlIG9u
bHkgdXNlIHRoZSBFeGVjU3RhdGUqIGZvciB0aGluZ3MgdGhhdCBkb24ndCBhY3R1YWxseSBsZWFk
IHRvIEpTIGV4ZWN1dGlvbiwKICAgICAvLyBsaWtlIGNvbnZlcnRpbmcgYSBKU1N0cmluZyB0byBh
IFN0cmluZy4gSGVuY2UgdGhlIGdsb2JhbEV4ZWMgaXMgYXBwcm9wcmlhdGUuCkBAIC01MDksOTIg
KzUxMCw5MiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4
ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2Rl
KV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIGRhdGFMb2coKnRoaXMpOwot
ICAgIGRhdGFMb2dGKAorICAgIG91dC5wcmludCgqdGhpcyk7CisgICAgb3V0LnByaW50ZigKICAg
ICAgICAgIjogJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXM7ICVkIHBhcmFtZXRlcihzKTsg
JWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKSIsCiAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSksCiAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0
cnVjdGlvbikpLAogICAgICAgICBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
LCBtX251bVZhcnMpOwogICAgIGlmIChzeW1ib2xUYWJsZSgpICYmIHN5bWJvbFRhYmxlKCktPmNh
cHR1cmVDb3VudCgpKQotICAgICAgICBkYXRhTG9nRigiOyAlZCBjYXB0dXJlZCB2YXIocykiLCBz
eW1ib2xUYWJsZSgpLT5jYXB0dXJlQ291bnQoKSk7CisgICAgICAgIG91dC5wcmludGYoIjsgJWQg
Y2FwdHVyZWQgdmFyKHMpIiwgc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCkpOwogICAgIGlm
ICh1c2VzQXJndW1lbnRzKCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoCisgICAgICAgIG91dC5wcmlu
dGYoCiAgICAgICAgICAgICAiOyB1c2VzIGFyZ3VtZW50cywgaW4gciVkLCByJWQiLAogICAgICAg
ICAgICAgYXJndW1lbnRzUmVnaXN0ZXIoKSwKICAgICAgICAgICAgIHVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcigpKSk7CiAgICAgfQogICAgIGlmIChuZWVkc0Z1
bGxTY29wZUNoYWluKCkgJiYgY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCi0gICAgICAgIGRh
dGFMb2dGKCI7IGFjdGl2YXRpb24gaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCkpOwotICAg
IGRhdGFMb2dGKCJcblxuIik7CisgICAgICAgIG91dC5wcmludGYoIjsgYWN0aXZhdGlvbiBpbiBy
JWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKSk7CisgICAgb3V0LnByaW50ZigiXG5cbiIpOwogCiAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAg
ICBjb25zdCBJbnN0cnVjdGlvbiogZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CiAgICAgZm9y
IChjb25zdCBJbnN0cnVjdGlvbiogaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICBkdW1wQnl0ZWNvZGUoZXhlYywgYmVnaW4sIGl0KTsKKyAgICAgICAgZHVtcEJ5dGVjb2RlKG91
dCwgZXhlYywgYmVnaW4sIGl0KTsKIAogICAgIGlmICghbV9pZGVudGlmaWVycy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuSWRlbnRpZmllcnM6XG4iKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiXG5JZGVudGlmaWVyczpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7CiAgICAgICAg
IGRvIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiICBpZCV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpKSwgbV9pZGVudGlmaWVyc1tpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSAhPSBtX2lkZW50aWZpZXJzLnNpemUoKSk7
CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnN0YW50UmVnaXN0ZXJzLmlzRW1wdHkoKSkgewotICAg
ICAgICBkYXRhTG9nRigiXG5Db25zdGFudHM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5D
b25zdGFudHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiICAgayV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
KSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmdldCgp
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgIGsldSA9ICVzXG4i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhlYywgbV9j
b25zdGFudFJlZ2lzdGVyc1tpXS5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAr
K2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKSk7CiAg
ICAgfQogCiAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlJl
Z0V4cHMoKSkgewotICAgICAgICBkYXRhTG9nRigiXG5tX3JlZ2V4cHM6XG4iKTsKKyAgICAgICAg
b3V0LnByaW50ZigiXG5tX3JlZ2V4cHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICByZSV1ID0gJXNcbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpKSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV91bmxpbmtlZENvZGUtPnJl
Z2V4cChpKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgIHJlJXUg
PSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCByZWdleHBUb1NvdXJjZVN0cmluZyht
X3VubGlua2VkQ29kZS0+cmVnZXhwKGkpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICsr
aTsKICAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKICAgICB9CiAKICNpZiBFTkFCTEUoSklU
KQogICAgIGlmICghbV9zdHJ1Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBkYXRh
TG9nRigiXG5TdHJ1Y3R1cmVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuU3RydWN0dXJl
czpcbiIpOwogI2VuZGlmCiAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuRXhjZXB0
aW9uIEhhbmRsZXJzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuRXhjZXB0aW9uIEhhbmRs
ZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICBkYXRhTG9nRigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBb
JTRkXSB9XG4iLCBpICsgMSwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5zdGFy
dCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5lbmQsIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaV0udGFyZ2V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlx0
ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6IFslNGRdIHRhcmdldDogWyU0ZF0gfVxuIiwgaSArIDEs
IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uc3RhcnQsIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5kLCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
W2ldLnRhcmdldCk7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3Jh
cmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKSk7CiAgICAgfQogICAgIAogICAgIGlm
IChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJJbW1lZGlhdGUgU3dpdGNoIEp1bXAgVGFi
bGVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIkltbWVkaWF0ZSBTd2l0Y2ggSnVtcCBUYWJs
ZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCIgICUxZCA9IHtcbiIsIGkpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
ICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9IDA7CiAgICAgICAgICAg
ICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFyZURhdGEtPm1faW1t
ZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVuZCgpOwogICAgICAgICAg
ICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVEYXRh
LT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEqaXRl
cikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0YoIlx0XHQlNGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3
aXRjaEp1bXBUYWJsZXNbaV0ubWluLCAqaXRlcik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50
ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRyeSArIG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dp
dGNoSnVtcFRhYmxlc1tpXS5taW4sICppdGVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGRhdGFMb2dGKCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgICAgIH1c
biIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogICAgIAogICAgIGlm
IChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJcbkNoYXJhY3RlciBTd2l0Y2ggSnVtcCBU
YWJsZXM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5DaGFyYWN0ZXIgU3dpdGNoIEp1bXAg
VGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBpbnQgZW50cnkgPSAwOwogICAgICAg
ICAgICAgVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5t
X2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQoKTsKICAgICAg
ICAgICAgIGZvciAoVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yYXJl
RGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuYmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytlbnRyeSkgewpAQCAtNjAyLDk2ICs2MDMsOTYgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0
ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZGKSk7CiAgICAgICAgICAgICAgICAg
VUNoYXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkgKyBtX3JhcmVEYXRhLT5tX2NoYXJh
Y3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigi
XHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0YSgpLCAqaXRl
cik7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICB9XG4iKTsKKyAgICAg
ICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFN0cmluZygmY2gs
IDEpLnV0ZjgoKS5kYXRhKCksICppdGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91
dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxl
IChpIDwgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAg
ICAgfQogICAgIAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJcblN0cmluZyBT
d2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5TdHJpbmcgU3dp
dGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBk
byB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBTdHJpbmdKdW1wVGFi
bGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAg
ICBmb3IgKFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFi
bGUuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoaXRlci0+a2V5KS51dGY4KCkuZGF0YSgp
LCBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOwotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAg
IH1cbiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHRcIiVzXCIgPT4gJTA0ZFxu
IiwgU3RyaW5nKGl0ZXItPmtleSkudXRmOCgpLmRhdGEoKSwgaXRlci0+dmFsdWUuYnJhbmNoT2Zm
c2V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAg
KytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgZGF0YUxvZ0YoIlxuIik7CisgICAgb3V0LnBy
aW50ZigiXG4iKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCkK
K3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQp
CiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAgICBzd2l0Y2ggKGV4ZWMtPmlu
dGVycHJldGVyKCktPmdldE9wY29kZUlEKGl0LT51Lm9wY29kZSkpIHsKICAgICAgICAgY2FzZSBv
cF9lbnRlcjogewotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGVudGVyIiwgbG9jYXRpb24p
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZW50ZXIiLCBsb2NhdGlvbik7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRp
b246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGNy
ZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9j
cmVhdGVfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRzXHQgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gY3JlYXRlX2FyZ3VtZW50c1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbml0X2xhenlfcmVn
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBvcF9nZXRfY2Fs
bGVlICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gb3BfZ2V0X2NhbGxlZSAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgICsraXQ7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGNy
ZWF0ZV90aGlzICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gY3JlYXRlX3RoaXMgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgICsraXQ7IC8vIFNraXAgdmFsdWUgcHJvZmlsZS4KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X29i
amVjdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19vYmplY3RcdCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3YpLmRh
dGEoKSwgYXJnYyk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywg
JXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIGFyZ3YpLmRhdGEoKSwgYXJnYyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7IC8v
IFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOiB7CiAgICAgICAgICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X2FycmF5
X3dpdGhfc2l6ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBsZW5ndGgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBuZXdfYXJyYXlfd2l0aF9zaXplXHQgJXMsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGxlbmd0aCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHBy
b2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjk5LDE0OSArNzAwLDE0
OSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfYXJyYXlfYnVmZmVyXHQgJXMsICVk
LCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIGFyZ3YsIGFy
Z2MpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2FycmF5X2J1ZmZlclx0ICVzLCAl
ZCwgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBh
cmdjKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHByb2Zp
bGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19y
ZWdleHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0Yo
IlslNGRdIG5ld19yZWdleHBcdCAlcywgIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19yZWdleHBcdCAl
cywgIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAg
ICAgIGlmIChyMCA+PTAgJiYgcjAgPCAoaW50KW1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlJlZ0V4
cHMoKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXMiLCByZWdleHBOYW1lKHJlMCwgcmVn
ZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdl
eHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoImJhZF9yZWdleHAoJWQpIiwgcmUwKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbW92OiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG1vdlx0XHQgJXMsICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBtb3ZcdFx0ICVzLCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
b3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25vdDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm5vdCIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAibm90Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2VxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImVxIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAiZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
ZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImVxX251bGwiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImVxX251bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfbmVxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm5lcSIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgIm5lcSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9uZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgIm5lcV9udWxsIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJuZXFfbnVsbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9zdHJpY3RlcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJzdHJpY3RlcSIpOworICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInN0cmljdGVxIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25zdHJpY3RlcTogewotICAgICAgICAg
ICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJuc3RyaWN0ZXEiKTsKKyAgICAg
ICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuc3RyaWN0ZXEi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbGVzczog
ewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJsZXNzIik7
CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibGVz
cyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sZXNz
ZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibGVz
c2VxIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAibGVzc2VxIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2dyZWF0ZXI6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiZ3JlYXRlciIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImdyZWF0ZXIiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcmVfaW5jOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBw
cmVfaW5jXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwcmVfaW5jXHRcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2RlYzogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHJlX2RlY1x0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gcHJlX2RlY1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3Bvc3RfaW5jOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicG9zdF9pbmMiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfaW5jIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Bvc3RfZGVjOiB7Ci0gICAgICAgICAgICBwcmlu
dFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicG9zdF9kZWMiKTsKKyAgICAgICAgICAgIHBy
aW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfZGVjIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RvX2pzbnVtYmVyOiB7Ci0g
ICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAidG9fanNudW1iZXIi
KTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRv
X2pzbnVtYmVyIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX25lZ2F0ZTogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm5lZ2F0ZSIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAibmVnYXRlIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2FkZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlv
biwgaXQsICJhZGQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJhZGQiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX211bDogewotICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKICAgICAgICAgICAgICsraXQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RpdjogewotICAg
ICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJkaXYiKTsKKyAgICAg
ICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkaXYiKTsKICAg
ICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX21vZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJtb2QiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJtb2QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc3ViOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInN1YiIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInN1YiIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbHNoaWZ0OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFy
eU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxzaGlmdCIpOworICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxzaGlmdCIpOwogICAgICAgICAgICAgYnJl
YWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yc2hpZnQ6IHsKLSAg
ICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicnNoaWZ0Iik7Cisg
ICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicnNoaWZ0
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Vyc2hp
ZnQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAidXJz
aGlmdCIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInVyc2hpZnQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfYml0YW5kOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImJpdGFuZCIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImJpdGFuZCIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYml0eG9yOiB7Ci0gICAgICAgICAgICBw
cmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIpOworICAgICAgICAgICAg
cHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIpOwogICAgICAg
ICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfYml0b3I6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0
LCAiYml0b3IiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJiaXRvciIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC04NTAsNDggKzg1MSw0OCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXMsICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0
ICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbnN0YW5jZW9mXHRcdCAlcywgJXMsICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90eXBlb2Y6IHsKLSAgICAgICAgICAgIHByaW50
VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJ0eXBlb2YiKTsKKyAgICAgICAgICAgIHByaW50
VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInR5cGVvZiIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6IHsKLSAgICAg
ICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc191bmRlZmluZWQiKTsK
KyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX3Vu
ZGVmaW5lZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9pc19ib29sZWFuOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiaXNfYm9vbGVhbiIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAiaXNfYm9vbGVhbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9pc19udW1iZXI6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKKyAgICAgICAgICAgIHByaW50VW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX251bWJlciIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc19zdHJpbmc6IHsKLSAgICAgICAg
ICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19zdHJpbmciKTsKKyAgICAg
ICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX3N0cmluZyIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc19vYmpl
Y3Q6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19v
YmplY3QiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImlzX29iamVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9pc19mdW5jdGlvbjogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImlzX2Z1bmN0aW9uIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbjogewotICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImluIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF90b19iYXNlX3ZhcmlhYmxlOgpAQCAtOTAwLDgg
KzkwMSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAg
ICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCB2YWx1
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHJlc29sdmVJbmZvID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHV0X3RvX2Jhc2Vc
dCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0
YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHZhbHVlKS5kYXRhKCksIHJlc29sdmVJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IlslNGRdIHB1dF90b19iYXNlXHQgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB2YWx1ZSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZToK
QEAgLTkxMywxNCArOTE0LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0
YXRlKiAKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHJlc29sdmVJ
bmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcmVz
b2x2ZVx0XHQgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZv
KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVcdFx0ICVzLCAlcywgJWQiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luaXRfZ2xv
YmFsX2NvbnN0X25vcDogewotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGluaXRfZ2xvYmFs
X2NvbnN0X25vcFx0IiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gaW5p
dF9nbG9iYWxfY29uc3Rfbm9wXHQiLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKQEAgLTkzMCw4ICs5MzEsOCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgIGNhc2Ugb3Bf
aW5pdF9nbG9iYWxfY29uc3Q6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
cmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGluaXRfZ2xvYmFsX2NvbnN0XHQgZyVkKCVwKSwgJXMiLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmpl
Y3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gaW5pdF9nbG9iYWxfY29uc3RcdCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBtX2dsb2JhbE9i
amVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVy
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05MzksOCArOTQwLDggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICBjYXNlIG9w
X2luaXRfZ2xvYmFsX2NvbnN0X2NoZWNrOiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJbJTRkXSBpbml0X2dsb2JhbF9jb25zdF9jaGVja1x0IGclZCglcCksICVzIiwgbG9jYXRpb24s
IG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdp
c3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIGluaXRfZ2xvYmFsX2NvbnN0X2NoZWNrXHQgZyVkKCVwKSwgJXMiLCBs
b2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRl
ciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtOTU1LDE2ICs5NTYsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgaW50IGlzU3RyaWN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgcmVzb2x2ZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBwdXRUb0Jhc2VJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiWyU0ZF0gcmVzb2x2ZV9iYXNlJXNcdCAlcywgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCBp
c1N0cmljdCA/ICJfc3RyaWN0IiA6ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBwdXRU
b0Jhc2VJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVfYmFzZSVzXHQg
JXMsICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCByZXNvbHZlSW5mbywgcHV0VG9CYXNlSW5mbyk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0
Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Vuc3Vy
ZV9wcm9wZXJ0eV9leGlzdHM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAlcywgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGVuc3VyZV9w
cm9wZXJ0eV9leGlzdHNcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3dpdGhf
YmFzZTogewpAQCAtOTczLDggKzk3NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
RXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByZXNvbHZlSW5mbyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHB1dFRvQmFzZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2dGKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywgJXMsICVzLCAlZCwgJWQiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2
ZUluZm8sIHB1dFRvQmFzZUluZm8pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcmVzb2x2
ZV93aXRoX2Jhc2UgJXMsICVzLCAlcywgJWQsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlk
MCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBwdXRUb0Jhc2VJbmZv
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC05ODMsOCArOTg0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUq
IAogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmVzb2x2ZUluZm8g
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSByZXNvbHZl
X3dpdGhfdGhpcyAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1f
aWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Ci0gICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfdGhpcyAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTAwMiw1MCArMTAwMyw1MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0
ZSogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2FycmF5X2xlbmd0aDoKICAgICAgICAgY2FzZSBvcF9nZXRfc3RyaW5nX2xlbmd0aDogewot
ICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0KTsKLSAgICAgICAg
ICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKGV4ZWMsIGxvY2F0aW9uKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHBy
aW50R2V0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0KTsKKyAgICAgICAgICAgIHByaW50
R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgZXhlYywgbG9jYXRpb24pOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoOiB7
Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgImdldF9hcmd1bWVudHNfbGVuZ3RoIik7CiAgICAgICAgICAgICBpdCsrOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsK
LSAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZCIpOworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJwdXRfYnlfaWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfb3V0X29mX2xpbmUiKTsKKyAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291
dF9vZl9saW5lIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOworICAgICAgICAgICAgcHJpbnRQ
dXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbjogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZTogewotICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lIik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGlu
ZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKLSAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7Ci0g
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
X291dF9vZl9saW5lIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2V0
dGVyX3NldHRlcjogewpAQCAtMTA1MywyNCArMTA1NCwyNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlsl
NGRdIHB1dF9nZXR0ZXJfc2V0dGVyXHQgJXMsICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHV0X2dldHRlcl9zZXR0
ZXJcdCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5X2lkOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGRlbF9ieV9pZFx0ICVzLCAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRh
dGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBkZWxfYnlfaWRcdCAlcywgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9i
eV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRfYnlfdmFs
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9ieV92YWxcdCAlcywgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTA3OSw4ICsxMDgwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUq
IAogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGdldF9hcmd1bWVudF9ieV92
YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZ2V0X2FyZ3VtZW50X2J5X3ZhbFx0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMDkyLDE2ICsxMDkzLDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjUgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRf
YnlfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjQpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHI1KS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZ2V0X2J5X3BuYW1lXHQgJXMsICVzLCAl
cywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHI0
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTA5LDIwOCArMTExMCwyMDggQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG4wID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBwdXRfYnlfaW5kZXhcdCAlcywgJXUsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1
LCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9qbXA6IHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbXBcdFx0ICVkKC0+
JWQpIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gam1wXHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9sb29wOiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcFx0XHQgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSBsb29wXHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9q
dHJ1ZTogewotICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoZXhlYywgYmVnaW4sIGl0
LCBsb2NhdGlvbiwgImp0cnVlIik7CisgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChv
dXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqdHJ1ZSIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX3RydWU6IHsKLSAgICAgICAg
ICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJsb29w
X2lmX3RydWUiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywg
YmVnaW4sIGl0LCBsb2NhdGlvbiwgImxvb3BfaWZfdHJ1ZSIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2ZhbHNlOiB7Ci0gICAgICAgICAg
ICBwcmludENvbmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9p
Zl9mYWxzZSIpOworICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0LCBleGVjLCBi
ZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9pZl9mYWxzZSIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZmFsc2U6IHsKLSAgICAgICAgICAgIHByaW50
Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZmFsc2UiKTsKKyAg
ICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywgYmVnaW4sIGl0LCBsb2Nh
dGlvbiwgImpmYWxzZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9qZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoZXhl
YywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImplcV9udWxsIik7CisgICAgICAgICAgICBwcmludENv
bmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZXFfbnVsbCIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmVxX251
bGw6IHsKLSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwg
bG9jYXRpb24sICJqbmVxX251bGwiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1w
KG91dCwgZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImpuZXFfbnVsbCIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBTcGVjaWFsOjpQ
b2ludGVyIHBvaW50ZXIgPSAoKytpdCktPnUuc3BlY2lhbFBvaW50ZXI7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0
ZF0gam5lcV9wdHJcdFx0ICVzLCAlZCAoJXApLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcG9pbnRlciwgbV9nbG9iYWxPYmplY3QtPmFjdHVhbFBv
aW50ZXJGb3IocG9pbnRlciksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gam5lcV9wdHJcdFx0ICVzLCAlZCAoJXApLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcG9pbnRlciwgbV9nbG9iYWxP
YmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9pbnRlciksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2Nh
dGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2ps
ZXNzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpsZXNzXHRc
dCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgt
PiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVz
LCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gamdyZWF0ZXJlcVx0XHQgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVzczogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIGpubGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIGpuZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+JWQp
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzczogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMsICVkKC0+JWQpIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzZXE6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9pZl9sZXNzZXFcdCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NlcVx0ICVzLCAlcywg
JWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2dy
ZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9p
Zl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbG9vcF9pZl9ncmVh
dGVyXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24g
KyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9oaW50OiB7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiWyU0ZF0gbG9vcF9oaW50IiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gbG9vcF9oaW50IiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06IHsKICAgICAgICAgICAgIGludCB0YWJsZUlu
ZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3dpdGNoX2lt
bVx0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdl
dCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVl
UmVnaXN0ZXIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzd2l0Y2hfaW1t
XHQgJWQsICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0
LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVS
ZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVk
LCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9j
YXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0
ZXIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVk
LCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9j
YXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0
ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShv
dXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc3dpdGNoX3N0cmluZzogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQgJWQs
ICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2Nh
dGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3Rl
cikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHN3aXRjaF9zdHJpbmdcdCAl
ZCwgJWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxv
Y2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lz
dGVyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
b3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25ld19mdW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHNob3VsZENoZWNrID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiWyU0ZF0gbmV3X2Z1bmNcdFx0ICVzLCBmJWQsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hvdWxkQ2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5j
aGVja2VkPiIpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2Z1bmNcdFx0ICVzLCBm
JWQsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hv
dWxkQ2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5jaGVja2VkPiIpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3UsdCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfZnVuY19l
eHBcdCAlcywgZiVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBm
MCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywgZiVkIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICAg
ICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMpOwor
ICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwg
RHVtcENhY2hlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMpOworICAgICAgICAgICAgcHJpbnRDYWxs
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczogewpAQCAtMTMxOCw2MCArMTMxOSw2MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgdGhpc1ZhbHVlID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRzID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjYWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZCIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cyku
ZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBj
YWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9v
ZmZfYWN0aXZhdGlvbjogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gdGVhcl9vZmZfYWN0aXZhdGlvblx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHRlYXJfb2ZmX2FyZ3VtZW50cyAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHRlYXJf
b2ZmX2FyZ3VtZW50cyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHJldFx0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gcmV0XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjYWxsX3B1dF9yZXN1
bHRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIGNhbGxfcHV0X3Jlc3VsdFx0XHQgJXMiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXRfb2JqZWN0
X29yX3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NvbnN0cnVjdDogewotICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcyk7CisgICAgICAgICAgICBwcmludENhbGxPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNvbnN0cnVjdCIsIER1bXBDYWNoZXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zdHJjYXQ6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgY291bnQgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzdHJjYXRcdFx0ICVzLCAlcywgJWQi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBjb3VudCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzdHJj
YXRcdFx0ICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBjb3VudCk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHRvX3ByaW1p
dGl2ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BuYW1lczogewpAQCAtMTM4
MCw4ICsxMzgxLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAog
ICAgICAgICAgICAgaW50IHIyID0gaXRbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIz
ID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzVdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9wbmFtZXNcdCAlcywgJXMs
ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24g
KyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFt
ZXMpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzkyLDU0ICsxMzkz
LDU0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAg
ICAgIGludCBzaXplID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGl0ZXIgPSBp
dFs1XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXRbNl0udS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG5leHRfcG5hbWVcdCAlcywgJXMsICVzLCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBp
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCBpdGVyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRlc3QpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGkpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHNpemUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGl0ZXIpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0ICs9IE9Q
Q09ERV9MRU5HVEgob3BfbmV4dF9wbmFtZSkgLSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHB1
c2hfd2l0aF9zY29wZVx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1c2hfd2l0aF9zY29wZVx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6IHsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJbJTRkXSBwb3Bfc2NvcGUiLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBwb3Bfc2NvcGUiLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOiB7CiAgICAgICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwdXNoX25hbWVfc2Nv
cGUgXHQlcywgJXMsICV1IiwgbG9jYXRpb24sIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgYXR0cmlidXRlcyk7Ci0g
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwdXNoX25hbWVfc2NvcGUgXHQlcywgJXMsICV1Iiwg
bG9jYXRpb24sIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wX3Njb3BlczogewogICAgICAgICAgICAg
aW50IHNjb3BlRGVsdGEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbXBf
c2NvcGVzXHReJWQsICVkKC0+JWQpIiwgbG9jYXRpb24sIHNjb3BlRGVsdGEsIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gam1wX3Njb3Blc1x0
XiVkLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9jYXRjaDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY2F0Y2hcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGNhdGNo
XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGhyb3c6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIlslNGRdIHRocm93XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSB0aHJvd1x0XHQgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjogewogICAg
ICAgICAgICAgaW50IGswID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgazEg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSB0aHJvd19z
dGF0aWNfZXJyb3JcdCAlcywgJXMiLCBsb2NhdGlvbiwgY29uc3RhbnROYW1lKGV4ZWMsIGswLCBn
ZXRDb25zdGFudChrMCkpLmRhdGEoKSwgazEgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIHRocm93X3N0YXRpY19lcnJvclx0ICVzLCAlcyIsIGxvY2F0aW9u
LCBjb25zdGFudE5hbWUoZXhlYywgazAsIGdldENvbnN0YW50KGswKSkuZGF0YSgpLCBrMSA/ICJ0
cnVlIiA6ICJmYWxzZSIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2RlYnVnOiB7CkBAIC0xNDQ3LDI2ICsxNDQ4LDI2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCBmaXJzdExpbmUgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IGNvbHVtbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGRlYnVnXHRcdCAlcywgJWQsICVkLCAlZCIsIGxvY2F0
aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgY29s
dW1uKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGRlYnVnXHRcdCAlcywgJWQsICVkLCAl
ZCIsIGxvY2F0aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0
TGluZSwgY29sdW1uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDogewogICAgICAgICAgICAgaW50IGZ1bmN0aW9uID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHJvZmlsZV93
aWxsX2NhbGwgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHJvZmlsZV93aWxsX2NhbGwgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6
IHsKICAgICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZ0YoIlslNGRdIHByb2ZpbGVfZGlkX2NhbGxcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCJbJTRkXSBwcm9maWxlX2RpZF9jYWxsXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2VuZDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZW5kXHRcdCAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSBlbmRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQpAQCAtMTQ3NiwxMSArMTQ3NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KEV4ZWNTdGF0ZSogCiAgICAgfQogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIGNvbnN0IEluc3RydWN0
aW9uKiBpdCA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZU9mZnNldDsKLSAgICBk
dW1wQnl0ZWNvZGUoZXhlYywgaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgaXQpOworICAgIGR1bXBC
eXRlY29kZShvdXQsIGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsKIH0KIAogI2lm
IERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAKIAogLy8gU2V0IEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyB0byAxIHRvIGVuYWJsZSBy
ZWNvcmRpbmcgYnl0ZWNvZGUgZ2VuZXJhdG9yCiAvLyBjb21tZW50cyBmb3IgdGhlIGJ5dGVjb2Rl
cyB0aGF0IGl0IGdlbmVyYXRlcy4gVGhpcyB3aWxsIGFsbG93Ci0vLyBDb2RlQmxvY2s6OmR1bXAo
KSB0byBwcm92aWRlIHNvbWUgY29udGV4dHVhbCBpbmZvIGFib3V0IHRoZSBieXRlY29kZXMuCisv
LyBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpIHRvIHByb3ZpZGUgc29tZSBjb250ZXh0dWFsIGlu
Zm8gYWJvdXQgdGhlIGJ5dGVjb2Rlcy4KIC8vCiAvLyBUaGUgd2F5IHRoaXMgY29tbWVudCBzeXN0
ZW0gd29ya3MgaXMgYXMgZm9sbG93czoKIC8vIDEuIFRoZSBCeXRlY29kZUdlbmVyYXRvciBjYWxs
cyBwcmVwZW5kQ29tbWVudCgpIHdpdGggYSBjb25zdGFudCBjb21tZW50CkBAIC04OSw3ICs4OSw3
IEBACiAvLyAgICBwcmVwZW5kZWQgY29tbWVudCB3aWxsIGJlIHJlY29yZGVkIHdpdGggdGhlIFBD
IG9mIHRoZSBvcGNvZGUgYmVpbmcKIC8vICAgIGVtaXR0ZWQuIFRoaXMgY29tbWVudCBpcyBiZWlu
ZyByZWNvcmRlZCBpbiB0aGUgQ29kZUJsb2NrJ3MKIC8vICAgIG1fYnl0ZWNvZGVDb21tZW50cy4K
LS8vIDMuIFdoZW4gQ29kZUJsb2NrOjpkdW1wKCkgaXMgY2FsbGVkLCBpdCB3aWxsIHBhaXIgdXAg
dGhlIGNvbW1lbnRzIHdpdGgKKy8vIDMuIFdoZW4gQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKSBp
cyBjYWxsZWQsIGl0IHdpbGwgcGFpciB1cCB0aGUgY29tbWVudHMgd2l0aAogLy8gICAgdGhlaXIg
Y29ycmVzcG9uZGluZyBieXRlY29kZXMgYmFzZWQgb24gdGhlIGJ5dGVjb2RlIGFuZCBjb21tZW50
J3MKIC8vICAgIFBDLiBJZiBhIG1hdGNoaW5nIHBhaXIgaXMgZm91bmQsIHRoZSBjb21tZW50IHdp
bGwgYmUgcHJpbnRlZCBhZnRlcgogLy8gICAgdGhlIGJ5dGVjb2RlLiBJZiBub3QsIG5vIGNvbW1l
bnQgaXMgcHJpbnRlZC4KQEAgLTE2MCwxNiArMTYwLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlw
ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisjZWxzZQorICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lVmVyc2lvbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHZpc2l0QWdn
cmVnYXRlKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3Rp
Y3MoKTsKIAotICAgICAgICB2b2lkIGR1bXBCeXRlY29kZSgpOwotICAgICAgICB2b2lkIGR1bXBC
eXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIHZvaWQgcHJpbnRTdHJ1
Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUo
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCk7CisgICAg
ICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7Cisg
ICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpOworICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0
IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0m
LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKIAog
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2Rl
OyB9CiAKQEAgLTE4OSwxMCArMTk0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoaW50IGxvY2F0aW9uKTsKKyAgICAgICAgdm9pZCBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShQcmludFN0cmVhbSYsIGludCBsb2NhdGlvbik7
CiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQotICAgICAgICBjb25zdCBjaGFyKiBjb21t
ZW50Rm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICB2
b2lkIGR1bXBCeXRlY29kZUNvbW1lbnRzKCk7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnRG
b3JCeXRlY29kZU9mZnNldChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGVDb21tZW50cyhQcmludFN0cmVhbSYpOwogI2VuZGlm
CiAKICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCk7CkBAIC0xMjE1LDE3ICsxMjIwLDE3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KCptX2dsb2JhbERh
dGEsIG93bmVyRXhlY3V0YWJsZSgpLCBjb25zdGFudHNbaV0uZ2V0KCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKKyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYpOwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0
ZSosIGludCByKSBjb25zdDsKLSAgICAgICAgdm9pZCBwcmludFVuYXJ5T3AoRXhlY1N0YXRlKiwg
aW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAg
ICAgIHZvaWQgcHJpbnRCaW5hcnlPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IElu
c3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKLSAgICAgICAgdm9pZCBwcmludENvbmRpdGlv
bmFsSnVtcChFeGVjU3RhdGUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IEluc3RydWN0aW9u
KiYsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApOwotICAgICAgICB2b2lkIHByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7Ci0g
ICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uKTsKKyAgICAgICAgdm9pZCBwcmludFVuYXJ5T3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUq
LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKKyAg
ICAgICAgdm9pZCBwcmludEJpbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CisgICAgICAgIHZv
aWQgcHJpbnRDb25kaXRpb25hbEp1bXAoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBjb25zdCBJ
bnN0cnVjdGlvbiosIGNvbnN0IEluc3RydWN0aW9uKiYsIGludCBsb2NhdGlvbiwgY29uc3QgY2hh
ciogb3ApOworICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0
YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKKyAgICAgICAgdm9pZCBw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2Nh
dGlvbik7CiAgICAgICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1bXBDYWNoZXMsIERvbnREdW1w
Q2FjaGVzIH07Ci0gICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSk7
Ci0gICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CisgICAgICAgIHZvaWQgcHJpbnRD
YWxsT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3Ry
dWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlKTsKKyAgICAgICAgdm9pZCBw
cmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwogICAgICAgICB2b2lkIHZpc2l0U3Ry
dWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0aW9uKiB2UEMpOwogICAgICAgICAKICNpZiBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTEg
QEAgQ29kZUJsb2NrSGFzaCBJbmxpbmVDYWxsRnJhbWU6Omhhc2goKSBjbwogICAgIHJldHVybiBl
eGVjdXRhYmxlLT5oYXNoRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKTsKIH0KIAorQ29kZUJsb2Nr
KiBJbmxpbmVDYWxsRnJhbWU6OmJhc2VsaW5lQ29kZUJsb2NrKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXhlY3V0YWJsZS0+YmFzbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7
Cit9CisKIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CiAgICAgb3V0LnByaW50KCIjIiwgaGFzaCgpLCAiOjwiLCBSYXdQb2ludGVyKGV4ZWN1dGFi
bGUuZ2V0KCkpLCAiLCBiYyMiLCBjYWxsZXIuYnl0ZWNvZGVJbmRleCwgIiwgIiwgc3BlY2lhbGl6
YXRpb25LaW5kKCksICI+Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsOCBA
QCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2go
KSBjb25zdDsKICAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrKCkgY29uc3Q7
CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lv
biAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE0ICs1MSw3IEBAIHZvaWQgSklURGlzYXNzZW1ibGVy
OjpkdW1wKFByaW50U3RyZWFtJiAKICAgICBvdXQucHJpbnQoIiAgIENvZGUgYXQgWyIsIFJhd1Bv
aW50ZXIobGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGlj
X2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1
Z1NpemUoKSksICIpOlxuIik7CiAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwg
bV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRoWzBdKTsKICAg
ICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZmlyc3RTbG93TGFiZWw7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aC5zaXpl
KCk7ICsraSkgewotICAgICAgICBpZiAobV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRo
W2ldLmlzU2V0KCkpIHsKLSAgICAgICAgICAgIGZpcnN0U2xvd0xhYmVsID0gbV9sYWJlbEZvckJ5
dGVjb2RlSW5kZXhJblNsb3dQYXRoW2ldOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZHVtcEZvckluc3RydWN0aW9ucyhvdXQsIGxpbmtCdWZmZXIsICIgICAgIiwg
bV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRoLCBmaXJzdFNsb3dMYWJlbC5pc1NldCgp
ID8gZmlyc3RTbG93TGFiZWwgOiBtX2VuZE9mU2xvd1BhdGgpOworICAgIGR1bXBGb3JJbnN0cnVj
dGlvbnMob3V0LCBsaW5rQnVmZmVyLCAiICAgICIsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5N
YWluUGF0aCwgZmlyc3RTbG93TGFiZWwoKSk7CiAgICAgb3V0LnByaW50KCIgICAgKEVuZCBPZiBN
YWluIFBhdGgpXG4iKTsKICAgICBkdW1wRm9ySW5zdHJ1Y3Rpb25zKG91dCwgbGlua0J1ZmZlciwg
IiAgICAoUykgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoLCBtX2VuZE9mU2xv
d1BhdGgpOwogICAgIG91dC5wcmludCgiICAgIChFbmQgT2YgU2xvdyBQYXRoKVxuIik7CkBAIC03
MSwyMiArNjQsNjAgQEAgdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXAoTGlua0J1ZmZlciYgbAog
ICAgIGR1bXAoV1RGOjpkYXRhRmlsZSgpLCBsaW5rQnVmZmVyKTsKIH0KIAotdm9pZCBKSVREaXNh
c3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZl
ciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6
OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpCit2b2lkIEpJ
VERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcihQQlA6OkRhdGFiYXNlJiBkYXRhYmFzZSwg
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8
IGxhYmVscy5zaXplKCk7KSB7CisgICAgUEJQOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24gPSBk
YXRhYmFzZS5uZXdDb21waWxhdGlvbihtX2NvZGVCbG9jaywgUEJQOjpCYXNlbGluZSk7CisgICAg
CisgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgIAorICAgIG91dC5yZXNldCgpOworICAg
IGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fc3RhcnRPZkNvZGUsIG1fbGFiZWxG
b3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFswXSk7CisgICAgY29tcGlsYXRpb24tPmFkZERlc2Ny
aXB0aW9uKFBCUDo6Q29tcGlsZWRCeXRlY29kZShQQlA6Ok9yaWdpblN0YWNrKCksIG91dC50b0NT
dHJpbmcoKSkpOworICAgIAorICAgIHJlcG9ydEluc3RydWN0aW9ucyhjb21waWxhdGlvbiwgbGlu
a0J1ZmZlciwgIiAgICAiLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFpblBhdGgsIGZpcnN0
U2xvd0xhYmVsKCkpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBp
bGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCAiICAgIChFbmQgT2YgTWFpbiBQYXRoKVxu
IikpOworICAgIHJlcG9ydEluc3RydWN0aW9ucyhjb21waWxhdGlvbiwgbGlua0J1ZmZlciwgIiAg
ICAoUykgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoLCBtX2VuZE9mU2xvd1Bh
dGgpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNv
ZGUoUEJQOjpPcmlnaW5TdGFjaygpLCAiICAgIChFbmQgT2YgU2xvdyBQYXRoKVxuIikpOworICAg
IG91dC5yZXNldCgpOworICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fZW5k
T2ZTbG93UGF0aCwgbV9lbmRPZkNvZGUpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlv
bihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5n
KCkpKTsKK30KKworTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIEpJVERpc2Fzc2VtYmxlcjo6Zmlyc3RT
bG93TGFiZWwoKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBmaXJzdFNsb3dMYWJlbDsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNs
b3dQYXRoLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xhYmVsRm9yQnl0ZWNvZGVJbmRl
eEluU2xvd1BhdGhbaV0uaXNTZXQoKSkgeworICAgICAgICAgICAgZmlyc3RTbG93TGFiZWwgPSBt
X2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbaV07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmlyc3RTbG93TGFiZWwuaXNTZXQoKSA/IGZp
cnN0U2xvd0xhYmVsIDogbV9lbmRPZlNsb3dQYXRoOworfQorCitWZWN0b3I8RHVtcGVkT3A+IEpJ
VERpc2Fzc2VtYmxlcjo6ZHVtcFZlY3RvckZvckluc3RydWN0aW9ucyhMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+
JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCkKK3sKKyAgICBTdHJpbmdQ
cmludFN0cmVhbSBvdXQ7CisgICAgVmVjdG9yPER1bXBlZE9wPiByZXN1bHQ7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxhYmVscy5zaXplKCk7KSB7CiAgICAgICAgIGlmICgh
bGFiZWxzW2ldLmlzU2V0KCkpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgpOworICAgICAgICBvdXQu
cmVzZXQoKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChEdW1wZWRPcCgpKTsKKyAgICAgICAgcmVz
dWx0Lmxhc3QoKS5pbmRleCA9IGk7CiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUo
aSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbmV4dEluZGV4ID0gaSArIDE7IDsgbmV4dEluZGV4
KyspIHsKICAgICAgICAgICAgIGlmIChuZXh0SW5kZXggPj0gbGFiZWxzLnNpemUoKSkgewogICAg
ICAgICAgICAgICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIGxhYmVsc1tpXSwg
ZW5kTGFiZWwpOworICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0KCkuZGlzYXNzZW1ibHkgPSBv
dXQudG9DU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGxhYmVsc1tuZXh0SW5kZXhdLmlzU2V0KCkpIHsKICAgICAgICAgICAg
ICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBsYWJlbHNbaV0sIGxhYmVsc1tu
ZXh0SW5kZXhdKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubGFzdCgpLmRpc2Fzc2VtYmx5ID0g
b3V0LnRvQ1N0cmluZygpOwogICAgICAgICAgICAgICAgIGkgPSBuZXh0SW5kZXg7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC05NCw2ICsxMjUsMjYgQEAgdm9pZCBK
SVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbgogICAgIH0KIH0KIAordm9pZCBKSVRE
aXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1
ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpCit7Cisg
ICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wZWRPcHMgPSBkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb24o
bGlua0J1ZmZlciwgcHJlZml4LCBsYWJlbHMsIGVuZExhYmVsKTsKKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZHVtcGVkT3BzLnNpemUoKTsgKytpKQorICAgICAgICBvdXQucHJp
bnQoZHVtcGVkT3BzW2ldLmRpc2Fzc2VtYmx5KTsKK30KKwordm9pZCBKSVREaXNhc3NlbWJsZXI6
OnJlcG9ydEluc3RydWN0aW9ucyhQQlA6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiwgTGlua0J1
ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpCit7Cisg
ICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wZWRPcHMgPSBkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb24o
bGlua0J1ZmZlciwgcHJlZml4LCBsYWJlbHMsIGVuZExhYmVsKTsKKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZHVtcGVkT3BzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbXBp
bGF0aW9uLT5hZGREZXNjcmlwdGlvbigKKyAgICAgICAgICAgIFBCUDo6Q29tcGlsZWRCeXRlY29k
ZSgKKyAgICAgICAgICAgICAgICBQQlA6Ok9yaWdpblN0YWNrKFBCUDo6T3JpZ2luKGNvbXBpbGF0
aW9uLT5ieXRlY29kZXMoKSwgZHVtcGVkT3BzW2ldLmluZGV4KSksCisgICAgICAgICAgICAgICAg
ZHVtcGVkT3BzW2ldLmRpc2Fzc2VtYmx5KSk7CisgICAgfQorfQorCiB2b2lkIEpJVERpc2Fzc2Vt
Ymxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtC
dWZmZXIsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBmcm9tLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
dG8pCiB7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZnJvbUxvY2F0aW9uID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGZyb20pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNh
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
c2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNp
bmNsdWRlICJQQlBEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC01OCw5ICs1OSwyMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkdW1w
KExpbmtCdWZmZXImKTsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7
CisgICAgdm9pZCByZXBvcnRUb1Byb2ZpbGVyKFBCUDo6RGF0YWJhc2UmLCBMaW5rQnVmZmVyJik7
CiAKIHByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZpcnN0U2xvd0xhYmVsKCk7
CisgICAgCisgICAgc3RydWN0IER1bXBlZE9wIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXg7Cisg
ICAgICAgIENTdHJpbmcgZGlzYXNzZW1ibHk7CisgICAgfTsKKyAgICBWZWN0b3I8RHVtcGVkT3A+
IGR1bXBWZWN0b3JGb3JJbnN0cnVjdGlvbnMoTGlua0J1ZmZlciYsIGNvbnN0IGNoYXIqIHByZWZp
eCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGVuZExhYmVsKTsKKyAgICAgICAgCiAgICAgdm9pZCBkdW1wRm9ySW5zdHJ1Y3Rpb25z
KFByaW50U3RyZWFtJiwgTGlua0J1ZmZlciYsIGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExh
YmVsKTsKKyAgICB2b2lkIHJlcG9ydEluc3RydWN0aW9ucyhQQlA6OkNvbXBpbGF0aW9uKiwgTGlu
a0J1ZmZlciYsIGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJl
bD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVsKTsKKyAgICAKICAgICB2
b2lkIGR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYsIExpbmtCdWZmZXImLCBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgZnJvbSwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHRvKTsKICAgICAKICAgICBD
b2RlQmxvY2sqIG1fY29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUEJ5dGVjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQQnl0ZWNvZGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBQQlAgeworCitKU1ZhbHVlIEJ5dGVjb2RlOjp0b0pTKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVJbmRleCwganNOdW1iZXIobV9ieXRlY29kZUluZGV4
KSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZGVzY3JpcHRpb24sIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgo
bV9kZXNjcmlwdGlvbikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBC
eXRlY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBCeXRlY29kZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBCeXRlY29k
ZV9oCisjZGVmaW5lIFBCUEJ5dGVjb2RlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQ
IHsKKworY2xhc3MgQnl0ZWNvZGUgeworcHVibGljOgorICAgIEJ5dGVjb2RlKCkKKyAgICAgICAg
OiBtX2J5dGVjb2RlSW5kZXgoVUlOVF9NQVgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBCeXRl
Y29kZSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbikK
KyAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgLCBtX2Rl
c2NyaXB0aW9uKGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsgfQorICAgIGNv
bnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsg
fQorICAgIAorICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKK3ByaXZhdGU6Cisg
ICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIENTdHJpbmcgbV9kZXNjcmlwdGlvbjsK
K307CisKK2lubGluZSB1bnNpZ25lZCBnZXRCeXRlY29kZUluZGV4Rm9yQnl0ZWNvZGUoQnl0ZWNv
ZGUqIGJ5dGVjb2RlKSB7IHJldHVybiBieXRlY29kZS0+Ynl0ZWNvZGVJbmRleCgpOyB9CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUEJ5dGVjb2RlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNv
ZGVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUEJQQnl0ZWNvZGVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwor
Qnl0ZWNvZGVzOjpCeXRlY29kZXMoc2l6ZV90IGlkLCBDb2RlQmxvY2tIYXNoIGhhc2gpCisgICAg
OiBtX2lkKGlkKQorICAgICwgbV9oYXNoKGhhc2gpCit7Cit9CisKK0J5dGVjb2Rlczo6fkJ5dGVj
b2RlcygpIHsgfQorCit1bnNpZ25lZCBCeXRlY29kZXM6OmluZGV4Rm9yQnl0ZWNvZGVJbmRleCh1
bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdAoreworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8
Qnl0ZWNvZGUsIHVuc2lnbmVkLCBnZXRCeXRlY29kZUluZGV4Rm9yQnl0ZWNvZGU+KG1fYnl0ZWNv
ZGUuYmVnaW4oKSwgbV9ieXRlY29kZS5zaXplKCksIGJ5dGVjb2RlSW5kZXgpIC0gbV9ieXRlY29k
ZS5iZWdpbigpOworfQorCitjb25zdCBCeXRlY29kZSYgQnl0ZWNvZGVzOjpmb3JCeXRlY29kZUlu
ZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGF0KGluZGV4
Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVzOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIjIiwgbV9oYXNo
LCAiKCIsIG1faWQsICIpIik7Cit9CisKK0pTVmFsdWUgQnl0ZWNvZGVzOjp0b0pTKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYyk7CisgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpzTnVtYmVyKG1faWQpKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5oYXNoLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KHRvQ1N0cmluZyht
X2hhc2gpKSkpOworICAgIAorICAgIEpTQXJyYXkqIHN0cmVhbSA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZXhlYyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnl0ZWNvZGUuc2l6ZSgp
OyArK2kpCisgICAgICAgIHN0cmVhbS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9ieXRlY29k
ZVtpXS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnROYW1lcygpLmJ5dGVjb2RlLCBzdHJlYW0pOworICAgIAorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUEJ5dGVjb2Rlc19oCisjZGVmaW5lIFBCUEJ5dGVj
b2Rlc19oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGUuaCIK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBQQlAgeworCitjbGFzcyBCeXRlY29kZXMgeworcHVibGljOgorICAgIEJ5dGVjb2RlcyhzaXpl
X3QgaWQsIENvZGVCbG9ja0hhc2ggaGFzaCk7CisgICAgfkJ5dGVjb2RlcygpOworICAgIAorICAg
IHZvaWQgYXBwZW5kKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSkgeyBtX2J5dGVjb2RlLmFwcGVu
ZChieXRlY29kZSk7IH0KKyAgICAKKyAgICBzaXplX3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9CisgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9Cisg
ICAgCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgbm90IGluZGV4ZWQg
YnkgYnl0ZWNvZGUgaW5kZXguCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZWNvZGUuc2l6ZSgpOyB9CisgICAgY29uc3QgQnl0ZWNvZGUmIGF0KHVuc2lnbmVkIGkpIGNv
bnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVbaV07IH0KKyAgICAKKyAgICB1bnNpZ25lZCBpbmRleEZv
ckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3Q7CisgICAgY29uc3Qg
Qnl0ZWNvZGUmIGZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3Q7
CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCisgICAgSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzaXplX3Qg
bV9pZDsKKyAgICBDb2RlQmxvY2tIYXNoIG1faGFzaDsKKyAgICBWZWN0b3I8Qnl0ZWNvZGU+IG1f
Ynl0ZWNvZGU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQ
QlBCeXRlY29kZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
Q29tcGlsYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBDb21waWxhdGlvbi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK0NvbXBpbGF0aW9uOjpDb21waWxhdGlvbihQQlBC
eXRlY29kZXMqIGJ5dGVjb2RlcywgQ29tcGlsYXRpb25LaW5kIGtpbmQpCisgICAgOiBtX2J5dGVj
b2RlcyhieXRlY29kZXMpLAorICAgICwgbV9raW5kKGtpbmQpCit7Cit9CisKK0NvbXBpbGF0aW9u
Ojp+Q29tcGlsYXRpb24oKSB7IH0KKwordm9pZCBDb21waWxhdGlvbjo6YWRkRGVzY3JpcHRpb24o
Y29uc3QgQ29tcGlsZWRCeXRlY29kZSYgY29tcGlsZWRCeXRlY29kZSkKK3sKKyAgICBtX2Rlc2Ny
aXB0aW9ucy5hcHBlbmQoY29tcGlsZWRCeXRlY29kZSk7Cit9CisKK0V4ZWN1dGlvbkNvdW50ZXIq
IENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJiBvcmln
aW4pCit7CisgICAgSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+
ID4gaXRlciA9IG1fY291bnRlcnMuZmluZChvcmlnaW4pOworICAgIGlmIChpdGVyICE9IG1fY291
bnRlcnMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKKyAgICAKKyAg
ICBPd25QdHI8RXhlY3V0aW9uQ291bnRlcj4gY291bnRlciA9IGFkb3B0UHRyKG5ldyBFeGVjdXRp
b25Db3VudGVyKCkpOworICAgIEV4ZWN1dGlvbkNvdW50ZXIqIHJlc3VsdCA9IGNvdW50ZXIuZ2V0
KCk7CisgICAgbV9jb3VudGVycy5hZGQob3JpZ2luLCBjb3VudGVyLnJlbGVhc2UoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZSBDb21waWxhdGlvbjo6dG9KUyhFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVjb2Rlc0lELCBqc051bWJlcihtX2J5dGVjb2Rl
cy0+aWQoKSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGF0aW9uS2luZCwganNTdHJpbmcoZXhlYywgU3RyaW5n
Ojpmcm9tVVRGOCh0b0NTdHJpbmcobV9raW5kKSkpKTsKKyAgICAKKyAgICBKU0FycmF5KiBkZXNj
cmlwdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2Rlc2NyaXB0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVzY3JpcHRp
b25zLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBtX2Rlc2NyaXB0aW9uc1tpXS50b0pTKGV4ZWMp
KTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5kZXNjcmlwdGlvbnMsIGRlc2NyaXB0aW9ucyk7CisgICAgCisgICAgSlNBcnJh
eSogY291bnRlcnMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIEhhc2hNYXA8T3Jp
Z2luU3RhY2ssIE93blB0cjxFeGVjdXRpb25Db3VudGVyPiA+OjppdGVyYXRvciBlbmQgPSBtX2Nv
dW50ZXJzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1
dGlvbkNvdW50ZXI+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NvdW50ZXJzLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgSlNPYmplY3QqIGNvdW50ZXJFbnRyeSA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICBjb3VudGVyRW50cnktPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5vcmlnaW4sIGl0ZXItPmtl
eS50b0pTKGV4ZWMpKTsKKyAgICAgICAgY291bnRlckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXhlY3V0aW9uQ291bnQsIGpzTnVtYmVy
KGl0ZXItPnZhbHVlKSk7CisgICAgICAgIGNvdW50ZXJzLT5wdXNoKGV4ZWMsIGNvdW50ZXJFbnRy
eSk7CisgICAgfQorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvdW50ZXJzLCBjb3VudGVycyk7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQQ29tcGlsYXRpb25faAorI2RlZmluZSBQQlBD
b21waWxhdGlvbl9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgUEJQIHsKKworLy8gUmVwcmVzZW50cyB0aGUgYWN0IG9mIGV4ZWN1dGluZyBzb21l
IGJ5dGVjb2RlcyBpbiBzb21lIGVuZ2luZSwgYW5kIGRvZXMKKy8vIGFsbCBvZiB0aGUgY291bnRp
bmcgZm9yIHRob3NlIGV4ZWN1dGlvbnMuCisKK2NsYXNzIENvbXBpbGF0aW9uIHsKK3B1YmxpYzoK
KyAgICBDb21waWxhdGlvbihQQlBCeXRlY29kZXMqLCBDb21waWxhdGlvbktpbmQpOworICAgIH5D
b21waWxhdGlvbigpOworICAgIAorICAgIEJ5dGVjb2RlcyogYnl0ZWNvZGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlY29kZXM7IH0KKyAgICBDb21waWxhdGlvbktpbmQga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQorICAgIAorICAgIHZvaWQgYWRkRGVzY3JpcHRpb24oY29uc3QgQ29t
cGlsZWRCeXRlY29kZSYpOworICAgIEV4ZWN1dGlvbkNvdW50ZXIqIGV4ZWN1dGlvbkNvdW50ZXJG
b3IoY29uc3QgT3JpZ2luU3RhY2smKTsKKyAgICAKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIEJ5dGVjb2RlcyogbV9ieXRlY29kZXM7Cisg
ICAgQ29tcGlsYXRpb25LaW5kIG1fa2luZDsKKyAgICBWZWN0b3I8Q29tcGlsZWRCeXRlY29kZT4g
bV9kZXNjcmlwdGlvbnM7CisgICAgSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1dGlv
bkNvdW50ZXI+ID4gbV9jb3VudGVyczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAK
KworI2VuZGlmIC8vIFBCUENvbXBpbGF0aW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5k
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UEJQQ29tcGlsYXRpb25LaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OlBCUDo6Q29tcGlsYXRpb25LaW5kIGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7Cisg
ICAgY2FzZSBKU0M6OlBCUDo6TExJbnQ6CisgICAgICAgIG91dC5wcmludCgiTExJbnQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQQlA6OkJhc2VsaW5lOgorICAgICAgICBvdXQu
cHJpbnQoIkJhc2VsaW5lIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UEJQOjpE
Rkc6CisgICAgICAgIG91dC5wcmludCgiREZHIik7CisgICAgICAgIHJldHVybjsKKyAgICBkZWZh
dWx0OgorICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UENvbXBpbGF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uS2luZF9oCisjZGVmaW5lIFBCUENvbXBpbGF0aW9u
S2luZF9oCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworZW51bSBDb21waWxh
dGlvbktpbmQgeyBMTEludCwgQmFzZWxpbmUsIERGRyB9OworCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6UEJQCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UEJQOjpDb21waWxhdGlvbktpbmQpOworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFBCUENvbXBpbGF0aW9uS2luZF9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGls
ZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGVkQnl0ZWNvZGUuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitDb21waWxlZEJ5dGVjb2RlKGNvbnN0IE9yaWdp
blN0YWNrJiBvcmlnaW4sIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKQorICAgIDogbV9vcmln
aW4ob3JpZ2luKQorICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlwdGlvbikKK3sKK30KKworQ29t
cGlsZWRCeXRlY29kZTo6fkNvbXBpbGVkQnl0ZWNvZGUoKQoreworfQorCitKU1ZhbHVlIENvbXBp
bGVkQnl0ZWNvZGU6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5vcmln
aW4sIG1fb3JpZ2luLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlc2NyaXB0aW9uLCBqc1N0cmluZyhl
eGVjLCBTdHJpbmc6OmZyb21VVEY4KG1fZGVzY3JpcHRpb24pKSk7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGls
ZWRCeXRlY29kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQQ29tcGlsZWRCeXRl
Y29kZV9oCisjZGVmaW5lIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAorCisjaW5jbHVkZSAiSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIlBCUE9yaWdpblN0YWNrLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgUEJQIHsKKworY2xhc3MgQ29tcGlsZWRCeXRlY29kZSB7CitwdWJsaWM6CisgICAgLy8g
SXQncyB2YWxpZCB0byBoYXZlIGFuIGVtcHR5IE9yaWdpblN0YWNrLCB3aGljaCBpbmRpY2F0ZXMg
dGhhdCB0aGlzIGlzIHNvbWUKKyAgICAvLyBzb3J0IG9mIG5vbi1ieXRlY29kZS1yZWxhdGVkIG1h
Y2hpbmUgY29kZS4KKyAgICBDb21waWxlZEJ5dGVjb2RlKGNvbnN0IE9yaWdpblN0YWNrJiwgY29u
c3QgQ1N0cmluZyYgZGVzY3JpcHRpb24pOworICAgIH5Db21waWxlZEJ5dGVjb2RlKCk7CisgICAg
CisgICAgY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpblN0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9v
cmlnaW47IH0KKyAgICBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzY3JpcHRpb247IH0KKyAgICAKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29u
c3Q7CisgICAgCitwcml2YXRlOgorICAgIE9yaWdpblN0YWNrIG1fb3JpZ2luOworICAgIENTdHJp
bmcgbV9kZXNjcmlwdGlvbjsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2Vu
ZGlmIC8vIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQRGF0YWJhc2UuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitEYXRhYmFzZTo6RGF0YWJhc2UoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQorICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCit7Cit9
CisKK0J5dGVjb2RlcyogRGF0YWJhc2U6OmFkZEJ5dGVjb2RlcyhDb2RlQmxvY2tIYXNoIGhhc2gp
Cit7CisgICAgbV9ieXRlY29kZXMuYXBwZW5kKEJ5dGVjb2RlcyhtX2J5dGVjb2Rlcy5zaXplKCks
IGhhc2gpKTsKKyAgICByZXR1cm4gJm1fYnl0ZWNvZGVzLmxhc3QoKTsKK30KKworQnl0ZWNvZGVz
KiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQorewor
ICAgIGNvZGVCbG9jayA9IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCk7CisgICAgCisgICAg
SGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29kZXMqPjo6aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNv
ZGVzTWFwLmZpbmQoY29kZUJsb2NrKTsKKyAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2Rlc01hcC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOworICAgIAorICAgIEJ5dGVjb2Rlcyog
cmVzdWx0ID0gYWRkQnl0ZWNvZGVzKGNvZGVCbG9jay0+aGFzaCgpKTsKKyAgICAKKyAgICBmb3Ig
KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSAwOyBieXRlY29kZUluZGV4IDwgY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCk7KSB7CisgICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsK
KyAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgcmVzdWx0LT5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3V0LnRvQ1N0cmlu
ZygpKSk7CisgICAgICAgIAorICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29kZUxlbmd0aCgK
KyAgICAgICAgICAgIG1fZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCisgICAg
ICAgICAgICAgICAgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XS51Lm9w
Y29kZSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIERhdGFi
YXNlOjpub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICAvLyBX
ZSBvbmx5IGRvIHRoaW5ncyBmb3IgYmFzZWxpbmUgY29kZSBibG9ja3MuCisgICAgaWYgKGNvZGVC
bG9jay0+YmFzZWxpbmVWZXJzaW9uKCkgIT0gY29kZUJsb2NrKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgbV9ieXRlY29kZXNNYXAucmVtb3ZlKGNvZGVCbG9jayk7Cit9CisKK0NvbXBpbGF0
aW9uKiBEYXRhYmFzZTo6bmV3Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBp
bGF0aW9uS2luZCBraW5kKQoreworICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChDb21waWxhdGlv
bihieXRlY29kZXMsIGtpbmQpKTsKKyAgICByZXR1cm4gJm1fY29tcGlsYXRpb25zLmxhc3QoKTsK
K30KKworQ29tcGlsYXRpb24qIERhdGFiYXNlOjpuZXdDb21waWxhdGlvbihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29tcGlsYXRpb25LaW5kIGtpbmQpCit7CisgICAgcmV0dXJuIG5ld0NvbXBpbGF0
aW9uKGVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2spLCBraW5kKTsKK30KKworSlNWYWx1ZSBE
YXRhYmFzZTo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTQXJyYXkqIGJ5dGVjb2Rl
cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYnl0ZWNvZGVzLnNpemUoKTsgKytpKQorICAgICAgICBieXRlY29kZXMtPnB1dERpcmVj
dEluZGV4KGV4ZWMsIGksIG1fYnl0ZWNvZGVzW2ldLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVj
b2RlcywgYnl0ZWNvZGVzKTsKKyAgICAKKyAgICBKU0FycmF5KiBjb21waWxhdGlvbnMgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Nv
bXBpbGF0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgY29tcGlsYXRpb25zLT5wdXREaXJlY3RJ
bmRleChleGVjLCBpLCBtX2NvbXBpbGF0aW9uc1tpXS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21w
aWxhdGlvbnMsIGNvbXBpbGF0aW9ucyk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgUEJQRGF0YWJhc2VfaAorI2RlZmluZSBQQlBEYXRhYmFzZV9oCisKKyNpbmNsdWRlICJKU1Zh
bHVlLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGVzLmgiCisjaW5jbGR1ZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgUEJQIHsKKworY2xhc3MgRGF0YWJhc2UgeworcHVibGljOgorICAgIERhdGFiYXNl
KEpTR2xvYmFsRGF0YSYpOworICAgIAorICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVzRm9y
KENvZGVCbG9jayopOworICAgIHZvaWQgbm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKik7Cisg
ICAgCisgICAgQ29tcGlsYXRpb24qIG5ld0NvbXBpbGF0aW9uKENvZGVCbG9jayosIENvbXBpbGF0
aW9uS2luZCk7CisgICAgQ29tcGlsYXRpb24qIG5ld0NvbXBpbGF0aW9uKEJ5dGVjb2RlcyosIENv
bXBpbGF0aW9uS2luZCk7CisgICAgCisgICAgLy8gQ29udmVydHMgdGhlIGRhdGFiYXNlIHRvIGEg
SmF2YVNjcmlwdCBvYmplY3QgdGhhdCBpcyBzdWl0YWJsZSBmb3IgSlNPTiBzdHJpbmdpZmljYXRp
b24uCisgICAgLy8gTm90ZSB0aGF0IGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXNlIGFu
IEV4ZWNTdGF0ZSogYXNzb2NpYXRlZCB3aXRoIGEgZ2xvYmFsCisgICAgLy8gb2JqZWN0IHRoYXQg
aXMgImNsZWFuIiAtIGkuZS4gYXJyYXkgYW5kIG9iamVjdCBwcm90b3R5cGVzIGhhdmVuJ3QgaGFk
IHN0cmFuZ2UgdGhpbmdzCisgICAgLy8gZG9uZSB0byB0aGVtLiBBbmQgeWVzLCBpdCBzaG91bGQg
YmUgYXBwcm9wcmlhdGUgdG8ganVzdCB1c2UgYSBnbG9iYWxFeGVjIGhlcmUuCisgICAgSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworCitwcml2YXRlOgorICAgIEJ5dGVjb2RlcyogYWRk
Qnl0ZWNvZGVzKENvZGVCbG9ja0hhc2gpOworICAgIAorICAgIEpTR2xvYmFsRGF0YSYgbV9nbG9i
YWxEYXRhOworICAgIFNlZ21lbnRlZFZlY3RvcjxCeXRlY29kZXM+IG1fYnl0ZWNvZGVzOworICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNvZGVzKj4gbV9ieXRlY29kZXNNYXA7CisgICAgU2Vn
bWVudGVkVmVjdG9yPENvbXBpbGF0aW9uPiBtX2NvbXBpbGF0aW9uczsKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUERhdGFiYXNlX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEV4
ZWN1dGlvbkNvdW50ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUEV4ZWN1dGlv
bkNvdW50ZXJfaAorI2RlZmluZSBQQlBFeGVjdXRpb25Db3VudGVyX2gKKworI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgRXhlY3V0aW9uQ291bnRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKEV4ZWN1dGlv
bkNvdW50ZXIpOworcHVibGljOgorICAgIEV4ZWN1dGlvbkNvdW50ZXIoKSA6IG1fY291bnRlcigw
KSB7IH0KKyAgICAKKyAgICB1aW50NjRfdCogYWRkcmVzcygpIHsgcmV0dXJuICZtX2NvdW50ZXI7
IH0KKyAgICAKKyAgICB1aW50NjRfdCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnRlcjsg
fQorCitwcml2YXRlOgorICAgIHVpbnQ2NF90IG1fY291bnRlcjsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUEV4ZWN1dGlvbkNvdW50ZXJfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBPcmln
aW4uaCIKKworI2luY2x1ZGUgIlBCUEJ5dGVjb2Rlcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFBCUCB7CisKK09yaWdpbjo6T3JpZ2luKERhdGFiYXNlJiBkYXRhYmFzZSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgOiBtX2J5dGVjb2Rl
cyhkYXRhYmFzZS5lbnN1cmVCeXRlY29kZXNGb3IoY29kZUJsb2NrKSkKKyAgICAsIG1fYnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KQoreworfQorCit2b2lkIE9yaWdpbjo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgqbV9ieXRlY29kZXMsICI6YmMjIiwg
bV9ieXRlY29kZUluZGV4KTsKK30KKworSlNWYWx1ZSBPcmlnaW46OnRvSlMoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAoreworICAgIEpTVmFsdWUqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KCk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpzTnVtYmVyKG1fYnl0ZWNvZGVzLT5pZCgpKSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnl0ZWNvZGVJbmRleCwganNOdW1iZXIobV9ieXRlY29kZUluZGV4KSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFBCUE9yaWdpbl9oCisjZGVmaW5lIFBCUE9yaWdpbl9oCisKKyNpbmNs
dWRlICJDb2RlQmxvY2tIYXNoLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNvZGVzOworY2xhc3MgRGF0YWJhc2U7
CisKK2NsYXNzIE9yaWdpbiB7CitwdWJsaWM6CisgICAgT3JpZ2luKCkKKyAgICAgICAgOiBtX2J5
dGVjb2RlSW5kZXgoVUlOVF9NQVgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fYnl0ZWNvZGVJbmRleChV
SU5UX01BWCAtIDEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oQnl0ZWNvZGVzKiBi
eXRlY29kZXMsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgICAgIDogbV9ieXRlY29kZXMo
Ynl0ZWNvZGVzKQorICAgICAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCA8IFVJTlRfTUFYIC0gMSk7CisgICAg
fQorICAgIAorICAgIE9yaWdpbihEYXRhYmFzZSYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9i
eXRlY29kZUluZGV4ID09IFVJTlRfTUFYOyB9CisgICAgCisgICAgQnl0ZWNvZGVzKiBieXRlY29k
ZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQorICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7IH0KKyAgICAKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgT3JpZ2luJikgY29uc3Q7CisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAg
ICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2Rl
czsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7Cit9OworCitpbmxpbmUgYm9vbCBPcmln
aW46Om9wZXJhdG9yPT0oY29uc3QgT3JpZ2luJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9ieXRlY29kZXMgPT0gb3RoZXIubV9ieXRlY29kZXMKKyAgICAgICAgJiYgbV9ieXRlY29kZUlu
ZGV4ID09IG90aGVyLm1fYnl0ZWNvZGVJbmRleDsKK30KKworaW5saW5lIHVuc2lnbmVkIE9yaWdp
bjo6aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6UHRySGFzaDxCeXRlY29kZXMqPjo6
aGFzaChtX2J5dGVjb2RlcykgKyBtX2J5dGVjb2RlSW5kZXg7Cit9CisKK2lubGluZSBib29sIE9y
aWdpbjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2J5
dGVjb2RlSW5kZXggPT0gVUlOVF9NQVggLSAxOworfQorCitzdHJ1Y3QgT3JpZ2luSGFzaCB7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgT3JpZ2luJiBrZXkpIHsgcmV0dXJuIGtleS5o
YXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBPcmlnaW4mIGEsIGNvbnN0IE9y
aWdpbiYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
OjpQQlAKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBE
ZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6UEJQOjpPcmln
aW4+IHsKKyAgICB0eXBlZGVmIEpTQzo6UEJQOk9yaWdpbkhhc2ggSGFzaDsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxKU0M6OlBCUDpPcmlnaW4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6UEJQ
OjpPcmlnaW4+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQQlBPcmln
aW5faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3Rh
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBP
cmlnaW5TdGFjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luU3RhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBQQlAgeworCitPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2soV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQoreworICAgIG1fc3RhY2suYXBwZW5kKE9yaWdpbihXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSkpCit9CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhjb25z
dCBPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChvcmlnaW4pCit9CisKK09y
aWdpblN0YWNrOjpPcmlnaW5TdGFjayhEYXRhYmFzZSYgZGF0YWJhc2UsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQoreworICAgIFZlY3RvcjxDb2Rl
T3JpZ2luPiBzdGFjayA9IGNvZGVPcmlnaW4uaW5saW5lU3RhY2soKTsKKyAgICAKKyAgICBhcHBl
bmQoT3JpZ2luKGRhdGFiYXNlLCBjb2RlQmxvY2ssIHN0YWNrWzBdLmJ5dGVjb2RlSW5kZXgpKTsK
KyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc3RhY2suc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgYXBwZW5kKE9yaWdpbigKKyAgICAgICAgICAgIGRhdGFiYXNlLmVuc3VyZUJ5dGVj
b2Rlc0ZvcihzdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrKCkpLAor
ICAgICAgICAgICAgc3RhY2tbaV0uYnl0ZWNvZGVJbmRleCkpOworICAgIH0KK30KKworT3JpZ2lu
U3RhY2s6On5PcmlnaW5TdGFjaygpIHsgfQorCit2b2lkIE9yaWdpblN0YWNrOjphcHBlbmQoY29u
c3QgT3JpZ2luJiBvcmlnaW4pCit7CisgICAgbV9zdGFjay5hcHBlbmQob3JpZ2luKQorfQorCiti
b29sIE9yaWdpblN0YWNrOjpvcGVyYXRvcj09KGNvbnN0IE9yaWdpblN0YWNrJiBvdGhlcikgY29u
c3QKK3sKKyAgICBpZiAobV9zdGFjay5zaXplKCkgIT0gb3RoZXIubV9zdGFjay5zaXplKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N0YWNr
LnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAobV9zdGFja1tpXSAhPSBvdGhlci5tX3N0YWNr
W2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordW5zaWduZWQgT3JpZ2luU3RhY2s6Omhhc2goKSBjb25zdAoreworICAgIHVu
c2lnbmVkIHJlc3VsdCA9IG1fc3RhY2suc2l6ZSgpOworICAgIAorICAgIGZvciAodW5zaWduZWQg
aSA9IG1fc3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIHJlc3VsdCAqPSAzOworICAgICAg
ICByZXN1bHQgKz0gbV9zdGFja1tpXS5oYXNoKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3ZvaWQgT3JpZ2luU3RhY2s6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zdGFjay5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoaSkKKyAgICAgICAgICAgIG91dC5wcmludCgiIC0tPiAiKTsKKyAgICAg
ICAgb3V0LnByaW50KG1fc3RhY2tbaV0pOworICAgIH0KK30KKworSlNWYWx1ZSBPcmlnaW5TdGFj
azo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNBcnJheSogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zdGFjay5zaXplKCk7ICsraSkKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChleGVjLCBpLCBtX3N0YWNrW2ldLnRvSlMoZXhlYykpOworICAgIAorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFBCUE9yaWdpblN0YWNrX2gKKyNkZWZpbmUgUEJQT3JpZ2lu
U3RhY2tfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBCUE9yaWdpbi5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJs
b2NrOworc3RydWN0IENvZGVPcmlnaW47CisKK25hbWVzcGFjZSBQQlAgeworCitjbGFzcyBEYXRh
YmFzZTsKKworY2xhc3MgT3JpZ2luU3RhY2sgeworcHVibGljOgorICAgIE9yaWdpblN0YWNrKCkg
eyB9CisgICAgCisgICAgT3JpZ2luU3RhY2soV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBl
KTsKKyAgICAKKyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhjb25zdCBPcmlnaW4mIG9yaWdpbik7
CisgICAgCisgICAgZXhwbGljaXQgT3JpZ2luU3RhY2soRGF0YWJhc2UmLCBDb2RlQmxvY2sqLCBj
b25zdCBDb2RlT3JpZ2luJik7CisgICAgCisgICAgfk9yaWdpblN0YWNrKCk7CisgICAgCisgICAg
dm9pZCBhcHBlbmQoY29uc3QgT3JpZ2luJiBvcmlnaW4pOworICAgIAorICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCk7IH0KKyAgICAKKyAgICB1bnNp
Z25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5zaXplKCk7IH0KKyAgICBjb25zdCBP
cmlnaW4mIGZyb21Cb3R0b20odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9zdGFja1tpXTsg
fQorICAgIGNvbnN0IE9yaWdpbiYgZnJvbVRvcCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBt
X3N0YWNrW21fc3RhY2suc2l6ZSgpIC0gaSAtIDFdOyB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE9yaWdpblN0YWNrJikgY29uc3Q7CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAgICAK
KyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFZlY3RvcjxPcmlnaW4sIDE+IG1f
c3RhY2s7Cit9OworCitpbmxpbmUgYm9vbCBPcmlnaW5TdGFjazo6aXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YWNrLnNpemUoKSA9PSAxICYmIG1fc3Rh
Y2tbMF0uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OlBCUAorCisjZW5kaWYgLy8gUEJQT3JpZ2luU3RhY2tfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9u
IDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwzMCBAQAogICAgIG1hY3JvKGFyZ3Vt
ZW50cykgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oYmluZCkgXAorICAgIG1hY3Jv
KGJ5dGVjb2RlKSBcCisgICAgbWFjcm8oYnl0ZWNvZGVJbmRleCkgXAorICAgIG1hY3JvKGJ5dGVj
b2RlcykgXAorICAgIG1hY3JvKGJ5dGVjb2Rlc0lEKSBcCiAgICAgbWFjcm8oY2FsbCkgXAogICAg
IG1hY3JvKGNhbGxlZSkgXAogICAgIG1hY3JvKGNhbGxlcikgXAorICAgIG1hY3JvKGNvbXBpbGF0
aW9uS2luZCkgXAorICAgIG1hY3JvKGNvbXBpbGF0aW9ucykgXAogICAgIG1hY3JvKGNvbXBpbGUp
IFwKICAgICBtYWNybyhjb25maWd1cmFibGUpIFwKICAgICBtYWNybyhjb25zdHJ1Y3RvcikgXAor
ICAgIG1hY3JvKGNvdW50ZXJzKSBcCisgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKKyAgICBtYWNy
byhkZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhlbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8oZXZh
bCkgXAogICAgIG1hY3JvKGV4ZWMpIFwKKyAgICBtYWNybyhleGVjdXRpb25Db3VudCkgXAogICAg
IG1hY3JvKGZyb21DaGFyQ29kZSkgXAogICAgIG1hY3JvKGdsb2JhbCkgXAogICAgIG1hY3JvKGdl
dCkgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCisgICAgbWFjcm8oaGFzaCkgXAogICAg
IG1hY3JvKGlnbm9yZUNhc2UpIFwKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3JvKGlucHV0
KSBcCkBAIC01Niw2ICs2Nyw3IEBACiAgICAgbWFjcm8obmFtZSkgXAogICAgIG1hY3JvKG5vdykg
XAogICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKG9yaWdpbikgXAogICAgIG1hY3JvKHBh
cnNlKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90
b3R5cGUpIFwKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAJKHJldmlzaW9u
IDEzNjI3NikKKysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsNiArOTIsMTIgQEAgQ1N0cmluZyBTdHJpbmdQcmludFN0cmVhbTo6dG9D
U3RyaW5nKCkKICAgICByZXR1cm4gQ1N0cmluZyhtX2J1ZmZlciwgbV9uZXh0KTsKIH0KIAordm9p
ZCBTdHJpbmdQcmludFN0cmVhbTo6cmVzZXQoKQoreworICAgIG1fbmV4dCA9IDA7CisgICAgbV9i
dWZmZXJbMF0gPSAwOworfQorCiB2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjppbmNyZWFzZVNpemUo
c2l6ZV90IG5ld1NpemUpCiB7CiAgICAgQVNTRVJUKG5ld1NpemUgPiBtX3NpemUpOwpJbmRleDog
U291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQs
IHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApOwogICAgIAogICAgIENTdHJpbmcg
dG9DU3RyaW5nKCk7CisgICAgdm9pZCByZXNldCgpOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlYXNlU2l6ZShzaXplX3QpOwpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZp
c2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NDAsNiArNDQwLDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IExDaGFyKik7CiAgICAgc3RhdGljIFN0
cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9t
VVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07CiAgICAg
c3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzKSB7IHJldHVybiBmcm9tVVRGOChy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9OworICAgIHN0YXRpYyBTdHJpbmcg
ZnJvbVVURjgoY29uc3QgQ1N0cmluZyYgcykgeyByZXR1cm4gZnJvbVVURjgocy5kYXRhKCkpOyB9
CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04
LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxp
ZCBVVEYtOC4KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177119</attachid>
            <date>2012-12-01 17:10:07 -0800</date>
            <delta_ts>2012-12-01 21:28:53 -0800</delta_ts>
            <desc>almost there!</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>167307</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzYyNzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSwyNyBAQAogCQkwRkY0Mjc3MTE1OTI3
NUQ1MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RTE1OTI3NUQyMDA0Q0I5RkYgLyog
UmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgKi87IH07CiAJCTBGRjQyNzcyMTU5Mjc1RDgwMDRDQjlG
RiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2Jh
bFN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzE2OEExNUEzQjIzMTAw
OEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QTUxNjZBRDM1MTAwMEY1QkEzIC8qIFBCUEJ5dGVj
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3
Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlBRDE2NkFEMzVDMDAwRjVCQTMg
LyogUEJQQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGNzI5OTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmNwcCAqLzsg
fTsKKwkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NDE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCAqLzsgfTsKKwkJMEZGNzI5QUYxNjZBRDM1QzAw
MEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTk2MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxh
dGlvbi5jcHAgKi87IH07CisJCTBGRjcyOUIwMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxh
dGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5jcHAgKi87
IH07CisJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlB
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmNwcCAqLzsgfTsKKwkJMEZG
NzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAv
KiBQQlBEYXRhYmFzZS5jcHAgKi87IH07CisJCTBGRjcyOUIzMTY2QUQzNUMwMDBGNUJBMyAvKiBQ
QlBPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgKi87IH07CisJCTBG
RjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMTE2NkFEMzQ3MDAwRjVC
QTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovOyB9OworCQkwRkY3MjlCNTE2NkFEMzVDMDAwRjVC
QTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NTc0MkY2MzBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgKi87IH07CisJ
CTBGRjcyOUI2MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQw
MDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjcxNjZBRDM1
QzAwMEY1QkEzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzU0MERBNDNCNDQwMEJDODNGMyAvKiBQcm9maWxlTm9k
ZS5jcHAgKi87IH07CisJCTBGRjcyOUI4MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODMyRTBE
QTQyQ0FEMDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwICovOyB9OworCQkwRkY3MjlCOTE2NkFEMzYw
MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZG
NzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMg
LyogUEJQQ29tcGlsYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRkY3MjlCQjE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25L
aW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3
Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkMxNjZBRDM2MDAw
MEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21w
aWxlZEJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5RDE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUEJQRXhlY3V0
aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRjE2
NkFEMzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2lu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZG
NzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMg
LyogUEJQT3JpZ2luU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
OyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAw
QzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTUxLDEx
ICs1NzIsNyBAQAogCQk5MzMwNDAyQzBFNkE3NjQwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzAzRkU4
MEU2QTcyQjUwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwICovOyB9OwogCQk5MzM1RjI0RDEy
RTY3NjVCMDAyQjU1NTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzM0NUE4NzEyRDgzOEM0MDAzMDJC
RTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi87IH07CiAJCTk1MzRBQUZCMEU1QjdB
OTYwMEI4QTQ1QiAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyQzYzQUMwRTQ3NzdENjAwQzEzOTM2IC8qIEpTUHJv
ZmlsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJOTU3NDJGNjUwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU3NDJGNjMwREQxMUY1QTAw
MDkxN0ZCIC8qIFByb2ZpbGUuY3BwICovOyB9OwotCQk5NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMg
LyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTVBQjgzMkUwREE0MkNBRDAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCAqLzsgfTsKLQkJ
OTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzU0MERBNDNCNDQwMEJDODNG
MyAvKiBQcm9maWxlTm9kZS5jcHAgKi87IH07Ci0JCTk1Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAv
KiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9y
LmNwcCAqLzsgfTsKLQkJOTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0
NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJOTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFBy
b2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVFM0JDMDUw
RTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUUzQkMwNDBFMUFFNjgyMDBCMkQxQzEgLyogQ2Fs
bElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5NUY2RTY5NTBFNUI1Rjk3MDA5MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkw
RTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3
QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJl
bFNjb3BlLmggKi87IH07CkBAIC0xMDc5LDYgKzEwOTYsMjMgQEAKIAkJMEZGNDI3NkUxNTkyNzVE
MjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc29sdmVHbG9iYWxT
dGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNzE2OEExNUEzQjIzMTAw
OEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb3BlcnR5T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcy
OTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBCeXRlY29kZS5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBC
eXRlY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTkzMTY2QUQz
NDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQQlBCeXRlY29kZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5
dGVjb2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBCeXRl
Y29kZXMuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBCeXRlY29kZXMuaDsgcGF0
aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5NjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsYXRpb24uY3BwOyBwYXRoID0g
cHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGlsYXRpb24uaDsgcGF0aCA9IHByb2ZpbGVy
L1BCUENvbXBpbGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk4
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsYXRpb25LaW5kLmNwcDsgcGF0aCA9IHBy
b2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRjcyOTk5MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGlsYXRpb25LaW5kLmg7IHBhdGgg
PSBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsZWRCeXRlY29k
ZS5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBp
bGVkQnl0ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGls
ZWRCeXRlY29kZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
RGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQRGF0
YWJhc2UuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQRGF0YWJhc2UuaDsgcGF0aCA9
IHByb2ZpbGVyL1BCUERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBFeGVjdXRpb25Db3VudGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUEV4ZWN1dGlvbkNvdW50ZXIuaDsgcGF0aCA9IHBy
b2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBPcmlnaW4uY3BwOyBwYXRoID0gcHJvZmlsZXIv
UEJQT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTAxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQQlBPcmlnaW4uaDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2lu
U3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQT3JpZ2lu
U3RhY2suY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2lu
U3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQT3JpZ2luU3RhY2su
aDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRm
Zy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRD
MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTE2LDYgKzI1NTAsMjMgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTVFM0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8q
IENhbGxJZGVudGlmaWVyLmggKi8sCisJCQkJMEZGNzI5OTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UEJ5dGVjb2RlLmNwcCAqLywKKwkJCQkwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0
ZWNvZGUuaCAqLywKKwkJCQkwRkY3Mjk5NDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVz
LmNwcCAqLywKKwkJCQkwRkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmgg
Ki8sCisJCQkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCAq
LywKKwkJCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCAqLywK
KwkJCQkwRkY3Mjk5ODE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCAq
LywKKwkJCQkwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmgg
Ki8sCisJCQkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUu
Y3BwICovLAorCQkJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVj
b2RlLmggKi8sCisJCQkJMEZGNzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmNw
cCAqLywKKwkJCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCAqLywK
KwkJCQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291bnRlci5oICov
LAorCQkJCTBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwICovLAorCQkJ
CTBGRjcyOUEwMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCAqLywKKwkJCQkwRkY3MjlB
MTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovLAorCQkJCTBGRjcyOUEy
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oICovLAogCQkJCTk1NzQyRjYzMERE
MTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLywKIAkJCQk5NTc0MkY2NDBERDExRjVBMDAw
OTE3RkIgLyogUHJvZmlsZS5oICovLAogCQkJCTk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQ
cm9maWxlR2VuZXJhdG9yLmNwcCAqLywKQEAgLTMwNzcsNiArMzEyOCwxNSBAQAogCQkJCTBGRERC
RkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMyMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8qIENvZGVCbG9j
a1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVC
QTMgLyogUEJQQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUI5MTY2QUQzNjAw
MDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJBMTY2
QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZG
NzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBEYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFBC
UEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJGMTY2QUQzNjAw
MDBGNUJBMyAvKiBQQlBPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUMwMTY2QUQz
NjAwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNTM0LDEw
ICszNTk0LDYgQEAKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3Bl
Y3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTU3NDJGNjUwREQxMUY1QTAwMDkx
N0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTVDRDQ1NzYwRTFDNEZERDAw
ODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTVBQjgz
NTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0ZCNjBBNDEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NDY5REU3MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eU5h
bWVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFODEwN0VDN0U3MDA2NTA0NDYg
LyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY2NSw2ICszNzIxLDE4IEBA
CiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGRjcyOUFEMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBCeXRlY29k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlBRTE2NkFEMzVDMDAwRjVCQTMgLyogUEJQ
Qnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUFGMTY2QUQzNUMwMDBGNUJB
MyAvKiBQQlBDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMDE2NkFE
MzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGRjcyOUIyMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMzE2NkFEMzVDMDAwRjVCQTMgLyogUEJQT3Jp
Z2luLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQ
QlBPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNTE2NkFEMzVDMDAw
RjVCQTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNjE2NkFEMzVD
MDAwRjVCQTMgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3
MjlCNzE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZGNzI5QjgxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsMzMgKzE4MiwzMyBAQCBORVZFUl9JTkxJ
TkUgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnSG9vCiAgICAgcmV0dXJuICIiOwogfQogCi12b2lk
IENvZGVCbG9jazo6cHJpbnRVbmFyeU9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJsb2NrOjpw
cmludFVuYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRp
b24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQogewogICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
Ci0gICAgZGF0YUxvZ0YoIlslNGRdICVzXHRcdCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
Ci0gICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgIG91dC5w
cmludGYoIlslNGRdICVzXHRcdCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiB9CiAKLXZvaWQgQ29k
ZUJsb2NrOjpwcmludEJpbmFyeU9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmlu
dEJpbmFyeU9wKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9u
LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdFx0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOwotICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAg
ICBvdXQucHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludENv
bmRpdGlvbmFsSnVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29k
ZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZ0YoIlsl
NGRdICVzXHRcdCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNc
dFx0ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRH
ZXRCeUlkT3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9u
KiYgaXQpCit2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwg
RXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpCiB7
CiAgICAgY29uc3QgY2hhciogb3A7CiAgICAgc3dpdGNoIChleGVjLT5pbnRlcnByZXRlcigpLT5n
ZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CkBAIC0yNjEsMjggKzI2MSwyOCBAQCB2b2lkIENv
ZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlCiAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2dGKCJbJTRkXSAlc1x0ICVzLCAlcywgJXMi
LCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRh
KCkpOworICAgIG91dC5wcmludGYoIlslNGRdICVzXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBv
cCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CiAgICAgaXQg
Kz0gNTsKIH0KIAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkgLy8gdW51c2VkIGlu
IHNvbWUgY29uZmlndXJhdGlvbnMKLXN0YXRpYyB2b2lkIGR1bXBTdHJ1Y3R1cmUoY29uc3QgY2hh
ciogbmFtZSwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRlbnRpZmll
ciYgaWRlbnQpCitzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IGNoYXIqIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElk
ZW50aWZpZXImIGlkZW50KQogewogICAgIGlmICghc3RydWN0dXJlKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgZGF0YUxvZ0YoIiVzID0gJXAiLCBuYW1lLCBzdHJ1Y3R1cmUpOworICAgIG91
dC5wcmludGYoIiVzID0gJXAiLCBuYW1lLCBzdHJ1Y3R1cmUpOwogICAgIAogICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQp
OwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKLSAgICAgICAgZGF0YUxvZ0YoIiAo
b2Zmc2V0ID0gJWQpIiwgb2Zmc2V0KTsKKyAgICAgICAgb3V0LnByaW50ZigiIChvZmZzZXQgPSAl
ZCkiLCBvZmZzZXQpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKSAvLyB1bnVzZWQgd2hl
biBub3QgRU5BQkxFKEpJVCksIGxlYWRpbmcgdG8gc2lsbHkgd2FybmluZ3MKLXN0YXRpYyB2b2lk
IGR1bXBDaGFpbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgSWRlbnRp
ZmllciYgaWRlbnQpCitzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91dCwgRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIElkZW50aWZpZXImIGlkZW50KQog
ewotICAgIGRhdGFMb2dGKCJjaGFpbiA9ICVwOiBbIiwgY2hhaW4pOworICAgIG91dC5wcmludGYo
ImNoYWluID0gJXA6IFsiLCBjaGFpbik7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgZm9y
IChXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY3VycmVudFN0cnVjdHVyZSA9IGNoYWluLT5oZWFk
KCk7CiAgICAgICAgICAqY3VycmVudFN0cnVjdHVyZTsKQEAgLTI5MSwxMyArMjkxLDEzIEBAIHN0
YXRpYyB2b2lkIGR1bXBDaGFpbihFeGVjU3RhdGUqIGV4ZWMsIFMKICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAg
ICAgICBkdW1wU3RydWN0dXJlKCJzdHJ1Y3QiLCBleGVjLCBjdXJyZW50U3RydWN0dXJlLT5nZXQo
KSwgaWRlbnQpOworICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGV4ZWMsIGN1
cnJlbnRTdHJ1Y3R1cmUtPmdldCgpLCBpZGVudCk7CiAgICAgfQotICAgIGRhdGFMb2dGKCJdIik7
CisgICAgb3V0LnByaW50ZigiXSIpOwogfQogI2VuZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpwcmlu
dEdldEJ5SWRDYWNoZVN0YXR1cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKK3ZvaWQg
Q29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBFeGVj
U3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKIHsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTMwNywyMSArMzA3
LDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cygKICAgICAKICNp
ZiBFTkFCTEUoTExJTlQpCiAgICAgaWYgKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlE
KGluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9nZXRfYXJyYXlfbGVuZ3RoKQotICAgICAg
ICBkYXRhTG9nRigiIGxsaW50KGFycmF5X2xlbmd0aCkiKTsKKyAgICAgICAgb3V0LnByaW50Zigi
IGxsaW50KGFycmF5X2xlbmd0aCkiKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgZGF0
YUxvZ0YoIiBsbGludCgiKTsKLSAgICAgICAgZHVtcFN0cnVjdHVyZSgic3RydWN0IiwgZXhlYywg
c3RydWN0dXJlLCBpZGVudCk7Ci0gICAgICAgIGRhdGFMb2dGKCIpIik7CisgICAgICAgIG91dC5w
cmludGYoIiBsbGludCgiKTsKKyAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBl
eGVjLCBzdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAobnVtYmVyT2ZTdHJ1Y3R1cmVTdHVi
SW5mb3MoKSkgewotICAgICAgICBkYXRhTG9nRigiIGppdCgiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiIGppdCgiKTsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1
YkluZm8obG9jYXRpb24pOwogICAgICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgICAg
ICBkYXRhTG9nRigibm90IHNlZW4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIm5vdCBzZWVu
Iik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJl
ID0gMDsKICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gMDsKQEAg
LTMzMSw0MCArMzMxLDQwIEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1
cygKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBl
KSB7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICAgICAgICAg
ICAgICBkYXRhTG9nRigic2VsZiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInNlbGYi
KTsKICAgICAgICAgICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2Vs
Zi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOgotICAgICAgICAgICAgICAgIGRh
dGFMb2dGKCJwcm90byIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInByb3RvIik7CiAg
ICAgICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmJh
c2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlU3RydWN0
dXJlID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLmdldCgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lk
X2NoYWluOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJjaGFpbiIpOworICAgICAgICAgICAg
ICAgIG91dC5wcmludGYoImNoYWluIik7CiAgICAgICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9
IHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAg
ICAgICAgICAgICAgY2hhaW4gPSBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9p
ZF9zZWxmX2xpc3Q6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoInNlbGZfbGlzdCIpOworICAg
ICAgICAgICAgICAgIG91dC5wcmludGYoInNlbGZfbGlzdCIpOwogICAgICAgICAgICAgICAgIHN0
cnVjdHVyZUxpc3QgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0Owog
ICAgICAgICAgICAgICAgIGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlz
dFNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19n
ZXRfYnlfaWRfcHJvdG9fbGlzdDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigicHJvdG9fbGlz
dCIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInByb3RvX2xpc3QiKTsKICAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVMaXN0ID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVj
dHVyZUxpc3Q7CiAgICAgICAgICAgICAgICAgbGlzdFNpemUgPSBzdHViSW5mby51LmdldEJ5SWRQ
cm90b0xpc3QubGlzdFNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigidW5zZXQiKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM6Ci0gICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoImdlbmVyaWMiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJn
ZW5lcmljIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vz
c19nZXRfYXJyYXlfbGVuZ3RoOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJhcnJheV9sZW5n
dGgiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJhcnJheV9sZW5ndGgiKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9zdHJpbmdfbGVu
Z3RoOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJzdHJpbmdfbGVuZ3RoIik7CisgICAgICAg
ICAgICAgICAgb3V0LnByaW50Zigic3RyaW5nX2xlbmd0aCIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTM3MiwxMjUgKzM3MiwxMjYgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZENhY2hlU3RhdHVzKAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoYmFzZVN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwot
ICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUoInN0cnVjdCIsIGV4ZWMsIGJhc2VTdHJ1Y3R1
cmUsIGlkZW50KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAgICAgICAg
ICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgZXhlYywgYmFzZVN0cnVjdHVyZSwg
aWRlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocHJv
dG90eXBlU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7Ci0gICAg
ICAgICAgICAgICAgZHVtcFN0cnVjdHVyZSgicHJvdG90eXBlU3RydWN0IiwgZXhlYywgYmFzZVN0
cnVjdHVyZSwgaWRlbnQpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAg
ICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJwcm90b3R5cGVTdHJ1Y3QiLCBleGVjLCBi
YXNlU3RydWN0dXJlLCBpZGVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChjaGFpbikgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAg
ICAgICAgICAgICAgIGR1bXBDaGFpbihleGVjLCBjaGFpbiwgaWRlbnQpOworICAgICAgICAgICAg
ICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICAgICAgZHVtcENoYWluKG91dCwgZXhl
YywgY2hhaW4sIGlkZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZUxpc3QpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCBsaXN0
ID0gJXA6IFsiLCBzdHJ1Y3R1cmVMaXN0KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKG91
dCwgIiwgbGlzdCA9ICVwOiBbIiwgc3RydWN0dXJlTGlzdCk7CiAgICAgICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCIoIik7Ci0gICAgICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1
cmUoImJhc2UiLCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLmJhc2UuZ2V0KCksIGlkZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGYoIigiKTsKKyAgICAgICAgICAgICAgICAgICAgZHVtcFN0cnVj
dHVyZShvdXQsICJiYXNlIiwgZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS5iYXNlLmdldCgp
LCBpZGVudCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVMaXN0LT5saXN0W2ld
LmlzQ2hhaW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVMaXN0LT5s
aXN0W2ldLnUuY2hhaW4uZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wQ2hhaW4oZXhlYywg
c3RydWN0dXJlTGlzdC0+bGlzdFtpXS51LmNoYWluLmdldCgpLCBpZGVudCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkdW1wQ2hhaW4ob3V0LCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLnUuY2hh
aW4uZ2V0KCksIGlkZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVM
aXN0LT5saXN0W2ldLnUucHJvdG8uZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wU3RydWN0
dXJlKCJwcm90byIsIGV4ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0udS5wcm90by5nZXQoKSwg
aWRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJwcm90byIsIGV4
ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0udS5wcm90by5nZXQoKSwgaWRlbnQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCIpIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiki
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIl0iKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgZGF0YUxvZ0YoIikiKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0K
ICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRDYWxsT3AoRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBD
YWNoZUR1bXBNb2RlIGNhY2hlRHVtcE1vZGUpCit2b2lkIENvZGVCbG9jazo6cHJpbnRDYWxsT3Ao
UHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IElu
c3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlIGNhY2hlRHVtcE1v
ZGUpCiB7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgYXJnQ291
bnQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdCAlcywgJWQsICVkIiwgbG9jYXRp
b24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuYykuZGF0YSgpLCBhcmdDb3VudCwgcmVnaXN0
ZXJPZmZzZXQpOworICAgIG91dC5wcmludGYoIlslNGRdICVzXHQgJXMsICVkLCAlZCIsIGxvY2F0
aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmMpLmRhdGEoKSwgYXJnQ291bnQsIHJlZ2lz
dGVyT2Zmc2V0KTsKICAgICBpZiAoY2FjaGVEdW1wTW9kZSA9PSBEdW1wQ2FjaGVzKSB7CiAjaWYg
RU5BQkxFKExMSU5UKQogICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
aXRbMV0udS5jYWxsTGlua0luZm87CiAgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmxhc3RTZWVu
Q2FsbGVlKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiIGxsaW50KCVwLCBleGVjICVwKSIsCi0g
ICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0g
ICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUtPmV4ZWN1dGFi
bGUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKAorICAgICAgICAgICAgICAgICIgbGxpbnQo
JXAsIGV4ZWMgJXApIiwKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2Fs
bGVlLmdldCgpLAorICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUt
PmV4ZWN1dGFibGUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZGF0YUxvZ0YoIiBs
bGludChub3Qgc2V0KSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KG5vdCBzZXQp
Iik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAobnVtYmVyT2ZDYWxsTGlu
a0luZm9zKCkpIHsKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGdldENhbGxMaW5r
SW5mbyhsb2NhdGlvbikubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgICAgICAgICBpZiAodGFy
Z2V0KQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgaml0KCVwLCBleGVjICVwKSIsIHRhcmdl
dCwgdGFyZ2V0LT5leGVjdXRhYmxlKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiBq
aXQoJXAsIGV4ZWMgJXApIiwgdGFyZ2V0LCB0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiBqaXQobm90IHNldCkiKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KG5vdCBzZXQpIik7CiAgICAgICAgIH0KICNl
bmRpZgogICAgIH0KLSAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
aXQgKz0gMjsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSog
ZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBFeGVj
U3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3Qg
Y2hhciogb3ApCiB7CiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgIGRhdGFMb2dGKCJbJTRkXSAlc1x0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICBvdXQucHJpbnRmKCJbJTRkXSAlc1x0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgIGl0ICs9IDU7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVj
dHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBpbnQgb3BlcmFu
ZCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZShQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBpbnQgb3BlcmFuZCkKIHsKICAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9IHZQQyAtIGluc3RydWN0aW9ucygpLmJlZ2lu
KCk7Ci0gICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwg
bmFtZSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1tvcGVyYW5kXS51LnN0cnVjdHVyZSkudXRm
OCgpLmRhdGEoKSk7CisgICAgb3V0LnByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDW29wZXJhbmRdLnUuc3Ry
dWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0
dXJlcyhjb25zdCBJbnN0cnVjdGlvbiogdlBDKQordm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0
dXJlcyhQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogdlBDKQogewogICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CiAgICAg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQgPSB2UEMgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwogCiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X2dldF9ieV9pZCkpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1cmUoImdldF9ieV9pZCIsIHZQQywg
NCk7CisgICAgICAgIHByaW50U3RydWN0dXJlKG91dCwgImdldF9ieV9pZCIsIHZQQywgNCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKSkgewotICAgICAgICBwcmludFN0cnVj
dHVyZSgiZ2V0X2J5X2lkX3NlbGYiLCB2UEMsIDQpOworICAgICAgICBwcmludFN0cnVjdHVyZShv
dXQsICJnZXRfYnlfaWRfc2VsZiIsIHZQQywgNCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9wcm90bykpIHsKLSAgICAgICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwg
aW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfcHJvdG8iLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgb3V0LnByaW50
ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9w
cm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUg
PT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpIHsKLSAg
ICAgICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zm
c2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRd
LnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVd
LnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzZd
LnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnRmKCIg
IFslNGRdICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRm
OCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkudXRm
OCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWlu
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBd
LnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSkg
ewotICAgICAgICBkYXRhTG9nRigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5z
dHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG91dC5wcmludGYoIiAgWyU0
ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfY2hhaW4iLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpKSB7Ci0gICAgICAgIHByaW50U3Ry
dWN0dXJlKCJwdXRfYnlfaWQiLCB2UEMsIDQpOworICAgICAgICBwcmludFN0cnVjdHVyZShvdXQs
ICJwdXRfYnlfaWQiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfcmVw
bGFjZSkpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1cmUoInB1dF9ieV9pZF9yZXBsYWNlIiwgdlBD
LCA0KTsKKyAgICAgICAgcHJpbnRTdHJ1Y3R1cmUob3V0LCAicHV0X2J5X2lkX3JlcGxhY2UiLCB2
UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00OTgsNyArNDk5LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyhjb25zdCBJbgogICAgIEFTU0VSVCh2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2VuZXJpYykg
fHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lk
X2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X2NhbGwpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2Nh
bGxfZXZhbCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
Y29uc3RydWN0KSk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQordm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewogICAgIC8vIFdlIG9u
bHkgdXNlIHRoZSBFeGVjU3RhdGUqIGZvciB0aGluZ3MgdGhhdCBkb24ndCBhY3R1YWxseSBsZWFk
IHRvIEpTIGV4ZWN1dGlvbiwKICAgICAvLyBsaWtlIGNvbnZlcnRpbmcgYSBKU1N0cmluZyB0byBh
IFN0cmluZy4gSGVuY2UgdGhlIGdsb2JhbEV4ZWMgaXMgYXBwcm9wcmlhdGUuCkBAIC01MDksOTIg
KzUxMCw5MiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4
ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2Rl
KV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIGRhdGFMb2coKnRoaXMpOwot
ICAgIGRhdGFMb2dGKAorICAgIG91dC5wcmludCgqdGhpcyk7CisgICAgb3V0LnByaW50ZigKICAg
ICAgICAgIjogJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXM7ICVkIHBhcmFtZXRlcihzKTsg
JWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKSIsCiAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSksCiAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0
cnVjdGlvbikpLAogICAgICAgICBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
LCBtX251bVZhcnMpOwogICAgIGlmIChzeW1ib2xUYWJsZSgpICYmIHN5bWJvbFRhYmxlKCktPmNh
cHR1cmVDb3VudCgpKQotICAgICAgICBkYXRhTG9nRigiOyAlZCBjYXB0dXJlZCB2YXIocykiLCBz
eW1ib2xUYWJsZSgpLT5jYXB0dXJlQ291bnQoKSk7CisgICAgICAgIG91dC5wcmludGYoIjsgJWQg
Y2FwdHVyZWQgdmFyKHMpIiwgc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCkpOwogICAgIGlm
ICh1c2VzQXJndW1lbnRzKCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoCisgICAgICAgIG91dC5wcmlu
dGYoCiAgICAgICAgICAgICAiOyB1c2VzIGFyZ3VtZW50cywgaW4gciVkLCByJWQiLAogICAgICAg
ICAgICAgYXJndW1lbnRzUmVnaXN0ZXIoKSwKICAgICAgICAgICAgIHVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcigpKSk7CiAgICAgfQogICAgIGlmIChuZWVkc0Z1
bGxTY29wZUNoYWluKCkgJiYgY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCi0gICAgICAgIGRh
dGFMb2dGKCI7IGFjdGl2YXRpb24gaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCkpOwotICAg
IGRhdGFMb2dGKCJcblxuIik7CisgICAgICAgIG91dC5wcmludGYoIjsgYWN0aXZhdGlvbiBpbiBy
JWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKSk7CisgICAgb3V0LnByaW50ZigiXG5cbiIpOwogCiAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAg
ICBjb25zdCBJbnN0cnVjdGlvbiogZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CiAgICAgZm9y
IChjb25zdCBJbnN0cnVjdGlvbiogaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICBkdW1wQnl0ZWNvZGUoZXhlYywgYmVnaW4sIGl0KTsKKyAgICAgICAgZHVtcEJ5dGVjb2RlKG91
dCwgZXhlYywgYmVnaW4sIGl0KTsKIAogICAgIGlmICghbV9pZGVudGlmaWVycy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuSWRlbnRpZmllcnM6XG4iKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiXG5JZGVudGlmaWVyczpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7CiAgICAgICAg
IGRvIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiICBpZCV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpKSwgbV9pZGVudGlmaWVyc1tpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSAhPSBtX2lkZW50aWZpZXJzLnNpemUoKSk7
CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnN0YW50UmVnaXN0ZXJzLmlzRW1wdHkoKSkgewotICAg
ICAgICBkYXRhTG9nRigiXG5Db25zdGFudHM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5D
b25zdGFudHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiICAgayV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
KSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmdldCgp
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgIGsldSA9ICVzXG4i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhlYywgbV9j
b25zdGFudFJlZ2lzdGVyc1tpXS5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAr
K2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKSk7CiAg
ICAgfQogCiAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlJl
Z0V4cHMoKSkgewotICAgICAgICBkYXRhTG9nRigiXG5tX3JlZ2V4cHM6XG4iKTsKKyAgICAgICAg
b3V0LnByaW50ZigiXG5tX3JlZ2V4cHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICByZSV1ID0gJXNcbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpKSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV91bmxpbmtlZENvZGUtPnJl
Z2V4cChpKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgIHJlJXUg
PSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCByZWdleHBUb1NvdXJjZVN0cmluZyht
X3VubGlua2VkQ29kZS0+cmVnZXhwKGkpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICsr
aTsKICAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKICAgICB9CiAKICNpZiBFTkFCTEUoSklU
KQogICAgIGlmICghbV9zdHJ1Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBkYXRh
TG9nRigiXG5TdHJ1Y3R1cmVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuU3RydWN0dXJl
czpcbiIpOwogI2VuZGlmCiAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuRXhjZXB0
aW9uIEhhbmRsZXJzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuRXhjZXB0aW9uIEhhbmRs
ZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICBkYXRhTG9nRigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBb
JTRkXSB9XG4iLCBpICsgMSwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5zdGFy
dCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5lbmQsIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaV0udGFyZ2V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlx0
ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6IFslNGRdIHRhcmdldDogWyU0ZF0gfVxuIiwgaSArIDEs
IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uc3RhcnQsIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5kLCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
W2ldLnRhcmdldCk7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3Jh
cmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKSk7CiAgICAgfQogICAgIAogICAgIGlm
IChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJJbW1lZGlhdGUgU3dpdGNoIEp1bXAgVGFi
bGVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIkltbWVkaWF0ZSBTd2l0Y2ggSnVtcCBUYWJs
ZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCIgICUxZCA9IHtcbiIsIGkpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
ICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9IDA7CiAgICAgICAgICAg
ICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFyZURhdGEtPm1faW1t
ZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVuZCgpOwogICAgICAgICAg
ICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVEYXRh
LT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEqaXRl
cikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0YoIlx0XHQlNGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3
aXRjaEp1bXBUYWJsZXNbaV0ubWluLCAqaXRlcik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50
ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRyeSArIG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dp
dGNoSnVtcFRhYmxlc1tpXS5taW4sICppdGVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGRhdGFMb2dGKCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgICAgIH1c
biIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogICAgIAogICAgIGlm
IChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJcbkNoYXJhY3RlciBTd2l0Y2ggSnVtcCBU
YWJsZXM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5DaGFyYWN0ZXIgU3dpdGNoIEp1bXAg
VGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBpbnQgZW50cnkgPSAwOwogICAgICAg
ICAgICAgVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5t
X2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQoKTsKICAgICAg
ICAgICAgIGZvciAoVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yYXJl
RGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuYmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytlbnRyeSkgewpAQCAtNjAyLDk2ICs2MDMsOTYgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0
ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZGKSk7CiAgICAgICAgICAgICAgICAg
VUNoYXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkgKyBtX3JhcmVEYXRhLT5tX2NoYXJh
Y3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigi
XHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0YSgpLCAqaXRl
cik7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICB9XG4iKTsKKyAgICAg
ICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFN0cmluZygmY2gs
IDEpLnV0ZjgoKS5kYXRhKCksICppdGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91
dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxl
IChpIDwgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAg
ICAgfQogICAgIAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJcblN0cmluZyBT
d2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5TdHJpbmcgU3dp
dGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBk
byB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBTdHJpbmdKdW1wVGFi
bGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAg
ICBmb3IgKFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFi
bGUuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoaXRlci0+a2V5KS51dGY4KCkuZGF0YSgp
LCBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOwotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAg
IH1cbiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHRcIiVzXCIgPT4gJTA0ZFxu
IiwgU3RyaW5nKGl0ZXItPmtleSkudXRmOCgpLmRhdGEoKSwgaXRlci0+dmFsdWUuYnJhbmNoT2Zm
c2V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAg
KytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgZGF0YUxvZ0YoIlxuIik7CisgICAgb3V0LnBy
aW50ZigiXG4iKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCkK
K3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQp
CiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAgICBzd2l0Y2ggKGV4ZWMtPmlu
dGVycHJldGVyKCktPmdldE9wY29kZUlEKGl0LT51Lm9wY29kZSkpIHsKICAgICAgICAgY2FzZSBv
cF9lbnRlcjogewotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGVudGVyIiwgbG9jYXRpb24p
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZW50ZXIiLCBsb2NhdGlvbik7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRp
b246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGNy
ZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9j
cmVhdGVfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRzXHQgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gY3JlYXRlX2FyZ3VtZW50c1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbml0X2xhenlfcmVn
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBvcF9nZXRfY2Fs
bGVlICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gb3BfZ2V0X2NhbGxlZSAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgICsraXQ7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGNy
ZWF0ZV90aGlzICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gY3JlYXRlX3RoaXMgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgICsraXQ7IC8vIFNraXAgdmFsdWUgcHJvZmlsZS4KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X29i
amVjdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19vYmplY3RcdCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3YpLmRh
dGEoKSwgYXJnYyk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywg
JXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIGFyZ3YpLmRhdGEoKSwgYXJnYyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7IC8v
IFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOiB7CiAgICAgICAgICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X2FycmF5
X3dpdGhfc2l6ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBsZW5ndGgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBuZXdfYXJyYXlfd2l0aF9zaXplXHQgJXMsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGxlbmd0aCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHBy
b2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjk5LDE0OSArNzAwLDE0
OSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfYXJyYXlfYnVmZmVyXHQgJXMsICVk
LCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIGFyZ3YsIGFy
Z2MpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2FycmF5X2J1ZmZlclx0ICVzLCAl
ZCwgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBh
cmdjKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHByb2Zp
bGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19y
ZWdleHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0Yo
IlslNGRdIG5ld19yZWdleHBcdCAlcywgIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19yZWdleHBcdCAl
cywgIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAg
ICAgIGlmIChyMCA+PTAgJiYgcjAgPCAoaW50KW1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlJlZ0V4
cHMoKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXMiLCByZWdleHBOYW1lKHJlMCwgcmVn
ZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdl
eHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoImJhZF9yZWdleHAoJWQpIiwgcmUwKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbW92OiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG1vdlx0XHQgJXMsICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBtb3ZcdFx0ICVzLCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
b3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25vdDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm5vdCIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAibm90Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2VxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImVxIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAiZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
ZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImVxX251bGwiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImVxX251bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfbmVxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm5lcSIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgIm5lcSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9uZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgIm5lcV9udWxsIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJuZXFfbnVsbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9zdHJpY3RlcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJzdHJpY3RlcSIpOworICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInN0cmljdGVxIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25zdHJpY3RlcTogewotICAgICAgICAg
ICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJuc3RyaWN0ZXEiKTsKKyAgICAg
ICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuc3RyaWN0ZXEi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbGVzczog
ewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJsZXNzIik7
CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibGVz
cyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sZXNz
ZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibGVz
c2VxIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAibGVzc2VxIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2dyZWF0ZXI6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiZ3JlYXRlciIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImdyZWF0ZXIiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcmVfaW5jOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBw
cmVfaW5jXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwcmVfaW5jXHRcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2RlYzogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHJlX2RlY1x0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gcHJlX2RlY1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3Bvc3RfaW5jOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicG9zdF9pbmMiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfaW5jIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Bvc3RfZGVjOiB7Ci0gICAgICAgICAgICBwcmlu
dFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicG9zdF9kZWMiKTsKKyAgICAgICAgICAgIHBy
aW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfZGVjIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RvX2pzbnVtYmVyOiB7Ci0g
ICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAidG9fanNudW1iZXIi
KTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRv
X2pzbnVtYmVyIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX25lZ2F0ZTogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm5lZ2F0ZSIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAibmVnYXRlIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2FkZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlv
biwgaXQsICJhZGQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJhZGQiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX211bDogewotICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKICAgICAgICAgICAgICsraXQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RpdjogewotICAg
ICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJkaXYiKTsKKyAgICAg
ICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkaXYiKTsKICAg
ICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX21vZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJtb2QiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJtb2QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc3ViOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInN1YiIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInN1YiIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbHNoaWZ0OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFy
eU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxzaGlmdCIpOworICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxzaGlmdCIpOwogICAgICAgICAgICAgYnJl
YWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yc2hpZnQ6IHsKLSAg
ICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicnNoaWZ0Iik7Cisg
ICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicnNoaWZ0
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Vyc2hp
ZnQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAidXJz
aGlmdCIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInVyc2hpZnQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfYml0YW5kOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImJpdGFuZCIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImJpdGFuZCIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYml0eG9yOiB7Ci0gICAgICAgICAgICBw
cmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIpOworICAgICAgICAgICAg
cHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIpOwogICAgICAg
ICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfYml0b3I6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0
LCAiYml0b3IiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJiaXRvciIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC04NTAsNDggKzg1MSw0OCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXMsICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0
ICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbnN0YW5jZW9mXHRcdCAlcywgJXMsICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90eXBlb2Y6IHsKLSAgICAgICAgICAgIHByaW50
VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJ0eXBlb2YiKTsKKyAgICAgICAgICAgIHByaW50
VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInR5cGVvZiIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6IHsKLSAgICAg
ICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc191bmRlZmluZWQiKTsK
KyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX3Vu
ZGVmaW5lZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9pc19ib29sZWFuOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiaXNfYm9vbGVhbiIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAiaXNfYm9vbGVhbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9pc19udW1iZXI6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKKyAgICAgICAgICAgIHByaW50VW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX251bWJlciIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc19zdHJpbmc6IHsKLSAgICAgICAg
ICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19zdHJpbmciKTsKKyAgICAg
ICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX3N0cmluZyIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc19vYmpl
Y3Q6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19v
YmplY3QiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImlzX29iamVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9pc19mdW5jdGlvbjogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImlzX2Z1bmN0aW9uIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbjogewotICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImluIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF90b19iYXNlX3ZhcmlhYmxlOgpAQCAtOTAwLDgg
KzkwMSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAg
ICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCB2YWx1
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHJlc29sdmVJbmZvID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHV0X3RvX2Jhc2Vc
dCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0
YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHZhbHVlKS5kYXRhKCksIHJlc29sdmVJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IlslNGRdIHB1dF90b19iYXNlXHQgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB2YWx1ZSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZToK
QEAgLTkxMywxNCArOTE0LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0
YXRlKiAKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHJlc29sdmVJ
bmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcmVz
b2x2ZVx0XHQgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZv
KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVcdFx0ICVzLCAlcywgJWQiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luaXRfZ2xv
YmFsX2NvbnN0X25vcDogewotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGluaXRfZ2xvYmFs
X2NvbnN0X25vcFx0IiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gaW5p
dF9nbG9iYWxfY29uc3Rfbm9wXHQiLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKQEAgLTkzMCw4ICs5MzEsOCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgIGNhc2Ugb3Bf
aW5pdF9nbG9iYWxfY29uc3Q6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
cmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGluaXRfZ2xvYmFsX2NvbnN0XHQgZyVkKCVwKSwgJXMiLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmpl
Y3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gaW5pdF9nbG9iYWxfY29uc3RcdCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBtX2dsb2JhbE9i
amVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVy
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05MzksOCArOTQwLDggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICBjYXNlIG9w
X2luaXRfZ2xvYmFsX2NvbnN0X2NoZWNrOiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJbJTRkXSBpbml0X2dsb2JhbF9jb25zdF9jaGVja1x0IGclZCglcCksICVzIiwgbG9jYXRpb24s
IG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdp
c3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIGluaXRfZ2xvYmFsX2NvbnN0X2NoZWNrXHQgZyVkKCVwKSwgJXMiLCBs
b2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRl
ciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtOTU1LDE2ICs5NTYsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgaW50IGlzU3RyaWN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgcmVzb2x2ZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBwdXRUb0Jhc2VJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiWyU0ZF0gcmVzb2x2ZV9iYXNlJXNcdCAlcywgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCBp
c1N0cmljdCA/ICJfc3RyaWN0IiA6ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBwdXRU
b0Jhc2VJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVfYmFzZSVzXHQg
JXMsICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCByZXNvbHZlSW5mbywgcHV0VG9CYXNlSW5mbyk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0
Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Vuc3Vy
ZV9wcm9wZXJ0eV9leGlzdHM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAlcywgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGVuc3VyZV9w
cm9wZXJ0eV9leGlzdHNcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3dpdGhf
YmFzZTogewpAQCAtOTczLDggKzk3NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
RXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByZXNvbHZlSW5mbyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHB1dFRvQmFzZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2dGKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywgJXMsICVzLCAlZCwgJWQiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2
ZUluZm8sIHB1dFRvQmFzZUluZm8pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcmVzb2x2
ZV93aXRoX2Jhc2UgJXMsICVzLCAlcywgJWQsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlk
MCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBwdXRUb0Jhc2VJbmZv
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC05ODMsOCArOTg0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUq
IAogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmVzb2x2ZUluZm8g
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSByZXNvbHZl
X3dpdGhfdGhpcyAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1f
aWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Ci0gICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfdGhpcyAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTAwMiw1MCArMTAwMyw1MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0
ZSogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2FycmF5X2xlbmd0aDoKICAgICAgICAgY2FzZSBvcF9nZXRfc3RyaW5nX2xlbmd0aDogewot
ICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0KTsKLSAgICAgICAg
ICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKGV4ZWMsIGxvY2F0aW9uKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHBy
aW50R2V0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0KTsKKyAgICAgICAgICAgIHByaW50
R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgZXhlYywgbG9jYXRpb24pOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoOiB7
Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgImdldF9hcmd1bWVudHNfbGVuZ3RoIik7CiAgICAgICAgICAgICBpdCsrOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsK
LSAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZCIpOworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJwdXRfYnlfaWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfb3V0X29mX2xpbmUiKTsKKyAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291
dF9vZl9saW5lIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOworICAgICAgICAgICAgcHJpbnRQ
dXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbjogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZTogewotICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lIik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGlu
ZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKLSAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7Ci0g
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
X291dF9vZl9saW5lIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2V0
dGVyX3NldHRlcjogewpAQCAtMTA1MywyNCArMTA1NCwyNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlsl
NGRdIHB1dF9nZXR0ZXJfc2V0dGVyXHQgJXMsICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHV0X2dldHRlcl9zZXR0
ZXJcdCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5X2lkOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGRlbF9ieV9pZFx0ICVzLCAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRh
dGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBkZWxfYnlfaWRcdCAlcywgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9i
eV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRfYnlfdmFs
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9ieV92YWxcdCAlcywgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTA3OSw4ICsxMDgwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUq
IAogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGdldF9hcmd1bWVudF9ieV92
YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZ2V0X2FyZ3VtZW50X2J5X3ZhbFx0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMDkyLDE2ICsxMDkzLDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjUgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRf
YnlfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjQpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHI1KS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZ2V0X2J5X3BuYW1lXHQgJXMsICVzLCAl
cywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHI0
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTA5LDIwOCArMTExMCwyMDggQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG4wID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBwdXRfYnlfaW5kZXhcdCAlcywgJXUsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1
LCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9qbXA6IHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbXBcdFx0ICVkKC0+
JWQpIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gam1wXHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9sb29wOiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcFx0XHQgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSBsb29wXHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9q
dHJ1ZTogewotICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoZXhlYywgYmVnaW4sIGl0
LCBsb2NhdGlvbiwgImp0cnVlIik7CisgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChv
dXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqdHJ1ZSIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX3RydWU6IHsKLSAgICAgICAg
ICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJsb29w
X2lmX3RydWUiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywg
YmVnaW4sIGl0LCBsb2NhdGlvbiwgImxvb3BfaWZfdHJ1ZSIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2ZhbHNlOiB7Ci0gICAgICAgICAg
ICBwcmludENvbmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9p
Zl9mYWxzZSIpOworICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0LCBleGVjLCBi
ZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9pZl9mYWxzZSIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZmFsc2U6IHsKLSAgICAgICAgICAgIHByaW50
Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZmFsc2UiKTsKKyAg
ICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywgYmVnaW4sIGl0LCBsb2Nh
dGlvbiwgImpmYWxzZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9qZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoZXhl
YywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImplcV9udWxsIik7CisgICAgICAgICAgICBwcmludENv
bmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZXFfbnVsbCIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmVxX251
bGw6IHsKLSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwg
bG9jYXRpb24sICJqbmVxX251bGwiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1w
KG91dCwgZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImpuZXFfbnVsbCIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBTcGVjaWFsOjpQ
b2ludGVyIHBvaW50ZXIgPSAoKytpdCktPnUuc3BlY2lhbFBvaW50ZXI7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0
ZF0gam5lcV9wdHJcdFx0ICVzLCAlZCAoJXApLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcG9pbnRlciwgbV9nbG9iYWxPYmplY3QtPmFjdHVhbFBv
aW50ZXJGb3IocG9pbnRlciksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gam5lcV9wdHJcdFx0ICVzLCAlZCAoJXApLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcG9pbnRlciwgbV9nbG9iYWxP
YmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9pbnRlciksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2Nh
dGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2ps
ZXNzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpsZXNzXHRc
dCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgt
PiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVz
LCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gamdyZWF0ZXJlcVx0XHQgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVzczogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIGpubGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIGpuZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+JWQp
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzczogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMsICVkKC0+JWQpIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzZXE6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9pZl9sZXNzZXFcdCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NlcVx0ICVzLCAlcywg
JWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2dy
ZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9p
Zl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbG9vcF9pZl9ncmVh
dGVyXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24g
KyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9oaW50OiB7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiWyU0ZF0gbG9vcF9oaW50IiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gbG9vcF9oaW50IiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06IHsKICAgICAgICAgICAgIGludCB0YWJsZUlu
ZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3dpdGNoX2lt
bVx0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdl
dCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVl
UmVnaXN0ZXIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzd2l0Y2hfaW1t
XHQgJWQsICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0
LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVS
ZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVk
LCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9j
YXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0
ZXIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVk
LCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9j
YXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0
ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShv
dXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc3dpdGNoX3N0cmluZzogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQgJWQs
ICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2Nh
dGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3Rl
cikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHN3aXRjaF9zdHJpbmdcdCAl
ZCwgJWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxv
Y2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lz
dGVyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
b3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25ld19mdW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHNob3VsZENoZWNrID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiWyU0ZF0gbmV3X2Z1bmNcdFx0ICVzLCBmJWQsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hvdWxkQ2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5j
aGVja2VkPiIpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2Z1bmNcdFx0ICVzLCBm
JWQsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hv
dWxkQ2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5jaGVja2VkPiIpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3UsdCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfZnVuY19l
eHBcdCAlcywgZiVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBm
MCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywgZiVkIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICAg
ICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMpOwor
ICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwg
RHVtcENhY2hlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMpOworICAgICAgICAgICAgcHJpbnRDYWxs
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczogewpAQCAtMTMxOCw2MCArMTMxOSw2MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgdGhpc1ZhbHVlID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRzID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjYWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZCIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cyku
ZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBj
YWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9v
ZmZfYWN0aXZhdGlvbjogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gdGVhcl9vZmZfYWN0aXZhdGlvblx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHRlYXJfb2ZmX2FyZ3VtZW50cyAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHRlYXJf
b2ZmX2FyZ3VtZW50cyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHJldFx0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gcmV0XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjYWxsX3B1dF9yZXN1
bHRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIGNhbGxfcHV0X3Jlc3VsdFx0XHQgJXMiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXRfb2JqZWN0
X29yX3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NvbnN0cnVjdDogewotICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcyk7CisgICAgICAgICAgICBwcmludENhbGxPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNvbnN0cnVjdCIsIER1bXBDYWNoZXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zdHJjYXQ6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgY291bnQgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzdHJjYXRcdFx0ICVzLCAlcywgJWQi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBjb3VudCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzdHJj
YXRcdFx0ICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBjb3VudCk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHRvX3ByaW1p
dGl2ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BuYW1lczogewpAQCAtMTM4
MCw4ICsxMzgxLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAog
ICAgICAgICAgICAgaW50IHIyID0gaXRbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIz
ID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzVdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9wbmFtZXNcdCAlcywgJXMs
ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24g
KyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFt
ZXMpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzkyLDU0ICsxMzkz
LDU0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAg
ICAgIGludCBzaXplID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGl0ZXIgPSBp
dFs1XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXRbNl0udS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG5leHRfcG5hbWVcdCAlcywgJXMsICVzLCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBp
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCBpdGVyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRlc3QpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGkpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHNpemUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGl0ZXIpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0ICs9IE9Q
Q09ERV9MRU5HVEgob3BfbmV4dF9wbmFtZSkgLSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHB1
c2hfd2l0aF9zY29wZVx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1c2hfd2l0aF9zY29wZVx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6IHsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJbJTRkXSBwb3Bfc2NvcGUiLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBwb3Bfc2NvcGUiLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOiB7CiAgICAgICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwdXNoX25hbWVfc2Nv
cGUgXHQlcywgJXMsICV1IiwgbG9jYXRpb24sIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgYXR0cmlidXRlcyk7Ci0g
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwdXNoX25hbWVfc2NvcGUgXHQlcywgJXMsICV1Iiwg
bG9jYXRpb24sIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wX3Njb3BlczogewogICAgICAgICAgICAg
aW50IHNjb3BlRGVsdGEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbXBf
c2NvcGVzXHReJWQsICVkKC0+JWQpIiwgbG9jYXRpb24sIHNjb3BlRGVsdGEsIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gam1wX3Njb3Blc1x0
XiVkLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9jYXRjaDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY2F0Y2hcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGNhdGNo
XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGhyb3c6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIlslNGRdIHRocm93XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSB0aHJvd1x0XHQgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjogewogICAg
ICAgICAgICAgaW50IGswID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgazEg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSB0aHJvd19z
dGF0aWNfZXJyb3JcdCAlcywgJXMiLCBsb2NhdGlvbiwgY29uc3RhbnROYW1lKGV4ZWMsIGswLCBn
ZXRDb25zdGFudChrMCkpLmRhdGEoKSwgazEgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIHRocm93X3N0YXRpY19lcnJvclx0ICVzLCAlcyIsIGxvY2F0aW9u
LCBjb25zdGFudE5hbWUoZXhlYywgazAsIGdldENvbnN0YW50KGswKSkuZGF0YSgpLCBrMSA/ICJ0
cnVlIiA6ICJmYWxzZSIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2RlYnVnOiB7CkBAIC0xNDQ3LDI2ICsxNDQ4LDI2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCBmaXJzdExpbmUgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IGNvbHVtbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGRlYnVnXHRcdCAlcywgJWQsICVkLCAlZCIsIGxvY2F0
aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgY29s
dW1uKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGRlYnVnXHRcdCAlcywgJWQsICVkLCAl
ZCIsIGxvY2F0aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0
TGluZSwgY29sdW1uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDogewogICAgICAgICAgICAgaW50IGZ1bmN0aW9uID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHJvZmlsZV93
aWxsX2NhbGwgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHJvZmlsZV93aWxsX2NhbGwgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6
IHsKICAgICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZ0YoIlslNGRdIHByb2ZpbGVfZGlkX2NhbGxcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCJbJTRkXSBwcm9maWxlX2RpZF9jYWxsXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2VuZDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZW5kXHRcdCAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSBlbmRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQpAQCAtMTQ3NiwxMSArMTQ3NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KEV4ZWNTdGF0ZSogCiAgICAgfQogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIGNvbnN0IEluc3RydWN0
aW9uKiBpdCA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZU9mZnNldDsKLSAgICBk
dW1wQnl0ZWNvZGUoZXhlYywgaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgaXQpOworICAgIGR1bXBC
eXRlY29kZShvdXQsIGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsKIH0KIAogI2lm
IERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCkBAIC0xNjU1LDYgKzE2NTYsOSBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiAgICAgICAgIG1fcmFyZURhdGEtPm1f
Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY2hhcmFjdGVy
U3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAg
IH0KKyAgICAKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCisg
ICAgICAgIG1fZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRlY29k
ZXNGb3IodGhpcyk7CiB9CiAKIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBiYXNlU2NvcGVEZXB0aCwgUGFz
c1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9m
ZnNldCwgUGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQpAQCAtMTkxMiwxMCArMTkx
NiwxNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgaWYg
KE9wdGlvbnM6OmR1bXBHZW5lcmF0ZWRCeXRlY29kZXMoKSkKICAgICAgICAgZHVtcEJ5dGVjb2Rl
KCk7CiAgICAgbV9nbG9iYWxEYXRhLT5maW5pc2hlZENvbXBpbGluZyh0aGlzKTsKKyAgICAKKyAg
ICBpZiAobV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCisgICAgICAgIG1fZ2xv
YmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRlY29kZXNGb3IodGhpcyk7
CiB9CiAKIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiB7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+
bV9wZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICBtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNv
ZGVQcm9maWxlci0+bm90aWZ5RGVzdHJ1Y3Rpb24odGhpcyk7CisgICAgCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgLy8gUmVtb3ZlIG15c2VsZiBmcm9tIHRoZSBzZXQgb2YgREZHIGNvZGUgYmxv
Y2tzLiBOb3RlIHRoYXQgSSBtYXkgbm90IGJlIGluIHRoaXMgc2V0CiAgICAgLy8gKGJlY2F1c2Ug
SSdtIG5vdCBhIERGRyBjb2RlIGJsb2NrKSwgaW4gd2hpY2ggY2FzZSB0aGlzIGlzIGEgbm8tb3Ag
YW55d2F5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBACiAKIC8vIFNldCBFTkFC
TEVfQllURUNPREVfQ09NTUVOVFMgdG8gMSB0byBlbmFibGUgcmVjb3JkaW5nIGJ5dGVjb2RlIGdl
bmVyYXRvcgogLy8gY29tbWVudHMgZm9yIHRoZSBieXRlY29kZXMgdGhhdCBpdCBnZW5lcmF0ZXMu
IFRoaXMgd2lsbCBhbGxvdwotLy8gQ29kZUJsb2NrOjpkdW1wKCkgdG8gcHJvdmlkZSBzb21lIGNv
bnRleHR1YWwgaW5mbyBhYm91dCB0aGUgYnl0ZWNvZGVzLgorLy8gQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoKSB0byBwcm92aWRlIHNvbWUgY29udGV4dHVhbCBpbmZvIGFib3V0IHRoZSBieXRlY29k
ZXMuCiAvLwogLy8gVGhlIHdheSB0aGlzIGNvbW1lbnQgc3lzdGVtIHdvcmtzIGlzIGFzIGZvbGxv
d3M6CiAvLyAxLiBUaGUgQnl0ZWNvZGVHZW5lcmF0b3IgY2FsbHMgcHJlcGVuZENvbW1lbnQoKSB3
aXRoIGEgY29uc3RhbnQgY29tbWVudApAQCAtODksNyArODksNyBAQAogLy8gICAgcHJlcGVuZGVk
IGNvbW1lbnQgd2lsbCBiZSByZWNvcmRlZCB3aXRoIHRoZSBQQyBvZiB0aGUgb3Bjb2RlIGJlaW5n
CiAvLyAgICBlbWl0dGVkLiBUaGlzIGNvbW1lbnQgaXMgYmVpbmcgcmVjb3JkZWQgaW4gdGhlIENv
ZGVCbG9jaydzCiAvLyAgICBtX2J5dGVjb2RlQ29tbWVudHMuCi0vLyAzLiBXaGVuIENvZGVCbG9j
azo6ZHVtcCgpIGlzIGNhbGxlZCwgaXQgd2lsbCBwYWlyIHVwIHRoZSBjb21tZW50cyB3aXRoCisv
LyAzLiBXaGVuIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkgaXMgY2FsbGVkLCBpdCB3aWxsIHBh
aXIgdXAgdGhlIGNvbW1lbnRzIHdpdGgKIC8vICAgIHRoZWlyIGNvcnJlc3BvbmRpbmcgYnl0ZWNv
ZGVzIGJhc2VkIG9uIHRoZSBieXRlY29kZSBhbmQgY29tbWVudCdzCiAvLyAgICBQQy4gSWYgYSBt
YXRjaGluZyBwYWlyIGlzIGZvdW5kLCB0aGUgY29tbWVudCB3aWxsIGJlIHByaW50ZWQgYWZ0ZXIK
IC8vICAgIHRoZSBieXRlY29kZS4gSWYgbm90LCBubyBjb21tZW50IGlzIHByaW50ZWQuCkBAIC0x
NjAsMTYgKzE2MCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZVZlcnNpb24oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAg
ICAgfQogI2VuZGlmCiAKICAgICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYp
OwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoKTsKLSAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpOwotICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOworICAgICAgICB2b2lkIGR1bXBCeXRlY29k
ZShQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICB2b2lkIGR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgdm9p
ZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIHByaW50U3RydWN0dXJlKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCk7CiAKICAgICAgICAgYm9vbCBpc1N0cmlj
dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogCkBAIC0xODksMTAgKzE5
NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251
bVZhcnM7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGludCBsb2NhdGlvbik7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUoUHJpbnRTdHJlYW0mLCBpbnQgbG9jYXRpb24pOwogI2lmIEVOQUJMRShCWVRFQ09E
RV9DT01NRU5UUykKLSAgICAgICAgY29uc3QgY2hhciogY29tbWVudEZvckJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGVDb21t
ZW50cygpOworICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQoUHJp
bnRTdHJlYW0mLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisgICAgICAgIHZvaWQgZHVtcEJ5
dGVjb2RlQ29tbWVudHMoUHJpbnRTdHJlYW0mKTsKICNlbmRpZgogCiAgICAgICAgIEhhbmRsZXJJ
bmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpA
QCAtMTIxNSwxNyArMTIyMCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzW2ldLnNldCgqbV9nbG9iYWxEYXRhLCBvd25lckV4ZWN1dGFibGUo
KSwgY29uc3RhbnRzW2ldLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHVtcEJ5
dGVjb2RlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJik7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiwgRXhlY1N0
YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKIAog
ICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7Ci0g
ICAgICAgIHZvaWQgcHJpbnRVbmFyeU9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwotICAgICAgICB2b2lkIHByaW50QmluYXJ5
T3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBj
aGFyKiBvcCk7Ci0gICAgICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1bXAoRXhlY1N0YXRlKiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomLCBpbnQgbG9jYXRpb24sIGNv
bnN0IGNoYXIqIG9wKTsKLSAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYpOwotICAgICAgICB2b2lkIHByaW50R2V0
QnlJZENhY2hlU3RhdHVzKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbik7CisgICAgICAgIHZvaWQg
cHJpbnRVbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CisgICAgICAgIHZvaWQgcHJpbnRCaW5h
cnlPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOworICAgICAgICB2b2lkIHByaW50Q29uZGl0aW9uYWxK
dW1wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJ
bnN0cnVjdGlvbiomLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKKyAgICAgICAgdm9p
ZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qJik7CisgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0
dXMoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24pOwogICAgICAgICBlbnVt
IENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgICAgICB2
b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUpOwotICAgICAgICB2b2lkIHByaW50
UHV0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwg
Y29uc3QgY2hhciogb3ApOworICAgICAgICB2b2lkIHByaW50Q2FsbE9wKFByaW50U3RyZWFtJiwg
RXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFy
KiBvcCwgQ2FjaGVEdW1wTW9kZSk7CisgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRT
dHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNv
bnN0IGNoYXIqIG9wKTsKICAgICAgICAgdm9pZCB2aXNpdFN0cnVjdHVyZXMoU2xvdFZpc2l0b3Im
LCBJbnN0cnVjdGlvbiogdlBDKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZp
c2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDExIEBAIENvZGVCbG9ja0hhc2ggSW5s
aW5lQ2FsbEZyYW1lOjpoYXNoKCkgY28KICAgICByZXR1cm4gZXhlY3V0YWJsZS0+aGFzaEZvcihz
cGVjaWFsaXphdGlvbktpbmQoKSk7CiB9CiAKK0NvZGVCbG9jayogSW5saW5lQ2FsbEZyYW1lOjpi
YXNlbGluZUNvZGVCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmJhc2xp
bmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOworfQorCiB2b2lkIElubGluZUNh
bGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5wcmludCgi
IyIsIGhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRhYmxlLmdldCgpKSwgIiwgYmMjIiwg
Y2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHNwZWNpYWxpemF0aW9uS2luZCgpLCAiPiIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZp
c2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDggQEAgc3RydWN0IElubGluZUNhbGxG
cmFtZSB7CiAgICAgCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7CiAgICAgCisgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0OworICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNjI3NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTA4LDYgKzIxMDgsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gaW5z
dHJ1Y3Rpb25zQmVnaW4gKyBtX2N1cnJlbnRJbmRleDsKICAgICAgICAgbV9jdXJyZW50SW5zdHJ1
Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb247IC8vIFNvbWUgbWV0aG9kcyB3YW50IHRvIHVzZSB0
aGlzLCBhbmQgd2UnZCByYXRoZXIgbm90IHRocmVhZCBpdCB0aHJvdWdoIGNhbGxzLgogICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5z
dHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX2dyYXBoLm1fY29t
cGlsYXRpb24pIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQ291bnRFeGVjdXRpb24sIE9wSW5m
byhtX2dyYXBoLmNvbXBpbGF0aW9uLT5leGVjdXRpb25Db3VudGVyRm9yKAorICAgICAgICAgICAg
ICAgIFBCUDo6T3JpZ2luU3RhY2sobV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIs
IG1fY29kZUJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpKSkpKTsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogCiAgICAgICAgIC8vID09PSBGdW5jdGlv
biBlbnRyeSBvcGNvZGVzID09PQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
aXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7
CiAgICAgdm9pZCBkdW1wKExpbmtCdWZmZXImKTsKKyAgICB2b2lkIHJlcG9ydFRvUHJvZmlsZXIo
UEJQOjpDb21waWxhdGlvbiosIExpbmtCdWZmZXImKTsKICAgICAKIHByaXZhdGU6CiAgICAgdm9p
ZCBkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBwcmVmaXgsIExpbmtC
dWZmZXImLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwmIHByZXZpb3VzTGFiZWwsIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBjdXJyZW50TGFiZWwsIE5vZGVJbmRleCBjb250ZXh0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0gewogR3JhcGg6Okdy
YXBoKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2ln
bmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mIG11c3RI
YW5kbGVWYWx1ZXMpCiAgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKICAgICAsIG1fY29k
ZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1fY29tcGlsYXRpb24oZ2xvYmFsRGF0YS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIgPyBnbG9iYWxEYXRhLm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+bmV3Q29t
cGlsYXRpb24oY29kZUJsb2NrLCBQQlA6OkRGRykgOiAwKQogICAgICwgbV9wcm9maWxlZEJsb2Nr
KGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQog
ICAgICwgbV9vc3JFbnRyeUJ5dGVjb2RlSW5kZXgob3NyRW50cnlCeXRlY29kZUluZGV4KQpAQCAt
MjU0LDYgKzI1NSwxMyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
CiAgICAgICAgIGlmIChoYXNQcmludGVkKQogICAgICAgICAgICAgb3V0LnByaW50KCIsICIpOwog
ICAgICAgICBvdXQucHJpbnQoaW5kZXhpbmdUeXBlVG9TdHJpbmcobm9kZS5pbmRleGluZ1R5cGUo
KSkpOworICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKG5vZGUuaGFz
RXhlY3V0aW9uQ291bnRlcigpKSB7CisgICAgICAgIGlmIChoYXNQcmludGVkKQorICAgICAgICAg
ICAgb3V0LnByaW50KCIsICIpOworICAgICAgICBvdXQucHJpbnQoUmF3UG9pbnRlcihub2RlLmV4
ZWN1dGlvbkNvdW50ZXIoKSkpOworICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAg
ICAgaWYgKG9wID09IEpTQ29uc3RhbnQpIHsKICAgICAgICAgb3V0LnByaW50KGhhc1ByaW50ZWQg
PyAiLCAiIDogIiIsICIkIiwgbm9kZS5jb25zdGFudE51bWJlcigpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNjcxLDYgKzY3MSw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBKU0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKICAgICBD
b2RlQmxvY2sqIG1fY29kZUJsb2NrOworICAgIFBCUDo6Q29tcGlsYXRpb24qIG1fY29tcGlsYXRp
b247CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAKICAgICBWZWN0b3I8IE93blB0
cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NTksNiArODU5LDE2IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgQVNTRVJUKGhhc0FyZ3VtZW50UG9zaXRpb25TdGFydCgpKTsKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc0V4ZWN1dGlvbkNvdW50
ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ291bnRFeGVjdXRpb247CisgICAg
fQorICAgIAorICAgIFBCUDo6RXhlY3V0aW9uQ291bnRlciogZXhlY3V0aW9uQ291bnRlcigpCisg
ICAgeworICAgICAgICByZXR1cm4gYml0d3NlX2Nhc3Q8UEJQOjpFeGVjdXRpb25Db3VudGVyKj4o
bV9vcEluZm8pOworICAgIH0KIAogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGUoKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEzNjI3
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQ1LDYgKzI0NSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBcCiAgICAgbWFjcm8oR2FyYmFnZVZhbHVlLCBOb2RlUmVzdWx0SlMgfCBOb2RlQ2xvYmJl
cnNXb3JsZCkgXAogICAgIFwKKyAgICAvKiBDb3VudCBleGVjdXRpb24uICovXAorICAgIG1hY3Jv
KENvdW50RXhlY3V0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgXAogICAgIC8qIFRoaXMg
aXMgYSBwc2V1ZG8tdGVybWluYWwuIEl0IG1lYW5zIHRoYXQgZXhlY3V0aW9uIHNob3VsZCBmYWxs
IG91dCBvZiBERkcgYXQgKi9cCiAgICAgLyogdGhpcyBwb2ludCwgYnV0IGV4ZWN1dGlvbiBkb2Vz
IGNvbnRpbnVlIGluIHRoZSBiYXNpYyBibG9jayAtIGp1c3QgaW4gYSAqL1wKICAgICAvKiBkaWZm
ZXJlbnQgY29tcGlsZXIuICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OTEyLDYgKzQ5MTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgIGNhc2UgTmV3RnVuY3Rpb25FeHByZXNzaW9uOgogICAgICAgICBjb21waWxl
TmV3RnVuY3Rpb25FeHByZXNzaW9uKG5vZGUpOwogICAgICAgICBicmVhazsKKyAgICAgICAgCisg
ICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKKyAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMy
KDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKG5vZGUuZXhlY3V0aW9uQ291bnRl
cigpLT5hZGRyZXNzKCkpKTsKKyAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEdhcmJhZ2VWYWx1
ZToKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCB0byB0aGUgcG9pbnQgb2YgY29kZSBl
bWlzc2lvbiBmb3IgYSBHYXJiYWdlVmFsdWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBKSVQ6OkpJVChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIENvZGVCCiAgICAgLCBtX2xhc3RSZXN1bHRCeXRlY29kZVJlZ2lzdGVyKHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiAgICAgLCBtX2p1bXBUYXJnZXRzUG9zaXRp
b24oMCkKICNlbmRpZgorICAgICwgbV9jb21waWxhdGlvbigwKQogI2lmIFVTRShPU19SQU5ET01O
RVNTKQogICAgICwgbV9yYW5kb21HZW5lcmF0b3IoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIoKSkKICNlbHNlCkBAIC0yMzIsNiArMjMzLDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2dGKCJP
bGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yIGJjIyV1IGF0IG9mZnNldCAweCVseC5cbiIsIG1fYnl0
ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogI2VuZGlmCisgICAgICAgIAorICAg
ICAgICBpZiAobV9jb21waWxhdGlvbikgeworICAgICAgICAgICAgYWRkNjQoCisgICAgICAgICAg
ICAgICAgVHJ1c3RlZEltbTMyKDEpLAorICAgICAgICAgICAgICAgIEFic29sdXRlQWRkcmVzcyht
X2NvbXBpbGF0aW9uLT5leGVjdXRpb25Db3VudGVyRm9yKFBCUDo6T3JpZ2luU3RhY2soUEJQOjpP
cmlnaW4oCisgICAgICAgICAgICAgICAgICAgIG1fY29tcGlsYXRpb24tPmJ5dGVjb2RlcygpLCBt
X2J5dGVjb2RlT2Zmc2V0KSkpLT5hZGRyZXNzKCkpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHN3
aXRjaCAobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9w
Y29kZSkpIHsKICAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9kZWxfYnlfdmFsKQpAQCAtNjMx
LDggKzYzOSwxMCBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAg
ICAgfQogI2VuZGlmCiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpKQor
ICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSB8fCBtX2dsb2JhbERhdGEtPm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBhZG9wdFB0cihuZXcg
SklURGlzYXNzZW1ibGVyKG1fY29kZUJsb2NrKSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+bV9w
ZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICBtX2NvbXBpbGF0aW9uID0gbV9nbG9iYWxEYXRh
LT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5ld0NvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCBQQlA6
OkJhc2VsaW5lKTsKICAgICAKICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgIG1fZGlz
YXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJlbCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQ3LDYgKzk0Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2VuZGlmCiAjZW5kaWYKICAgICAgICAgT3duUHRyPEpJVERpc2Fzc2VtYmxlcj4gbV9kaXNhc3Nl
bWJsZXI7CisgICAgICAgIFBCUDo6Q29tcGlsYXRpb24qIG1fY29tcGlsYXRpb247CiAgICAgICAg
IFdlYWtSYW5kb20gbV9yYW5kb21HZW5lcmF0b3I7CiAgICAgICAgIHN0YXRpYyBDb2RlUmVmIHN0
cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTM2
Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNyBAQCB2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVt
cChQcmludFN0cmVhbSYgCiAgICAgb3V0LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVy
KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXpl
KCkpLCAiKTpcbiIpOwogICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fc3Rh
cnRPZkNvZGUsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFswXSk7CiAgICAgCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZpcnN0U2xvd0xhYmVsOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGguc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aFtpXS5p
c1NldCgpKSB7Ci0gICAgICAgICAgICBmaXJzdFNsb3dMYWJlbCA9IG1fbGFiZWxGb3JCeXRlY29k
ZUluZGV4SW5TbG93UGF0aFtpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotICAgIGR1bXBGb3JJbnN0cnVjdGlvbnMob3V0LCBsaW5rQnVmZmVyLCAiICAgICIsIG1fbGFi
ZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aCwgZmlyc3RTbG93TGFiZWwuaXNTZXQoKSA/IGZp
cnN0U2xvd0xhYmVsIDogbV9lbmRPZlNsb3dQYXRoKTsKKyAgICBkdW1wRm9ySW5zdHJ1Y3Rpb25z
KG91dCwgbGlua0J1ZmZlciwgIiAgICAiLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFpblBh
dGgsIGZpcnN0U2xvd0xhYmVsKCkpOwogICAgIG91dC5wcmludCgiICAgIChFbmQgT2YgTWFpbiBQ
YXRoKVxuIik7CiAgICAgZHVtcEZvckluc3RydWN0aW9ucyhvdXQsIGxpbmtCdWZmZXIsICIgICAg
KFMpICIsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aCwgbV9lbmRPZlNsb3dQYXRo
KTsKICAgICBvdXQucHJpbnQoIiAgICAoRW5kIE9mIFNsb3cgUGF0aClcbiIpOwpAQCAtNzEsMjIg
KzY0LDU4IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wKExpbmtCdWZmZXImIGwKICAgICBk
dW1wKFdURjo6ZGF0YUZpbGUoKSwgbGlua0J1ZmZlcik7CiB9CiAKLXZvaWQgSklURGlzYXNzZW1i
bGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxp
bmtCdWZmZXIsIGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJl
bD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVsKQordm9pZCBKSVREaXNh
c3NlbWJsZXI6OnJlcG9ydFRvUHJvZmlsZXIoUEJQOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24s
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0Owor
ICAgIAorICAgIG91dC5yZXNldCgpOworICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZm
ZXIsIG1fc3RhcnRPZkNvZGUsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFswXSk7
CisgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBCUDo6Q29tcGlsZWRCeXRlY29kZShQ
QlA6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSkpOworICAgIAorICAgIHJlcG9ydElu
c3RydWN0aW9ucyhjb21waWxhdGlvbiwgbGlua0J1ZmZlciwgIiAgICAiLCBtX2xhYmVsRm9yQnl0
ZWNvZGVJbmRleEluTWFpblBhdGgsIGZpcnN0U2xvd0xhYmVsKCkpOworICAgIGNvbXBpbGF0aW9u
LT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygp
LCAiICAgIChFbmQgT2YgTWFpbiBQYXRoKVxuIikpOworICAgIHJlcG9ydEluc3RydWN0aW9ucyhj
b21waWxhdGlvbiwgbGlua0J1ZmZlciwgIiAgICAoUykgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5k
ZXhJblNsb3dQYXRoLCBtX2VuZE9mU2xvd1BhdGgpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNj
cmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCAiICAgIChF
bmQgT2YgU2xvdyBQYXRoKVxuIikpOworICAgIG91dC5yZXNldCgpOworICAgIGR1bXBEaXNhc3Nl
bWJseShvdXQsIGxpbmtCdWZmZXIsIG1fZW5kT2ZTbG93UGF0aCwgbV9lbmRPZkNvZGUpOworICAg
IGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpP
cmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpKTsKK30KKworTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIEpJVERpc2Fzc2VtYmxlcjo6Zmlyc3RTbG93TGFiZWwoKQoreworICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBmaXJzdFNsb3dMYWJlbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGlmIChtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbaV0uaXNTZXQoKSkgeworICAg
ICAgICAgICAgZmlyc3RTbG93TGFiZWwgPSBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1Bh
dGhbaV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
Zmlyc3RTbG93TGFiZWwuaXNTZXQoKSA/IGZpcnN0U2xvd0xhYmVsIDogbV9lbmRPZlNsb3dQYXRo
OworfQorCitWZWN0b3I8RHVtcGVkT3A+IEpJVERpc2Fzc2VtYmxlcjo6ZHVtcFZlY3RvckZvcklu
c3RydWN0aW9ucyhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZl
Y3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBlbmRMYWJlbCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGxhYmVscy5zaXpl
KCk7KSB7CisgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgIFZlY3RvcjxEdW1wZWRPcD4g
cmVzdWx0OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsYWJlbHMuc2l6ZSgp
OykgewogICAgICAgICBpZiAoIWxhYmVsc1tpXS5pc1NldCgpKSB7CiAgICAgICAgICAgICBpKys7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBvdXQucHJpbnQocHJl
Zml4KTsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoRHVtcGVk
T3AoKSk7CisgICAgICAgIHJlc3VsdC5sYXN0KCkuaW5kZXggPSBpOwogICAgICAgICBtX2NvZGVC
bG9jay0+ZHVtcEJ5dGVjb2RlKGkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIG5leHRJbmRleCA9
IGkgKyAxOyA7IG5leHRJbmRleCsrKSB7CiAgICAgICAgICAgICBpZiAobmV4dEluZGV4ID49IGxh
YmVscy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5r
QnVmZmVyLCBsYWJlbHNbaV0sIGVuZExhYmVsKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubGFz
dCgpLmRpc2Fzc2VtYmx5ID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChsYWJlbHNbbmV4dEluZGV4XS5pc1Nl
dCgpKSB7CiAgICAgICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwg
bGFiZWxzW2ldLCBsYWJlbHNbbmV4dEluZGV4XSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lmxh
c3QoKS5kaXNhc3NlbWJseSA9IG91dC50b0NTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBpID0g
bmV4dEluZGV4OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtOTQs
NiArMTIzLDI2IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb24KICAg
ICB9CiB9CiAKK3ZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKFByaW50
U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIqIHByZWZpeCwg
VmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIGVuZExhYmVsKQoreworICAgIFZlY3RvcjxEdW1wZWRPcD4gZHVtcGVkT3BzID0gZHVtcFZl
Y3RvckZvckluc3RydWN0aW9uKGxpbmtCdWZmZXIsIHByZWZpeCwgbGFiZWxzLCBlbmRMYWJlbCk7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bXBlZE9wcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgb3V0LnByaW50KGR1bXBlZE9wc1tpXS5kaXNhc3NlbWJseSk7Cit9CisKK3Zv
aWQgSklURGlzYXNzZW1ibGVyOjpyZXBvcnRJbnN0cnVjdGlvbnMoUEJQOjpDb21waWxhdGlvbiog
Y29tcGlsYXRpb24sIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIqIHByZWZpeCwg
VmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIGVuZExhYmVsKQoreworICAgIFZlY3RvcjxEdW1wZWRPcD4gZHVtcGVkT3BzID0gZHVtcFZl
Y3RvckZvckluc3RydWN0aW9uKGxpbmtCdWZmZXIsIHByZWZpeCwgbGFiZWxzLCBlbmRMYWJlbCk7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bXBlZE9wcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oCisgICAgICAgICAgICBQ
QlA6OkNvbXBpbGVkQnl0ZWNvZGUoCisgICAgICAgICAgICAgICAgUEJQOjpPcmlnaW5TdGFjayhQ
QlA6Ok9yaWdpbihjb21waWxhdGlvbi0+Ynl0ZWNvZGVzKCksIGR1bXBlZE9wc1tpXS5pbmRleCkp
LAorICAgICAgICAgICAgICAgIGR1bXBlZE9wc1tpXS5kaXNhc3NlbWJseSkpOworICAgIH0KK30K
Kwogdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0
LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZnJvbSwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIHRvKQogewogICAgIENvZGVMb2NhdGlvbkxhYmVsIGZyb21Mb2Nh
dGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihmcm9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuaAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiUEJQRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTgsOSArNTksMjAgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgZHVtcChMaW5rQnVmZmVyJik7CiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgcmVwb3J0VG9Qcm9maWxlcihQQlA6OkNvbXBp
bGF0aW9uKiwgTGlua0J1ZmZlciYpOwogCiBwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBmaXJzdFNsb3dMYWJlbCgpOworICAgIAorICAgIHN0cnVjdCBEdW1wZWRPcCB7CisgICAg
ICAgIHVuc2lnbmVkIGluZGV4OworICAgICAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5OworICAgIH07
CisgICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKExpbmtCdWZm
ZXImLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBs
YWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7CisgICAgICAgIAogICAgIHZv
aWQgZHVtcEZvckluc3RydWN0aW9ucyhQcmludFN0cmVhbSYsIExpbmtCdWZmZXImLCBjb25zdCBj
aGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7CisgICAgdm9pZCByZXBvcnRJbnN0cnVjdGlvbnMo
UEJQOjpDb21waWxhdGlvbiosIExpbmtCdWZmZXImLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3Rv
cjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBl
bmRMYWJlbCk7CisgICAgCiAgICAgdm9pZCBkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mLCBM
aW5rQnVmZmVyJiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZyb20sIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCB0byk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUEJ5dGVj
b2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworSlNWYWx1ZSBCeXRl
Y29kZTo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVjb2RlSW5kZXgsIGpz
TnVtYmVyKG1fYnl0ZWNvZGVJbmRleCkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlc2NyaXB0aW9uLCBqc1N0cmluZyhl
eGVjLCBTdHJpbmc6OmZyb21VVEY4KG1fZGVzY3JpcHRpb24pKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgUEJQQnl0ZWNvZGVfaAorI2RlZmluZSBQQlBCeXRlY29kZV9oCisKKyNpbmNs
dWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlIHsKK3B1YmxpYzoKKyAg
ICBCeXRlY29kZSgpCisgICAgICAgIDogbV9ieXRlY29kZUluZGV4KFVJTlRfTUFYKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3Qg
Q1N0cmluZyYgZGVzY3JpcHRpb24pCisgICAgICAgIDogbV9ieXRlY29kZUluZGV4KGJ5dGVjb2Rl
SW5kZXgpCisgICAgICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlwdGlvbikKKyAgICB7CisgICAg
fQorICAgIAorICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2J5
dGVjb2RlSW5kZXg7IH0KKyAgICBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzY3JpcHRpb247IH0KKyAgICAKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KikgY29uc3Q7Citwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAgICBD
U3RyaW5nIG1fZGVzY3JpcHRpb247Cit9OworCitpbmxpbmUgdW5zaWduZWQgZ2V0Qnl0ZWNvZGVJ
bmRleEZvckJ5dGVjb2RlKEJ5dGVjb2RlKiBieXRlY29kZSkgeyByZXR1cm4gYnl0ZWNvZGUtPmJ5
dGVjb2RlSW5kZXgoKTsgfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAv
LyBQQlBCeXRlY29kZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBCeXRlY29kZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2Rlcy5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CisKK0J5dGVjb2Rlczo6Qnl0ZWNvZGVzKHNpemVfdCBpZCwgQ29k
ZUJsb2NrSGFzaCBoYXNoKQorICAgIDogbV9pZChpZCkKKyAgICAsIG1faGFzaChoYXNoKQorewor
fQorCitCeXRlY29kZXM6On5CeXRlY29kZXMoKSB7IH0KKwordW5zaWduZWQgQnl0ZWNvZGVzOjpp
bmRleEZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlLCB1bnNpZ25lZCwgZ2V0Qnl0ZWNvZGVJbmRl
eEZvckJ5dGVjb2RlPihtX2J5dGVjb2RlLmJlZ2luKCksIG1fYnl0ZWNvZGUuc2l6ZSgpLCBieXRl
Y29kZUluZGV4KSAtIG1fYnl0ZWNvZGUuYmVnaW4oKTsKK30KKworY29uc3QgQnl0ZWNvZGUmIEJ5
dGVjb2Rlczo6Zm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdAor
eworICAgIHJldHVybiBhdChpbmRleEZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpOwor
fQorCit2b2lkIEJ5dGVjb2Rlczo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IG91dC5wcmludCgiIyIsIG1faGFzaCwgIigiLCBtX2lkLCAiKSIpOworfQorCitKU1ZhbHVlIEJ5
dGVjb2Rlczo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+cHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVjb2Rl
c0lELCBqc051bWJlcihtX2lkKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzaCwganNTdHJpbmcoZXhlYywgU3RyaW5n
Ojpmcm9tVVRGOCh0b0NTdHJpbmcobV9oYXNoKSkpKTsKKyAgICAKKyAgICBKU0FycmF5KiBzdHJl
YW0gPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2J5dGVjb2RlLnNpemUoKTsgKytpKQorICAgICAgICBzdHJlYW0tPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGksIG1fYnl0ZWNvZGVbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0TmFtZXMoKS5ieXRlY29kZSwg
c3RyZWFtKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRl
Y29kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
Qnl0ZWNvZGVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQQnl0ZWNvZGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBCeXRlY29k
ZXNfaAorI2RlZmluZSBQQlBCeXRlY29kZXNfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIlBCUEJ5dGVjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNvZGVzIHsKK3B1Ymxp
YzoKKyAgICBCeXRlY29kZXMoc2l6ZV90IGlkLCBDb2RlQmxvY2tIYXNoIGhhc2gpOworICAgIH5C
eXRlY29kZXMoKTsKKyAgICAKKyAgICB2b2lkIGFwcGVuZChjb25zdCBCeXRlY29kZSYgYnl0ZWNv
ZGUpIHsgbV9ieXRlY29kZS5hcHBlbmQoYnl0ZWNvZGUpOyB9CisgICAgCisgICAgc2l6ZV90IGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIENvZGVCbG9ja0hhc2ggaGFzaCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzaDsgfQorICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRhdGEgc3Ry
dWN0dXJlIGlzIG5vdCBpbmRleGVkIGJ5IGJ5dGVjb2RlIGluZGV4LgorICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlLnNpemUoKTsgfQorICAgIGNvbnN0IEJ5dGVj
b2RlJiBhdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlW2ldOyB9CisgICAg
CisgICAgdW5zaWduZWQgaW5kZXhGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpIGNvbnN0OworICAgIGNvbnN0IEJ5dGVjb2RlJiBmb3JCeXRlY29kZUluZGV4KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpIGNvbnN0OworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OworICAgIAorICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAK
K3ByaXZhdGU6CisgICAgc2l6ZV90IG1faWQ7CisgICAgQ29kZUJsb2NrSGFzaCBtX2hhc2g7Cisg
ICAgVmVjdG9yPEJ5dGVjb2RlPiBtX2J5dGVjb2RlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OlBCUAorCisjZW5kaWYgLy8gUEJQQnl0ZWNvZGVzX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQ29t
cGlsYXRpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitDb21waWxh
dGlvbjo6Q29tcGlsYXRpb24oUEJQQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBpbGF0aW9uS2lu
ZCBraW5kKQorICAgIDogbV9ieXRlY29kZXMoYnl0ZWNvZGVzKSwKKyAgICAsIG1fa2luZChraW5k
KQoreworfQorCitDb21waWxhdGlvbjo6fkNvbXBpbGF0aW9uKCkgeyB9CisKK3ZvaWQgQ29tcGls
YXRpb246OmFkZERlc2NyaXB0aW9uKGNvbnN0IENvbXBpbGVkQnl0ZWNvZGUmIGNvbXBpbGVkQnl0
ZWNvZGUpCit7CisgICAgbV9kZXNjcmlwdGlvbnMuYXBwZW5kKGNvbXBpbGVkQnl0ZWNvZGUpOwor
fQorCitFeGVjdXRpb25Db3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihj
b25zdCBPcmlnaW5TdGFjayYgb3JpZ2luKQoreworICAgIEhhc2hNYXA8T3JpZ2luU3RhY2ssIE93
blB0cjxFeGVjdXRpb25Db3VudGVyPiA+IGl0ZXIgPSBtX2NvdW50ZXJzLmZpbmQob3JpZ2luKTsK
KyAgICBpZiAoaXRlciAhPSBtX2NvdW50ZXJzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWUuZ2V0KCk7CisgICAgCisgICAgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+IGNvdW50ZXIg
PSBhZG9wdFB0cihuZXcgRXhlY3V0aW9uQ291bnRlcigpKTsKKyAgICBFeGVjdXRpb25Db3VudGVy
KiByZXN1bHQgPSBjb3VudGVyLmdldCgpOworICAgIG1fY291bnRlcnMuYWRkKG9yaWdpbiwgY291
bnRlci5yZWxlYXNlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWUgQ29tcGls
YXRpb246OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZXNJ
RCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxhdGlvbktpbmQs
IGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgodG9DU3RyaW5nKG1fa2luZCkpKSk7Cisg
ICAgCisgICAgSlNBcnJheSogZGVzY3JpcHRpb25zID0gY29uc3RydWN0RW1wdHlBcnJheShleGVj
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kZXNjcmlwdGlvbnMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIGRlc2NyaXB0aW9ucy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9kZXNj
cmlwdGlvbnNbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVzY3JpcHRpb25zLCBkZXNjcmlwdGlv
bnMpOworICAgIAorICAgIEpTQXJyYXkqIGNvdW50ZXJzID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjKTsKKyAgICBIYXNoTWFwPE9yaWdpblN0YWNrLCBPd25QdHI8RXhlY3V0aW9uQ291bnRlcj4g
Pjo6aXRlcmF0b3IgZW5kID0gbV9jb3VudGVycy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8T3Jp
Z2luU3RhY2ssIE93blB0cjxFeGVjdXRpb25Db3VudGVyPiA+OjppdGVyYXRvciBpdGVyID0gbV9j
b3VudGVycy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIEpTT2JqZWN0
KiBjb3VudGVyRW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgY291
bnRlckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkub3JpZ2luLCBpdGVyLT5rZXkudG9KUyhleGVjKSk7CisgICAgICAgIGNvdW50ZXJFbnRy
eS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV4
ZWN1dGlvbkNvdW50LCBqc051bWJlcihpdGVyLT52YWx1ZSkpOworICAgICAgICBjb3VudGVycy0+
cHVzaChleGVjLCBjb3VudGVyRW50cnkpOworICAgIH0KKyAgICByZXN1bHQtPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb3VudGVycywgY291bnRl
cnMpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENv
bXBpbGF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBp
bGF0aW9uX2gKKyNkZWZpbmUgUEJQQ29tcGlsYXRpb25faAorCisjaW5jbHVkZSAiSlNWYWx1ZS5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKKy8vIFJlcHJlc2VudHMgdGhl
IGFjdCBvZiBleGVjdXRpbmcgc29tZSBieXRlY29kZXMgaW4gc29tZSBlbmdpbmUsIGFuZCBkb2Vz
CisvLyBhbGwgb2YgdGhlIGNvdW50aW5nIGZvciB0aG9zZSBleGVjdXRpb25zLgorCitjbGFzcyBD
b21waWxhdGlvbiB7CitwdWJsaWM6CisgICAgQ29tcGlsYXRpb24oUEJQQnl0ZWNvZGVzKiwgQ29t
cGlsYXRpb25LaW5kKTsKKyAgICB+Q29tcGlsYXRpb24oKTsKKyAgICAKKyAgICBCeXRlY29kZXMq
IGJ5dGVjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVzOyB9CisgICAgQ29tcGlsYXRp
b25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICAKKyAgICB2b2lkIGFk
ZERlc2NyaXB0aW9uKGNvbnN0IENvbXBpbGVkQnl0ZWNvZGUmKTsKKyAgICBFeGVjdXRpb25Db3Vu
dGVyKiBleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJik7CisgICAgCisgICAg
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBCeXRl
Y29kZXMqIG1fYnl0ZWNvZGVzOworICAgIENvbXBpbGF0aW9uS2luZCBtX2tpbmQ7CisgICAgVmVj
dG9yPENvbXBpbGVkQnl0ZWNvZGU+IG1fZGVzY3JpcHRpb25zOworICAgIEhhc2hNYXA8T3JpZ2lu
U3RhY2ssIE93blB0cjxFeGVjdXRpb25Db3VudGVyPiA+IG1fY291bnRlcnM7Cit9OworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBDb21waWxhdGlvbl9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxh
dGlvbktpbmQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGF0aW9uS2luZC5oIgorCisjaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQQlA6OkNvbXBpbGF0aW9uS2luZCBraW5kKQorewor
ICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgSlNDOjpQQlA6OkxMSW50OgorICAgICAgICBv
dXQucHJpbnQoIkxMSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UEJQOjpC
YXNlbGluZToKKyAgICAgICAgb3V0LnByaW50KCJCYXNlbGluZSIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBKU0M6OlBCUDo6REZHOgorICAgICAgICBvdXQucHJpbnQoIkRGRyIpOworICAg
ICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25L
aW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBDb21waWxhdGlvbktpbmRfaAor
I2RlZmluZSBQQlBDb21waWxhdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFBCUCB7CisKK2VudW0gQ29tcGlsYXRpb25LaW5kIHsgTExJbnQsIEJhc2VsaW5lLCBERkcgfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
UHJpbnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlBCUDo6
Q29tcGlsYXRpb25LaW5kKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQQlBD
b21waWxhdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UEJQQ29tcGlsZWRCeXRlY29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBDb21waWxl
ZEJ5dGVjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworQ29tcGls
ZWRCeXRlY29kZShjb25zdCBPcmlnaW5TdGFjayYgb3JpZ2luLCBjb25zdCBDU3RyaW5nJiBkZXNj
cmlwdGlvbikKKyAgICA6IG1fb3JpZ2luKG9yaWdpbikKKyAgICAsIG1fZGVzY3JpcHRpb24oZGVz
Y3JpcHRpb24pCit7Cit9CisKK0NvbXBpbGVkQnl0ZWNvZGU6On5Db21waWxlZEJ5dGVjb2RlKCkK
K3sKK30KKworSlNWYWx1ZSBDb21waWxlZEJ5dGVjb2RlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7CisgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkub3JpZ2luLCBtX29yaWdpbi50b0pTKGV4ZWMpKTsKKyAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5k
ZXNjcmlwdGlvbiwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOChtX2Rlc2NyaXB0aW9u
KSkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVk
Qnl0ZWNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UEJQQ29tcGlsZWRCeXRlY29kZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAorI2RlZmluZSBQQlBDb21waWxlZEJ5dGVjb2Rl
X2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQQlBPcmlnaW5TdGFjay5oIgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIENvbXBpbGVkQnl0ZWNv
ZGUgeworcHVibGljOgorICAgIC8vIEl0J3MgdmFsaWQgdG8gaGF2ZSBhbiBlbXB0eSBPcmlnaW5T
dGFjaywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBzb21lCisgICAgLy8gc29ydCBvZiBu
b24tYnl0ZWNvZGUtcmVsYXRlZCBtYWNoaW5lIGNvZGUuCisgICAgQ29tcGlsZWRCeXRlY29kZShj
b25zdCBPcmlnaW5TdGFjayYsIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKyAgICB+Q29t
cGlsZWRCeXRlY29kZSgpOworICAgIAorICAgIGNvbnN0IE9yaWdpblN0YWNrJiBvcmlnaW5TdGFj
aygpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisgICAgY29uc3QgQ1N0cmluZyYgZGVzY3Jp
cHRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CisgICAgCisgICAgSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBPcmlnaW5TdGFj
ayBtX29yaWdpbjsKKyAgICBDU3RyaW5nIG1fZGVzY3JpcHRpb247Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBDb21waWxlZEJ5dGVjb2RlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBCUERhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworRGF0
YWJhc2U6OkRhdGFiYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICA6IG1fZ2xvYmFs
RGF0YShnbG9iYWxEYXRhKQoreworfQorCitCeXRlY29kZXMqIERhdGFiYXNlOjphZGRCeXRlY29k
ZXMoQ29kZUJsb2NrSGFzaCBoYXNoKQoreworICAgIG1fYnl0ZWNvZGVzLmFwcGVuZChCeXRlY29k
ZXMobV9ieXRlY29kZXMuc2l6ZSgpLCBoYXNoKSk7CisgICAgcmV0dXJuICZtX2J5dGVjb2Rlcy5s
YXN0KCk7Cit9CisKK0J5dGVjb2RlcyogRGF0YWJhc2U6OmVuc3VyZUJ5dGVjb2Rlc0ZvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgCisg
ICAgY29kZUJsb2NrID0gY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKTsKKyAgICAKKyAgICBI
YXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29k
ZXNNYXAuZmluZChjb2RlQmxvY2spOworICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVzTWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CisgICAgCisgICAgQnl0ZWNvZGVzKiBy
ZXN1bHQgPSBhZGRCeXRlY29kZXMoY29kZUJsb2NrLT5oYXNoKCkpOworICAgIAorICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IDA7IGJ5dGVjb2RlSW5kZXggPCBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLnNpemUoKTspIHsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisgICAgICAgIGNv
ZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKG91dCwgYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIHJlc3Vs
dC0+YXBwZW5kKEJ5dGVjb2RlKGJ5dGVjb2RlSW5kZXgsIG91dC50b0NTdHJpbmcoKSkpOworICAg
ICAgICAKKyAgICAgICAgYnl0ZWNvZGVJbmRleCArPSBvcGNvZGVMZW5ndGgoCisgICAgICAgICAg
ICBtX2dsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKAorICAgICAgICAgICAgICAg
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNvZGUpKTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEYXRhYmFzZTo6bm90aWZ5
RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgLy8gV2Ugb25seSBkbyB0
aGluZ3MgZm9yIGJhc2VsaW5lIGNvZGUgYmxvY2tzLgorICAgIGlmIChjb2RlQmxvY2stPmJhc2Vs
aW5lVmVyc2lvbigpICE9IGNvZGVCbG9jaykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1f
Ynl0ZWNvZGVzTWFwLnJlbW92ZShjb2RlQmxvY2spOworfQorCitDb21waWxhdGlvbiogRGF0YWJh
c2U6Om5ld0NvbXBpbGF0aW9uKEJ5dGVjb2RlcyogYnl0ZWNvZGVzLCBDb21waWxhdGlvbktpbmQg
a2luZCkKK3sKKyAgICBtX2NvbXBpbGF0aW9ucy5hcHBlbmQoQ29tcGlsYXRpb24oYnl0ZWNvZGVz
LCBraW5kKSk7CisgICAgcmV0dXJuICZtX2NvbXBpbGF0aW9ucy5sYXN0KCk7Cit9CisKK0NvbXBp
bGF0aW9uKiBEYXRhYmFzZTo6bmV3Q29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
bXBpbGF0aW9uS2luZCBraW5kKQoreworICAgIHJldHVybiBuZXdDb21waWxhdGlvbihlbnN1cmVC
eXRlY29kZXNGb3IoY29kZUJsb2NrKSwga2luZCk7Cit9CisKK0pTVmFsdWUgRGF0YWJhc2U6OnRv
SlMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICBKU0FycmF5KiBieXRlY29kZXMgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2J5dGVj
b2Rlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYnl0ZWNvZGVzLT5wdXREaXJlY3RJbmRleChleGVj
LCBpLCBtX2J5dGVjb2Rlc1tpXS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZXMsIGJ5dGVj
b2Rlcyk7CisgICAgCisgICAgSlNBcnJheSogY29tcGlsYXRpb25zID0gY29uc3RydWN0RW1wdHlB
cnJheShleGVjKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb21waWxhdGlvbnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIGNvbXBpbGF0aW9ucy0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aSwgbV9jb21waWxhdGlvbnNbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsYXRpb25zLCBj
b21waWxhdGlvbnMpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UERhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1BCUERhdGFiYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQRGF0YWJhc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUERhdGFi
YXNlX2gKKyNkZWZpbmUgUEJQRGF0YWJhc2VfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIlBCUEJ5dGVjb2Rlcy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgUEJQIHsKKworY2xhc3MgRGF0YWJhc2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OyBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhYmFzZSk7CitwdWJsaWM6CisgICAgRGF0YWJhc2Uo
SlNHbG9iYWxEYXRhJik7CisgICAgCisgICAgQnl0ZWNvZGVzKiBlbnN1cmVCeXRlY29kZXNGb3Io
Q29kZUJsb2NrKik7CisgICAgdm9pZCBub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqKTsKKyAg
ICAKKyAgICBDb21waWxhdGlvbiogbmV3Q29tcGlsYXRpb24oQ29kZUJsb2NrKiwgQ29tcGlsYXRp
b25LaW5kKTsKKyAgICBDb21waWxhdGlvbiogbmV3Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiwgQ29t
cGlsYXRpb25LaW5kKTsKKyAgICAKKyAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YWJhc2UgdG8gYSBK
YXZhU2NyaXB0IG9iamVjdCB0aGF0IGlzIHN1aXRhYmxlIGZvciBKU09OIHN0cmluZ2lmaWNhdGlv
bi4KKyAgICAvLyBOb3RlIHRoYXQgaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byB1c2UgYW4g
RXhlY1N0YXRlKiBhc3NvY2lhdGVkIHdpdGggYSBnbG9iYWwKKyAgICAvLyBvYmplY3QgdGhhdCBp
cyAiY2xlYW4iIC0gaS5lLiBhcnJheSBhbmQgb2JqZWN0IHByb3RvdHlwZXMgaGF2ZW4ndCBoYWQg
c3RyYW5nZSB0aGluZ3MKKyAgICAvLyBkb25lIHRvIHRoZW0uIEFuZCB5ZXMsIGl0IHNob3VsZCBi
ZSBhcHByb3ByaWF0ZSB0byBqdXN0IHVzZSBhIGdsb2JhbEV4ZWMgaGVyZS4KKyAgICBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBhZGRC
eXRlY29kZXMoQ29kZUJsb2NrSGFzaCk7CisgICAgCisgICAgSlNHbG9iYWxEYXRhJiBtX2dsb2Jh
bERhdGE7CisgICAgU2VnbWVudGVkVmVjdG9yPEJ5dGVjb2Rlcz4gbV9ieXRlY29kZXM7CisgICAg
SGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29kZXMqPiBtX2J5dGVjb2Rlc01hcDsKKyAgICBTZWdt
ZW50ZWRWZWN0b3I8Q29tcGlsYXRpb24+IG1fY29tcGlsYXRpb25zOworfTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYgLy8gUEJQRGF0YWJhc2VfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVy
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRXhl
Y3V0aW9uQ291bnRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQRXhlY3V0aW9u
Q291bnRlcl9oCisjZGVmaW5lIFBCUEV4ZWN1dGlvbkNvdW50ZXJfaAorCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBFeGVjdXRpb25Db3VudGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXhlY3V0aW9u
Q291bnRlcik7CitwdWJsaWM6CisgICAgRXhlY3V0aW9uQ291bnRlcigpIDogbV9jb3VudGVyKDAp
IHsgfQorICAgIAorICAgIHVpbnQ2NF90KiBhZGRyZXNzKCkgeyByZXR1cm4gJm1fY291bnRlcjsg
fQorICAgIAorICAgIHVpbnQ2NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9
CisKK3ByaXZhdGU6CisgICAgdWludDY0X3QgbV9jb3VudGVyOworfTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OlBCUAorCisjZW5kaWYgLy8gUEJQRXhlY3V0aW9uQ291bnRlcl9oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUE9yaWdp
bi5oIgorCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgUEJQIHsKKworT3JpZ2luOjpPcmlnaW4oRGF0YWJhc2UmIGRhdGFiYXNlLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICA6IG1fYnl0ZWNvZGVz
KGRhdGFiYXNlLmVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2spKQorICAgICwgbV9ieXRlY29k
ZUluZGV4KGJ5dGVjb2RlSW5kZXgpCit7Cit9CisKK3ZvaWQgT3JpZ2luOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCptX2J5dGVjb2RlcywgIjpiYyMiLCBt
X2J5dGVjb2RlSW5kZXgpOworfQorCitKU1ZhbHVlIE9yaWdpbjo6dG9KUyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0Cit7CisgICAgSlNWYWx1ZSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
KTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5ieXRlY29kZXNJRCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAg
ICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5ieXRlY29kZUluZGV4LCBqc051bWJlcihtX2J5dGVjb2RlSW5kZXgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgUEJQT3JpZ2luX2gKKyNkZWZpbmUgUEJQT3JpZ2luX2gKKworI2luY2x1
ZGUgIkNvZGVCbG9ja0hhc2guaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBCeXRlY29kZXM7CitjbGFzcyBEYXRhYmFzZTsK
KworY2xhc3MgT3JpZ2luIHsKK3B1YmxpYzoKKyAgICBPcmlnaW4oKQorICAgICAgICA6IG1fYnl0
ZWNvZGVJbmRleChVSU5UX01BWCkKKyAgICB7CisgICAgfQorICAgIAorICAgIE9yaWdpbihXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9ieXRlY29kZUluZGV4KFVJ
TlRfTUFYIC0gMSkKKyAgICB7CisgICAgfQorICAgIAorICAgIE9yaWdpbihCeXRlY29kZXMqIGJ5
dGVjb2RlcywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgOiBtX2J5dGVjb2Rlcyhi
eXRlY29kZXMpCisgICAgICAgICwgbV9ieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAg
eworICAgICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4IDwgVUlOVF9NQVggLSAxKTsKKyAgICB9
CisgICAgCisgICAgT3JpZ2luKERhdGFiYXNlJiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCk7CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2J5
dGVjb2RlSW5kZXggPT0gVUlOVF9NQVg7IH0KKyAgICAKKyAgICBCeXRlY29kZXMqIGJ5dGVjb2Rl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVzOyB9CisgICAgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsgfQorICAgIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcmlnaW4mKSBjb25zdDsKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OworICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBCeXRlY29kZXMqIG1fYnl0ZWNvZGVz
OworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKK307CisKK2lubGluZSBib29sIE9yaWdp
bjo6b3BlcmF0b3I9PShjb25zdCBPcmlnaW4mIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBt
X2J5dGVjb2RlcyA9PSBvdGhlci5tX2J5dGVjb2RlcworICAgICAgICAmJiBtX2J5dGVjb2RlSW5k
ZXggPT0gb3RoZXIubV9ieXRlY29kZUluZGV4OworfQorCitpbmxpbmUgdW5zaWduZWQgT3JpZ2lu
OjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEJ5dGVjb2Rlcyo+Ojpo
YXNoKG1fYnl0ZWNvZGVzKSArIG1fYnl0ZWNvZGVJbmRleDsKK30KKworaW5saW5lIGJvb2wgT3Jp
Z2luOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnl0
ZWNvZGVJbmRleCA9PSBVSU5UX01BWCAtIDE7Cit9CisKK3N0cnVjdCBPcmlnaW5IYXNoIHsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBPcmlnaW4mIGtleSkgeyByZXR1cm4ga2V5Lmhh
c2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE9yaWdpbiYgYSwgY29uc3QgT3Jp
Z2luJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0M6
OlBCUAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERl
ZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQQlA6Ok9yaWdp
bj4geworICAgIHR5cGVkZWYgSlNDOjpQQlA6T3JpZ2luSGFzaCBIYXNoOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNo
VHJhaXRzPEpTQzo6UEJQOk9yaWdpbj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpQQlA6
Ok9yaWdpbj4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFBCUE9yaWdp
bl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9y
aWdpblN0YWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBPcmlnaW5TdGFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQQlBPcmlnaW5TdGFjay5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFBCUCB7CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpCit7CisgICAgbV9zdGFjay5hcHBlbmQoT3JpZ2luKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKSkKK30KKworT3JpZ2luU3RhY2s6Ok9yaWdpblN0YWNrKGNvbnN0
IE9yaWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RhY2suYXBwZW5kKG9yaWdpbikKK30KKworT3Jp
Z2luU3RhY2s6Ok9yaWdpblN0YWNrKERhdGFiYXNlJiBkYXRhYmFzZSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCit7CisgICAgVmVjdG9yPENvZGVP
cmlnaW4+IHN0YWNrID0gY29kZU9yaWdpbi5pbmxpbmVTdGFjaygpOworICAgIAorICAgIGFwcGVu
ZChPcmlnaW4oZGF0YWJhc2UsIGNvZGVCbG9jaywgc3RhY2tbMF0uYnl0ZWNvZGVJbmRleCkpOwor
ICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzdGFjay5zaXplKCk7ICsraSkgewor
ICAgICAgICBhcHBlbmQoT3JpZ2luKAorICAgICAgICAgICAgZGF0YWJhc2UuZW5zdXJlQnl0ZWNv
ZGVzRm9yKHN0YWNrW2ldLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2soKSksCisg
ICAgICAgICAgICBzdGFja1tpXS5ieXRlY29kZUluZGV4KSk7CisgICAgfQorfQorCitPcmlnaW5T
dGFjazo6fk9yaWdpblN0YWNrKCkgeyB9CisKK3ZvaWQgT3JpZ2luU3RhY2s6OmFwcGVuZChjb25z
dCBPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChvcmlnaW4pCit9CisKK2Jv
b2wgT3JpZ2luU3RhY2s6Om9wZXJhdG9yPT0oY29uc3QgT3JpZ2luU3RhY2smIG90aGVyKSBjb25z
dAoreworICAgIGlmIChtX3N0YWNrLnNpemUoKSAhPSBvdGhlci5tX3N0YWNrLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc3RhY2su
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX3N0YWNrW2ldICE9IG90aGVyLm1fc3RhY2tb
aV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0
cnVlOworfQorCit1bnNpZ25lZCBPcmlnaW5TdGFjazo6aGFzaCgpIGNvbnN0Cit7CisgICAgdW5z
aWduZWQgcmVzdWx0ID0gbV9zdGFjay5zaXplKCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9zdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgcmVzdWx0ICo9IDM7CisgICAgICAg
IHJlc3VsdCArPSBtX3N0YWNrW2ldLmhhc2goKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBPcmlnaW5TdGFjazo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0YWNrLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgb3V0LnByaW50KCIgLS0+ICIpOworICAgICAg
ICBvdXQucHJpbnQobV9zdGFja1tpXSk7CisgICAgfQorfQorCitKU1ZhbHVlIE9yaWdpblN0YWNr
Ojp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU0FycmF5KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3N0YWNrLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIGksIG1fc3RhY2tbaV0udG9KUyhleGVjKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFjay5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUEJQT3JpZ2luU3RhY2tfaAorI2RlZmluZSBQQlBPcmlnaW5T
dGFja19oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb2RlQmxv
Y2s7CitzdHJ1Y3QgQ29kZU9yaWdpbjsKKworbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIERhdGFi
YXNlOworCitjbGFzcyBPcmlnaW5TdGFjayB7CitwdWJsaWM6CisgICAgT3JpZ2luU3RhY2soKSB7
IH0KKyAgICAKKyAgICBPcmlnaW5TdGFjayhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
OworICAgIAorICAgIGV4cGxpY2l0IE9yaWdpblN0YWNrKGNvbnN0IE9yaWdpbiYgb3JpZ2luKTsK
KyAgICAKKyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhEYXRhYmFzZSYsIENvZGVCbG9jayosIGNv
bnN0IENvZGVPcmlnaW4mKTsKKyAgICAKKyAgICB+T3JpZ2luU3RhY2soKTsKKyAgICAKKyAgICB2
b2lkIGFwcGVuZChjb25zdCBPcmlnaW4mIG9yaWdpbik7CisgICAgCisgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLmlzRW1wdHkoKTsgfQorICAgIAorICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLnNpemUoKTsgfQorICAgIGNvbnN0IE9y
aWdpbiYgZnJvbUJvdHRvbSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3N0YWNrW2ldOyB9
CisgICAgY29uc3QgT3JpZ2luJiBmcm9tVG9wKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhY2tbbV9zdGFjay5zaXplKCkgLSBpIC0gMV07IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgT3JpZ2luU3RhY2smKSBjb25zdDsKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7
CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OworICAgIAor
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgVmVjdG9yPE9yaWdpbiwgMT4gbV9z
dGFjazsKK307CisKK2lubGluZSBib29sIE9yaWdpblN0YWNrOjppc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhY2suc2l6ZSgpID09IDEgJiYgbV9zdGFj
a1swXS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6UEJQCisKKyNlbmRpZiAvLyBQQlBPcmlnaW5TdGFja19oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24g
MTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTkgKzMxLDMwIEBACiAgICAgbWFjcm8oYXJndW1l
bnRzKSBcCiAgICAgbWFjcm8oQXJyYXkpIFwKICAgICBtYWNybyhiaW5kKSBcCisgICAgbWFjcm8o
Ynl0ZWNvZGUpIFwKKyAgICBtYWNybyhieXRlY29kZUluZGV4KSBcCisgICAgbWFjcm8oYnl0ZWNv
ZGVzKSBcCisgICAgbWFjcm8oYnl0ZWNvZGVzSUQpIFwKICAgICBtYWNybyhjYWxsKSBcCiAgICAg
bWFjcm8oY2FsbGVlKSBcCiAgICAgbWFjcm8oY2FsbGVyKSBcCisgICAgbWFjcm8oY29tcGlsYXRp
b25LaW5kKSBcCisgICAgbWFjcm8oY29tcGlsYXRpb25zKSBcCiAgICAgbWFjcm8oY29tcGlsZSkg
XAogICAgIG1hY3JvKGNvbmZpZ3VyYWJsZSkgXAogICAgIG1hY3JvKGNvbnN0cnVjdG9yKSBcCisg
ICAgbWFjcm8oY291bnRlcnMpIFwKKyAgICBtYWNybyhkZXNjcmlwdGlvbikgXAorICAgIG1hY3Jv
KGRlc2NyaXB0aW9ucykgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhldmFs
KSBcCiAgICAgbWFjcm8oZXhlYykgXAorICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAg
bWFjcm8oZnJvbUNoYXJDb2RlKSBcCiAgICAgbWFjcm8oZ2xvYmFsKSBcCiAgICAgbWFjcm8oZ2V0
KSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNybyhoYXNoKSBcCiAgICAg
bWFjcm8oaWdub3JlQ2FzZSkgXAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8oaW5wdXQp
IFwKQEAgLTU2LDYgKzY3LDcgQEAKICAgICBtYWNybyhuYW1lKSBcCiAgICAgbWFjcm8obm93KSBc
CiAgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8ob3JpZ2luKSBcCiAgICAgbWFjcm8ocGFy
c2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3Rv
dHlwZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDkgQEAg
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGhlYXAubm90aWZ5
SXNTYWZlVG9Db2xsZWN0KCk7CiAgICAgCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRp
b25zKCp0aGlzKTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6ZW5hYmxlUEJQKCkpCisgICAgICAg
IG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IGFkb3B0UHRyKG5ldyBQQlA6OkRhdGFiYXNlKCp0aGlz
KSk7CiB9CiAKIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTM2Mjc2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1Miw2ICszNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91Ymxl
IGNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKIAogICAgICAgICBQcm9maWxlciogbV9lbmFibGVkUHJv
ZmlsZXI7CisgICAgICAgIE93blB0cjxQQlA6OkRhdGFiYXNlPiBtX3BlckJ5dGVjb2RlUHJvZmls
ZXI7CiAgICAgICAgIFJlZ0V4cENhY2hlKiBtX3JlZ0V4cENhY2hlOwogICAgICAgICBCdW1wUG9p
bnRlckFsbG9jYXRvciBtX3JlZ0V4cEFsbG9jYXRvcjsKIApJbmRleDogU291cmNlL1dURi93dGYv
U3RyaW5nUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0cmlu
Z1ByaW50U3RyZWFtLmNwcAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL1dURi93dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxMiBAQCBDU3Ry
aW5nIFN0cmluZ1ByaW50U3RyZWFtOjp0b0NTdHJpbmcoKQogICAgIHJldHVybiBDU3RyaW5nKG1f
YnVmZmVyLCBtX25leHQpOwogfQogCit2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjpyZXNldCgpCit7
CisgICAgbV9uZXh0ID0gMDsKKyAgICBtX2J1ZmZlclswXSA9IDA7Cit9CisKIHZvaWQgU3RyaW5n
UHJpbnRTdHJlYW06OmluY3JlYXNlU2l6ZShzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQo
bmV3U2l6ZSA+IG1fc2l6ZSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVh
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmgJKHJl
dmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB2
cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYo
MiwgMCk7CiAgICAgCiAgICAgQ1N0cmluZyB0b0NTdHJpbmcoKTsKKyAgICB2b2lkIHJlc2V0KCk7
CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVhc2VTaXplKHNpemVfdCk7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw2ICs0NDAsNyBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29u
c3QgTENoYXIqKTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqIHMsIHNp
emVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihzKSwgbGVuZ3RoKTsgfTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNo
YXIqIHMpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihz
KSk7IH07CisgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBDU3RyaW5nJiBzKSB7IHJl
dHVybiBmcm9tVVRGOChzLmRhdGEoKSk7IH0KIAogICAgIC8vIFRyaWVzIHRvIGNvbnZlcnQgdGhl
IHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwgYmFjayB0byBMYXRpbi0x
IGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04LgogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IExDaGFy
Kiwgc2l6ZV90KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>177127</attachid>
            <date>2012-12-01 21:28:53 -0800</date>
            <delta_ts>2012-12-01 21:28:53 -0800</delta_ts>
            <desc>sample profiling session</desc>
            <filename>sample-session.txt</filename>
            <type>text/plain</type>
            <size>90411</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">W3BpemxvQHdhcnRvb3RoIE9wZW5Tb3VyY2VdIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wYnAtb3V0
cHV0IGNyeXB0by1wcm9maWxlLmpzb24gCkNvZGVCbG9jayAgICAgIEJhc2VsaW5lL0RGRyBDb3Vu
dHMgCiAgICNCRzhsQkEgICAgICAgICA0OTQwLzU5NDk1MzcgICAgCiAgICNCNVFGYlUgICAgICAg
ICAyMzI2LzMxNDk0OCAgICAgCiAgICNCVTBjZ0QgICAgICAgICAzMTUyLzE4Njc4MyAgICAgCiAg
ICNBRzdiRHogICAgICAgICAgNjg1LzE4OTIwNyAgICAgCiAgICNFa0lMenIgICAgICAgICAgMjc4
Mi8yODE4OSAgICAgCiAgICNBcnoyOVogICAgICAgICAgNzMzMS8xODE4MiAgICAgCiAgICNDRzFv
ZlogICAgICAgICAgMjQxLzI0NDM3ICAgICAgCiAgICNCZlZHamsgICAgICAgICAgIDg1LzIwMDM0
ICAgICAgCiAgICNCd041Y3kgICAgICAgICAgMjM4LzExMzc5ICAgICAgCiAgICNBUE1DWFMgICAg
ICAgICAgIDY2Lzk4NTcgICAgICAgCiAgICNDREZlUW0gICAgICAgICAgIDY3LzgxNTkgICAgICAg
CiAgICNEUzNscjcgICAgICAgICAgIDY3MC8yMzk1ICAgICAgCiAgICNCVHlOOU0gICAgICAgICAg
IDQ1MS8yMjI0ICAgICAgCiAgICNBbjhDRmsgICAgICAgICAgIDI0NTMvMTM4ICAgICAgCiAgICNC
ZzBIMksgICAgICAgICAgIDY3LzE5NzQgICAgICAgCiAgICNBZUMzMEYgICAgICAgICAgICAxOTc4
LzAgICAgICAgCiAgICNCaG5zV04gICAgICAgICAgIDY3LzE1MzUgICAgICAgCiAgICNEbDZ2T3Ag
ICAgICAgICAgIDY1MS80OTYgICAgICAgCiAgICNDcXJ3SE8gICAgICAgICAgIDYyNS81MDIgICAg
ICAgCiAgICNFWXluNTEgICAgICAgICAgICA5OTIvMCAgICAgICAgCiAgICNDeGxSYTUgICAgICAg
ICAgIDU4MC8zNjUgICAgICAgCiAgICNDU1dIOEwgICAgICAgICAgICA4OTUvNDQgICAgICAgCiAg
ICNBbTdxYWggICAgICAgICAgICA3OTcvMTIgICAgICAgCiAgICNFYXd2OHkgICAgICAgICAgICA2
OTkvOTYgICAgICAgCiAgICNCOTRSNk8gICAgICAgICAgICA2NDgvMCAgICAgICAgCiAgICNEVkt1
RHQgICAgICAgICAgICA2Ny80MzggICAgICAgCiAgICNDMkJYZ0cgICAgICAgICAgICAyNTYvMCAg
ICAgICAgCiAgICNBYzFkSDUgICAgICAgICAgICAyMDEvMCAgICAgICAgCiAgICNCS2FaTEogICAg
ICAgICAgICAxNjIvNTYgICAgICAgCiAgICNBRUtqUDYgICAgICAgICAgICA2Ny82MyAgICAgICAg
CiAgICNDUkRwZGwgICAgICAgICAgICA2My80NCAgICAgICAgCiAgICNBaTlObmQgICAgICAgICAg
ICA2Ny8zOSAgICAgICAgCiAgICNEaVVhN2EgICAgICAgICAgICA2Ny8zMSAgICAgICAgCiAgICNB
UFFzYzkgICAgICAgICAgICAgOTYvMCAgICAgICAgCiAgICNCVEdjMXUgICAgICAgICAgICAgNzkv
MCAgICAgICAgCiAgICNCUGhISzggICAgICAgICAgICAxMi8xMyAgICAgICAgCiAgICNDZFYwYWsg
ICAgICAgICAgICAgMjAvMSAgICAgICAgCiAgICNCRjVtS0ogICAgICAgICAgICAgNC8xMyAgICAg
ICAgCiAgICNFT05ndmEgICAgICAgICAgICAgMTcvMCAgICAgICAgCiAgICNEME96Y2cgICAgICAg
ICAgICAgMTcvMCAgICAgICAgCiAgICNDVjVvZWcgICAgICAgICAgICAgMTcvMCAgICAgICAgCiAg
ICNCTmpsNm8gICAgICAgICAgICAgMTcvMCAgICAgICAgCiAgICNDTVVFQUwgICAgICAgICAgICAg
MC8xMyAgICAgICAgCiAgICNES1VjQXcgICAgICAgICAgICAgMTEvMCAgICAgICAgCiAgICNFY1RK
RlMgICAgICAgICAgICAgOS8wICAgICAgICAgCiAgICNDbGlCdGEgICAgICAgICAgICAgOS8wICAg
ICAgICAgCiAgICNDVzM3YzYgICAgICAgICAgICAgOS8wICAgICAgICAgCiAgICNCaU9URHggICAg
ICAgICAgICAgOS8wICAgICAgICAgCiAgICNFTEJlcUcgICAgICAgICAgICAgNi8wICAgICAgICAg
CiAgICNEZTVuek0gICAgICAgICAgICAgMS8wICAgICAgICAgCiAgICNFZXd6UVUgICAgICAgICAg
ICAgMS8wICAgICAgICAgCiAgICNEU0ZBYk0gICAgICAgICAgICAgMS8wICAgICAgICAgCiAgICNC
SFRNVjkgICAgICAgICAgICAgMS8wICAgICAgICAgCiAgICNFSnV4bWggICAgICAgICAgICAgMS8w
ICAgICAgICAgCiAgICNEaGQ1eVYgICAgICAgICAgICAgMS8wICAgICAgICAgCiAgICNDS0h5clgg
ICAgICAgICAgICAgMS8wICAgICAgICAgCiAgICNFUUtRTm8gICAgICAgICAgICAgMC8xICAgICAg
ICAgCiAgICNDZVVzb1ogICAgICAgICAgICAgMS8wICAgICAgICAgCiAgICNEQ284d3EgICAgICAg
ICAgICAgMC8wICAgICAgICAgCiAgICNDODROVlcgICAgICAgICAgICAgMC8wICAgICAgICAgCiAg
ICNDNWlkV0sgICAgICAgICAgICAgMC8wICAgICAgICAgCiAgICNDQzlsNFYgICAgICAgICAgICAg
MC8wICAgICAgICAgCiAgICNBbnN5S00gICAgICAgICAgICAgMC8wICAgICAgICAgCj4gaGVscApz
dW1tYXJ5ICAgICBQcmludCBhIHN1bW1hcnkgb2YgY29kZSBibG9jayBleGVjdXRpb24gcmF0ZXMu
CmRpc3BsYXkgICAgIERpc3BsYXkgZGV0YWlscyBmb3IgYSBjb2RlIGJsb2NrLgpoZWxwICAgICAg
ICBQcmludCB0aGlzIG1lc3NhZ2UuCnF1aXQgICAgICAgIFF1aXQuCj4gZGlzcGxheSBCRzhsQkEK
QmFzZWxpbmUvREZHIENvdW50cyAgRGlzYXNzZW1ibHkgZm9yIEJHOGxCQSBpbiBERkcKICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVkIERGRyBKSVQgY29kZSBmb3IgI0JHOGxCQTpbMHg3Zjk2
OWIxMzM2MDAtPjB4MTA2YTZhYWUwLCBERkdGdW5jdGlvbkNhbGxdLCBpbnN0cnVjdGlvbiBjb3Vu
dCA9IDE2MjoKICAgICAgICAgICAgICAgICAgICAgICAgIENvZGUgYXQgWzB4NGFjZjMwYzFiNWEw
LCAweDRhY2YzMGMxYzAxOCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYjVhMDogcG9wICVyY3gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzFiNWExOiBtb3YgJXJjeCwgLTB4MTAoJXIxMykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzFiNWE1OiBtb3YgJDB4N2Y5NjliMTMzNjAwLCAlcjExCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjVhZjogbW92ICVyMTEsIC0weDgoJXIxMykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNWIzOiBsZWEgMHg4OCgl
cjEzKSwgJXJkeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI1YmE6
IG1vdiAkMHg3Zjk2OWE1MDg1ZDAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzFiNWM0OiBjbXAgJXJkeCwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMxYjVjNzogamIgMHg0YWNmMzBjMWJjMzYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNWNkOiB0ZXN0ICVyMTUsIC0weDM4KCVyMTMpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjVkMTogam56IDB4NGFjZjMw
YzFiYzlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjVkNzogY21w
ICVyMTQsIC0weDQwKCVyMTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYjVkYjogamIgMHg0YWNmMzBjMWJjYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzFiNWUxOiBjbXAgJXIxNCwgLTB4NDgoJXIxMykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzFiNWU1OiBqYiAweDRhY2YzMGMxYmNkZgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI1ZWI6IHRlc3QgJXIxNSwgLTB4NTAoJXIx
MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNWVmOiBqbnogMHg0
YWNmMzBjMWJkMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNWY1
OiBjbXAgJXIxNCwgLTB4NTgoJXIxMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiNWY5OiBqYiAweDRhY2YzMGMxYmQyMQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg0YWNmMzBjMWI1ZmY6IGNtcCAlcjE0LCAtMHg2MCglcjEzKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI2MDM6IGpiIDB4NGFjZjMwYzFiZDQyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjYwOTogY21wICVyMTQsIC0weDY4
KCVyMTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjYwZDogamIg
MHg0YWNmMzBjMWJkNjMKICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrICMwIChiYyMwKTog
IChPU1IgdGFyZ2V0KQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkZWNlc3NvcnM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERvbWluYXRlZCBieTogIzAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRG9taW5hdGVzOiAjMCAjMSAjMwogICAgICAgICAgICAgICAgICAgICAgICAg
ICBQaGkgTm9kZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjYx
MzogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjMWI2MTc6IGp6IDB4NGFjZjMwYzFiNjFlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYjYxZDogaW50MyAKICAgICAxNTUvNTMxMDI1ICAgICAgICAgICAgIDA6ICAg
ICAgICAgICA8IDE6LT4JU2V0QXJndW1lbnQoYXJnMChhKSwgYmMjMCkgIHByZWRpY3RpbmcgRmlu
YWwKICAgICAxNTUvNTMxMDI1ICAgICAgICAgICAyMTA6ICAgICAgICAgICA8IDQ6Nz4JR2V0TG9j
YWwoQDAsIEpTfFB1cmVJbnQsIGFyZzAoYSksIGJjIzApICBwcmVkaWN0aW5nIEZpbmFsCiAgICAg
MTU1LzUzMTAyNSAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjYxZTogbW92IC0weDM4KCVyMTMp
LCAlcmF4CiAgICAgMTU1LzUzMTAyNSAgICAgICAgICAgMjExOiAgICAgICAgICAgPCEwOi0+CUNo
ZWNrU3RydWN0dXJlKEAyMTA8RmluYWw+LCBNdXN0R2VufENhbkV4aXQsIHN0cnVjdCgweDEwNmE2
NDE0MDogTm9uQXJyYXkpLCBiYyMwKQogICAgIDE1NS81MzEwMjUgICAgICAgICAgICAgICAgMHg0
YWNmMzBjMWI2MjI6IG1vdiAkMHgxMDZhNjQxNDAsICVyMTEKICAgICAxNTUvNTMxMDI1ICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiNjJjOiBjbXAgJXIxMSwgKCVyYXgpCiAgICAgMTU1LzUzMTAy
NSAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjYyZjogam56IDB4NGFjZjMwYzFiZDg0CiAgICAg
MTU1LzUzMTAyNSAgICAgICAgICAgICAxOiAgICAgICAgICAgPCAyOi0+CVNldEFyZ3VtZW50KGFy
ZzEoVTxJbnQzMj4pLCBiYyMwKSAgcHJlZGljdGluZyBJbnQKICAgICAxNTUvNTMxMDI1ICAgICAg
ICAgICAgIDI6ICAgICAgICAgICA8IDM6LT4JU2V0QXJndW1lbnQoYXJnMihLQzxJbnQzMj4pLCBi
YyMwKSAgcHJlZGljdGluZyBJbnQKICAgICAxNTUvNTMxMDI1ICAgICAgICAgICAgIDM6ICAgICAg
ICAgICA8IDM6LT4JU2V0QXJndW1lbnQoYXJnMyhKQzxGaW5hbD4pLCBiYyMwKSAgcHJlZGljdGlu
ZyBGaW5hbAogICAgIDE1NS81MzEwMjUgICAgICAgICAgIDIxMjogICAgICAgICAgIDwgMzo4PglH
ZXRMb2NhbChAMywgSlN8UHVyZUludCwgYXJnMyhKQzxGaW5hbD4pLCBiYyMwKSAgcHJlZGljdGlu
ZyBGaW5hbAogICAgIDE1NS81MzEwMjUgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI2MzU6IG1v
diAtMHg1MCglcjEzKSwgJXJkeAogICAgIDE1NS81MzEwMjUgICAgICAgICAgIDIxMzogICAgICAg
ICAgIDwhMDotPglDaGVja1N0cnVjdHVyZShAMjEyPEZpbmFsPiwgTXVzdEdlbnxDYW5FeGl0LCBz
dHJ1Y3QoMHgxMDZhNjQxNDA6IE5vbkFycmF5KSwgYmMjMCkKICAgICAxNTUvNTMxMDI1ICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiNjM5OiBtb3YgJDB4MTA2YTY0MTQwLCAlcjExCiAgICAgMTU1
LzUzMTAyNSAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjY0MzogY21wICVyMTEsICglcmR4KQog
ICAgIDE1NS81MzEwMjUgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI2NDY6IGpueiAweDRhY2Yz
MGMxYmRhNQogICAgIDE1NS81MzEwMjUgICAgICAgICAgICAgNDogICAgICAgICAgIDwgMjotPglT
ZXRBcmd1bWVudChhcmc0KE9CPEludDMyPiksIGJjIzApICBwcmVkaWN0aW5nIEludAogICAgIDE1
NS81MzEwMjUgICAgICAgICAgICAgNTogICAgICAgICAgIDwgMjotPglTZXRBcmd1bWVudChhcmc1
KFJCPEludDMyPiksIGJjIzApICBwcmVkaWN0aW5nIEludAogICAgIDE1NS81MzEwMjUgICAgICAg
ICAgICAgNjogICAgICAgICAgIDwgMjotPglTZXRBcmd1bWVudChhcmc2KEc8SW50MzI+KSwgYmMj
MCkgIHByZWRpY3RpbmcgSW50CiAgICAgMTU1LzUzMTAyNSAgICAgICAgICAgICA5OiAgc2tpcHBl
ZCAgPCAwOi0+CVNldExvY2FsKEA4LCA8ZW1wdHk+LCByMChIKSwgYmMjMCkKICAgICAxNTUvNTMx
MDI1ICAgICAgICAgICAgMTA6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDgsIDxlbXB0eT4s
IHIxKEkpLCBiYyMwKQogICAgIDE1NS81MzEwMjUgICAgICAgICAgICAxMTogIHNraXBwZWQgIDwg
MDotPglTZXRMb2NhbChAOCwgPGVtcHR5PiwgcjIoSiksIGJjIzApCiAgICAgMTU1LzUzMTAyNSAg
ICAgICAgICAgIDEyOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEA4LCA8ZW1wdHk+LCByMyhL
KSwgYmMjMCkKICAgICAxNTUvNTMxMDI1ICAgICAgICAgICAgMTM6ICBza2lwcGVkICA8IDA6LT4J
U2V0TG9jYWwoQDgsIDxlbXB0eT4sIHI0KEwpLCBiYyMwKQogICAgIDE1NS81MzEwMjUgICAgICAg
ICAgICAxNDogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChAOCwgPGVtcHR5PiwgcjUoTSksIGJj
IzApCiAgICAgMTU1LzUzMTAyNSAgICAgICAgICAgIDE1OiAgc2tpcHBlZCAgPCAwOi0+CVNldExv
Y2FsKEA4LCA8ZW1wdHk+LCByNihOKSwgYmMjMCkKICAgICAzMDUvNTMwODczICAgICAgICAgICAg
MjE6ICAgICAgICAgICA8IDI6Nz4JR2V0QnlPZmZzZXQoQDIxMDxGaW5hbD4sIEpTfFVzZUFzT3Ro
ZXIsIGlkMHthcnJheX0sIDIsIGJjIzQpICBwcmVkaWN0aW5nIEFycmF5CiAgICAgMzA1LzUzMDg3
MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjY3NjogbW92IDB4MTAoJXJheCksICVyYXgKICAg
ICAzMDUvNTMwODczICAgICAgICAgICAyMTQ6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDIx
PEFycmF5PiwgPGVtcHR5PiwgcjAoVDxBcnJheT4pLCBiYyM0KQogICAgIDMwNS81MzA4NzMgICAg
ICAgICAgIDIxNTogICAgICAgICAgIDwhMDotPglGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUoQDIxPEFy
cmF5PiwgTXVzdEdlbnxDYW5FeGl0LCBzdHJ1Y3QoMHgxMDZhNmUxNDA6IEFycmF5V2l0aEludDMy
KSwgYmMjNCkKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNjdhOiB0
ZXN0ICVyYXgsICVyMTUKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
NjdkOiBqbnogMHg0YWNmMzBjMWJkYzYKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiNjgzOiBtb3YgJDB4MTA2YTZlMTQwLCAlcjExCiAgICAgMzA1LzUzMDg3MyAgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYjY4ZDogY21wICVyMTEsICglcmF4KQogICAgIDMwNS81MzA4
NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI2OTA6IGpueiAweDRhY2YzMGMxYmRlNwogICAg
IDMwNS81MzA4NzMgICAgICAgICAgICAyMjogICAgICAgICAgIDwgMTotPglTZXRMb2NhbChAMjE8
QXJyYXk+LCByMChUPEFycmF5PiksIGJjIzQpICBwcmVkaWN0aW5nIEFycmF5CiAgICAgMzA1LzUz
MDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjY5NjogbW92ICVyYXgsIDB4MCglcjEzKQog
ICAgIDMwNS81MzA4NzMgICAgICAgICAgICAyNjogICAgICAgICAgIDwgMjo4PglHZXRCeU9mZnNl
dChAMjEyPEZpbmFsPiwgSlN8VXNlQXNPdGhlciwgaWQwe2FycmF5fSwgMiwgYmMjMTMpICBwcmVk
aWN0aW5nIEFycmF5CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjZh
ODogbW92IDB4MTAoJXJkeCksICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAyMTY6ICBz
a2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDI2PEFycmF5PiwgPGVtcHR5PiwgcjEoTkI8QXJyYXk+
KSwgYmMjMTMpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMjE3OiAgICAgICAgICAgPCEwOi0+
CUZvcndhcmRDaGVja1N0cnVjdHVyZShAMjY8QXJyYXk+LCBNdXN0R2VufENhbkV4aXQsIHN0cnVj
dCgweDEwNmE2ZTE0MDogQXJyYXlXaXRoSW50MzIpLCBiYyMxMykKICAgICAzMDUvNTMwODczICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzFiNmFjOiB0ZXN0ICVyZHgsICVyMTUKICAgICAzMDUvNTMw
ODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNmFmOiBqbnogMHg0YWNmMzBjMWJlMDgKICAg
ICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNmI1OiBtb3YgJDB4MTA2YTZl
MTQwLCAlcjExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjZiZjog
Y21wICVyMTEsICglcmR4KQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWI2YzI6IGpueiAweDRhY2YzMGMxYmUyOQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAyNzog
ICAgICAgICAgIDwgMTotPglTZXRMb2NhbChAMjY8QXJyYXk+LCByMShOQjxBcnJheT4pLCBiYyMx
MykgIHByZWRpY3RpbmcgQXJyYXkKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzFiNmM4OiBtb3YgJXJkeCwgMHg4KCVyMTMpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAg
IDI5OiAgICAgICAgICAgPCAyOjg+CUdldExvY2FsKEAyLCBKU3xQdXJlSW50fFVzZUFzSW50LCBh
cmcyKEtDPEludDMyPiksIGJjIzIyKSAgcHJlZGljdGluZyBJbnQKICAgICAzMDUvNTMwODczICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzFiNmRhOiBtb3YgLTB4NDgoJXIxMyksICVlYXgKICAgICAz
MDUvNTMwODczICAgICAgICAgICAgMzA6ICBza2lwcGVkICA8IDA6LT4JVmFsdWVUb0ludDMyKEAy
OTxJbnQzMj4sIEludDMyfFB1cmVJbnR8VXNlQXNJbnR8Q2FuRXhpdCwgYmMjMjIpCiAgICAgMzA1
LzUzMDg3MyAgICAgICAgICAgIDMxOiAgICAgICAgICAgPCAxOjc+CUpTQ29uc3RhbnQoSlN8UHVy
ZUludHxVc2VBc0ludCwgJDAgPSBJbnQzMjogMTYzODMsIGJjIzIyKQogICAgIDMwNS81MzA4NzMg
ICAgICAgICAgICAzMjogICAgICAgICAgIDwgMTo3PglCaXRBbmQoQDI5PEludDMyPiwgQDMxPElu
dDMyPiwgSW50MzJ8VXNlQXNJbnQsIGJjIzIyKQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWI2ZGU6IG1vdiAkMHg0NTYsICVlZHgKICAgICAzMDUvNTMwODczICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiNmUzOiB4b3IgJDB4M2JhOSwgJWVkeAogICAgIDMwNS81MzA4
NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI2ZTk6IGFuZCAlZWF4LCAlZWR4CiAgICAgMzA1
LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjZlYjogbW92ICQweGZmZmZmZmZmLCAl
cjExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjZmNTogY21wICVy
MTEsICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNmY4OiBq
YmUgMHg0YWNmMzBjMWI2ZmYKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzFiNmZlOiBpbnQzIAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAzMzogICAgICAgICAgIDwg
MTotPglTZXRMb2NhbChAMzI8SW50MzI+LCByMihHQjxJbnQzMj4pLCBiYyMyMikgIHByZWRpY3Rp
bmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjZmZjogbW92
ICVlZHgsIDB4MTAoJXIxMykKICAgICAzMDUvNTMwODczICAgICAgICAgICAgMzU6ICBza2lwcGVk
ICA8IDA6LT4JVmFsdWVUb0ludDMyKEAyOTxJbnQzMj4sIEludDMyfFB1cmVJbnR8VXNlQXNJbnR8
Q2FuRXhpdCwgYmMjMjcpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDM2OiAgICAgICAgICAg
PCAxOjc+CUpTQ29uc3RhbnQoSlN8UHVyZUludHxVc2VBc0ludCwgJDEgPSBJbnQzMjogMTQsIGJj
IzI3KQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAzNzogICAgICAgICAgIDwgMTo3PglCaXRS
U2hpZnQoQDI5PEludDMyPiwgQDM2PEludDMyPiwgSW50MzJ8VXNlQXNJbnQsIGJjIzI3KQogICAg
IDMwNS81MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI3MTE6IHNhciAkMHhlLCAlZWF4
CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjcxNDogbW92ICQweGZm
ZmZmZmZmLCAlcjExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjcx
ZTogY21wICVyMTEsICVyYXgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzFiNzIxOiBqYmUgMHg0YWNmMzBjMWI3MjgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzFiNzI3OiBpbnQzIAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAzODogICAg
ICAgICAgIDwgMTotPglTZXRMb2NhbChAMzc8SW50MzI+LCByMyhFQjxJbnQzMj4pLCBiYyMyNykg
IHByZWRpY3RpbmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMx
YjcyODogbW92ICVlYXgsIDB4MTgoJXIxMykKICAgICAzMDUvNTMwODczICAgICAgICAgICAgNDA6
ICAgICAgICAgICA8IDE6Nz4JR2V0TG9jYWwoQDYsIEpTfFB1cmVOdW0sIGFyZzYoRzxJbnQzMj4p
LCBiYyMzMSkgIHByZWRpY3RpbmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAw
eDRhY2YzMGMxYjczYTogbW92IC0weDY4KCVyMTMpLCAlZWF4CiAgICAgMzA1LzUzMDg3MyAgICAg
ICAgICAgIDQxOiAgICAgICAgICAgPCAxOjg+CUpTQ29uc3RhbnQoSlN8UHVyZU51bSwgJDYgPSBJ
bnQzMjogMSwgYmMjMzEpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDQyOiAgICAgICAgICAg
PCEyOjg+CUFyaXRoU3ViKEA0MDxJbnQzMj4sIEA0MTxJbnQzMj4sIE51bWJlcnxNdXN0R2VufFVz
ZUFzT3RoZXJ8Q2FuRXhpdCwgYmMjMzEpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAw
eDRhY2YzMGMxYjczZTogbW92ICQweGZjLCAlZWN4CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYjc0MzogeG9yICQweGZkLCAlZWN4CiAgICAgMzA1LzUzMDg3MyAgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYjc0OTogbW92ICVyYXgsICVyZHgKICAgICAzMDUvNTMwODcz
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNzRjOiBzdWIgJWVjeCwgJWVkeAogICAgIDMwNS81
MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI3NGU6IGpvIDB4NGFjZjMwYzFiZTRhCiAg
ICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjc1NDogbW92ICQweGZmZmZm
ZmZmLCAlcjExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjc1ZTog
Y21wICVyMTEsICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
NzYxOiBqYmUgMHg0YWNmMzBjMWI3NjgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiNzY3OiBpbnQzIAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICA0MzogICAgICAg
ICAgIDwhMDotPglGbHVzaChANiwgTXVzdEdlbiwgYXJnNihHPEludDMyPiksIGJjIzMxKSAgcHJl
ZGljdGluZyBJbnQKICAgICAzMDUvNTMwODczICAgICAgICAgICAgNDQ6ICAgICAgICAgICA8IDI6
LT4JU2V0TG9jYWwoQDQyPEludDMyPiwgYXJnNihFQzxJbnQzMj4pLCBiYyMzMSkgIHByZWRpY3Rp
bmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjc2ODogbW92
ICVlZHgsIC0weDY4KCVyMTMpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDQ2OiAgICAgICAg
ICAgPCAxOjc+CUpTQ29uc3RhbnQoSlN8VXNlQXNPdGhlciwgJDIgPSBJbnQzMjogMCwgYmMjMzMp
CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDQ3OiAgICAgICAgICAgPCExOjc+CUNvbXBhcmVH
cmVhdGVyRXEoQDQyPEludDMyPiwgQDQ2PEludDMyPiwgQm9vbGVhbnxNdXN0R2VufE1pZ2h0Q2xv
YmJlcnxVc2VBc090aGVyLCBiYyMzMykKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiNzdhOiBtb3YgJDB4YTMsICVyMTFkCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYjc4MDogeG9yICQweGEzLCAlcjExZAogICAgIDMwNS81MzA4NzMgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWI3ODc6IGNtcCAlcjExZCwgJWVkeAogICAgIDMwNS81MzA4
NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI3OGE6IGpsIDB4NGFjZjMwYzFiYzBjCiAgICAg
MzA1LzUzMDg3MyAgICAgICAgICAgIDQ4OiAgICAgICAgICAgPCEwOi0+CUJyYW5jaChANDc8Qm9v
bGVhbj4sIE11c3RHZW58Q2FuRXhpdCwgVDojMSwgRjojMywgYmMjMzMpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBCbG9jayAjMSAoYmMjMzcpOiAgKE9TUiB0YXJnZXQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByZWRlY2Vzc29yczogIzAgIzEKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9taW5hdGVkIGJ5OiAjMCAjMQogICAgICAgICAgICAgICAgICAgICAgICAgICBEb21pbmF0
ZXM6ICMxCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoaSBOb2RlczogQDUyLT4oQDIyLCBA
NTIpLCBANTUtPihAMSwgQDc0KSwgQDg1LT4oQDM4LCBAODUpLCBAOTAtPihAMzMsIEA5MCksIEAx
MTEtPihAMjcsIEAxMTEpLCBAMTE0LT4oQDQsIEAxNTQpLCBAMTIyLT4oQDUsIEAxNDQpLCBAMTk2
LT4oQDIsIEAxOTYpLCBAMTk4LT4oQDMsIEAxOTgpLCBAMjAxLT4oQDQ0LCBAMTcwKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNzkwOiB0ZXN0ICQweDcsICVyMTNi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYjc5NDoganogMHg0YWNm
MzBjMWI3OWIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiNzlhOiBp
bnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA1MzogICAgICAgICAgIDwgODo3PglHZXRM
b2NhbChANTIsIEpTfFVzZUFzT3RoZXIsIHIwKFQ8QXJyYXk+KSwgYmMjMzgpICBwcmVkaWN0aW5n
IEFycmF5CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjdiNzogbW92
IDB4MCglcjEzKSwgJXJheAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA1NjogICAgICAgICAg
IDwgMzo4PglHZXRMb2NhbChANTUsIEpTfFVzZUFzT3RoZXJ8VXNlQXNJbnQsIGFyZzEoVTxJbnQz
Mj4pLCBiYyMzOCkgIHByZWRpY3RpbmcgSW50CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYjdiYjogbW92IC0weDQwKCVyMTMpLCAlZWR4CiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgMjAzOiAgICAgICAgICAgPCAyOjk+CUdldEJ1dHRlcmZseShANTM8QXJyYXk+LCBT
dG9yYWdlfFB1cmVJbnQsIGJjIzM4KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjMWI3YmY6IG1vdiAweDgoJXJheCksICVyY3gKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAg
ICAgNTc6ICAgICAgICAgICA8ITI6MTA+CUdldEJ5VmFsKEA1MzxBcnJheT4sIEA1NjxJbnQzMj4s
IEAyMDMsIEpTfE11c3RHZW58TWlnaHRDbG9iYmVyfFB1cmVJbnR8VXNlQXNJbnR8Q2FuRXhpdCwg
SW50MzJPcmlnaW5hbEFycmF5SW5Cb3VuZHNBc0lzLCBiYyMzOCkgIHByZWRpY3RpbmcgSW50CiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjdjMzogY21wIC0weDgoJXJj
eCksICVlZHgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiN2M2OiBq
YWUgMHg0YWNmMzBjMWJlNmIKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMw
YzFiN2NjOiBtb3YgKCVyY3gsJXJkeCw4KSwgJXJieAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
ICAgICAgMHg0YWNmMzBjMWI3ZDA6IHRlc3QgJXJieCwgJXJieAogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWI3ZDM6IGp6IDB4NGFjZjMwYzFiZThjCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjdkOTogY21wICVyMTQsICVyYngKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiN2RjOiBqYWUgMHg0YWNmMzBjMWI3
ZTMKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiN2UyOiBpbnQzIAog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA1ODogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChA
NTc8SW50MzI+LCA8ZW1wdHk+LCByNyhWKSwgYmMjMzgpCiAgICA0OTQwLzU5NDk1MzcgICAgICAg
ICAgIDYwOiAgc2tpcHBlZCAgPCAwOi0+CVZhbHVlVG9JbnQzMihANTc8SW50MzI+LCBJbnQzMnxQ
dXJlSW50fFVzZUFzSW50fENhbkV4aXQsIGJjIzQ0KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
ICA2MTogICAgICAgICAgIDwgMjoxMT4JSlNDb25zdGFudChKU3xQdXJlSW50fFVzZUFzSW50LCAk
MCA9IEludDMyOiAxNjM4MywgYmMjNDQpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDYyOiAg
ICAgICAgICAgPCAyOjEyPglCaXRBbmQoQDU3PEludDMyPiwgQDYxPEludDMyPiwgSW50MzJ8VXNl
QXNJbnQsIGJjIzQ0KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI3
ZjE6IG1vdiAkMHhiNTcyLCAlZWRpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYjdmNjogeG9yICQweDhhOGQsICVlZGkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzFiN2ZjOiBhbmQgJWVieCwgJWVkaQogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgICAgICAgMHg0YWNmMzBjMWI3ZmU6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81
OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4MDg6IGNtcCAlcjExLCAlcmRpCiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjgwYjogamJlIDB4NGFjZjMwYzFi
ODEyCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjgxMTogaW50MyAK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgNjM6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwo
QDYyPEludDMyPiwgPGVtcHR5PiwgcjQoVyksIGJjIzQ0KQogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgICA2NTogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChANTM8QXJyYXk+LCA8ZW1wdHk+LCBy
NyhYKSwgYmMjNDkpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDY3OiAgICAgICAgICAgPCAz
OjEzPglKU0NvbnN0YW50KEpTfFVzZUFzSW50LCAkNiA9IEludDMyOiAxLCBiYyM1MikKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgNjg6ICAgICAgICAgICA8ITI6MTQ+CUFyaXRoQWRkKEA1NjxJ
bnQzMj4sIEA2NzxJbnQzMj4sIE51bWJlcnxNdXN0R2VufFVzZUFzT3RoZXJ8VXNlQXNJbnR8Q2Fu
RXhpdCwgYmMjNTIpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjgy
ZTogbW92ICQweGY4LCAlZXNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYjgzMzogeG9yICQweGY5LCAlZXNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAw
eDRhY2YzMGMxYjgzOTogYWRkICVlZHgsICVlc2kKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzFiODNiOiBqbyAweDRhY2YzMGMxYmVhZAogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWI4NDE6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4NGI6IGNtcCAlcjExLCAlcnNpCiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjg0ZTogamJlIDB4NGFjZjMw
YzFiODU1CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjg1NDogaW50
MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgNjk6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9j
YWwoQDU2PEludDMyPiwgPGVtcHR5PiwgcjgoWSksIGJjIzUyKQogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICA3MDogICAgICAgICAgIDwhMDotPglGbHVzaChANTUsIE11c3RHZW4sIGFyZzEoVTxJ
bnQzMj4pLCBiYyM1MikgIHByZWRpY3RpbmcgSW50CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
IDcxOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEA2ODxJbnQzMj4sIGFyZzEoWjxJbnQzMj4p
LCBiYyM1MikKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgNzI6ICBza2lwcGVkICA8IDA6LT4J
U2V0TG9jYWwoQDU2PEludDMyPiwgPGVtcHR5PiwgcjgoQUIpLCBiYyM1MikKICAgIDQ5NDAvNTk0
OTUzNyAgICAgICAgICAgNzQ6ICAgICAgICAgICA8IDI6LT4JU2V0TG9jYWwoQDY4PEludDMyPiwg
YXJnMShVPEludDMyPiksIGJjIzUyKSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0OTUzNyAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzFiODU1OiBtb3YgJWVzaSwgLTB4NDAoJXIxMykKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgNzg6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDU3PElu
dDMyPiwgPGVtcHR5PiwgcjgoQ0IpLCBiYyM1NSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ODA6ICBza2lwcGVkICA8IDA6LT4JVmFsdWVUb0ludDMyKEA1NzxJbnQzMj4sIEludDMyfFB1cmVJ
bnR8VXNlQXNJbnR8Q2FuRXhpdCwgYmMjNjEpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDgx
OiAgICAgICAgICAgPCAzOjk+CUpTQ29uc3RhbnQoSlN8UHVyZUludHxVc2VBc0ludCwgJDEgPSBJ
bnQzMjogMTQsIGJjIzYxKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA4MjogICAgICAgICAg
IDwgMjoxMD4JQml0UlNoaWZ0KEA1NzxJbnQzMj4sIEA4MTxJbnQzMj4sIEludDMyfFVzZUFzSW50
LCBiYyM2MSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiODc1OiBz
YXIgJDB4ZSwgJWVieAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4
Nzg6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWI4ODI6IGNtcCAlcjExLCAlcmJ4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYjg4NTogamJlIDB4NGFjZjMwYzFiODhjCiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgICAgICAweDRhY2YzMGMxYjg4YjogaW50MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgODM6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDgyPEludDMyPiwgPGVtcHR5Piwg
cjUoREIpLCBiYyM2MSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgODY6ICAgICAgICAgICA8
IDI6OD4JR2V0TG9jYWwoQDg1LCBKU3xVc2VBc0ludCwgcjMoRUI8SW50MzI+KSwgYmMjNjUpICBw
cmVkaWN0aW5nIEludAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4
OWE6IG1vdiAweDE4KCVyMTMpLCAlZWF4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDg3OiAg
ICAgICAgICAgPCExOjc+CUFyaXRoTXVsKEA4NjxJbnQzMj4sIEA2MjxJbnQzMj4sIE51bWJlcnxN
dXN0R2VufFB1cmVJbnR8VXNlQXNJbnQsIGJjIzY1KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
ICAgICAgMHg0YWNmMzBjMWI4OWU6IG1vdiAlcmF4LCAlcmR4CiAgICA0OTQwLzU5NDk1MzcgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYjhhMTogaW11bCAlZWRpLCAlZWR4CiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjhhNDogbW92ICQweGZmZmZmZmZmLCAlcjExCiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjhhZTogY21wICVyMTEsICVy
ZHgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOGIxOiBqYmUgMHg0
YWNmMzBjMWI4YjgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOGI3
OiBpbnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA4ODogIHNraXBwZWQgIDwgMDotPglT
ZXRMb2NhbChAODc8SW50MzI+LCA8ZW1wdHk+LCByNyhGQiksIGJjIzY1KQogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICA5MTogICAgICAgICAgIDwgMjoxND4JR2V0TG9jYWwoQDkwLCBKU3xVc2VB
c0ludCwgcjIoR0I8SW50MzI+KSwgYmMjNzApICBwcmVkaWN0aW5nIEludAogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4YzY6IG1vdiAweDEwKCVyMTMpLCAlZWN4CiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDkyOiAgICAgICAgICAgPCExOjE1PglBcml0aE11bChA
ODI8SW50MzI+LCBAOTE8SW50MzI+LCBOdW1iZXJ8TXVzdEdlbnxQdXJlTnVtfFVzZUFzSW50fENh
bkV4aXQsIGJjIzcwKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4
Y2E6IG1vdiAlcmN4LCAlcnNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYjhjZDogaW11bCAlZWJ4LCAlZXNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAw
eDRhY2YzMGMxYjhkMDogam8gMHg0YWNmMzBjMWJlY2UKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzFiOGQ2OiBtb3YgJDB4ZmZmZmZmZmYsICVyMTEKICAgIDQ5NDAvNTk0
OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOGUwOiBjbXAgJXIxMSwgJXJzaQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4ZTM6IGpiZSAweDRhY2YzMGMxYjhl
YQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4ZTk6IGludDMgCiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDkzOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEA5
MjxJbnQzMj4sIDxlbXB0eT4sIHI4KEhCKSwgYmMjNzApCiAgICA0OTQwLzU5NDk1MzcgICAgICAg
ICAgIDk1OiAgICAgICAgICAgPCEyOjE1PglBcml0aEFkZChAODc8SW50MzI+LCBAOTI8SW50MzI+
LCBOdW1iZXJ8TXVzdEdlbnxQdXJlSW50fFVzZUFzSW50LCBiYyM3NSkKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOGY4OiBhZGQgJWVzaSwgJWVkeAogICAgNDk0MC81
OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI4ZmE6IG1vdiAkMHhmZmZmZmZmZiwgJXIx
MQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI5MDQ6IGNtcCAlcjEx
LCAlcmR4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjkwNzogamJl
IDB4NGFjZjMwYzFiOTBlCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMx
YjkwZDogaW50MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgOTY6ICBza2lwcGVkICA8IDA6
LT4JU2V0TG9jYWwoQDk1PEludDMyPiwgPGVtcHR5PiwgcjYoSUIpLCBiYyM3NSkKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAgOTg6ICAgICAgICAgICA8ITE6MTI+CUFyaXRoTXVsKEA5MTxJbnQz
Mj4sIEA2MjxJbnQzMj4sIE51bWJlcnxNdXN0R2VufFB1cmVJbnR8VXNlQXNJbnQsIGJjIzgwKQog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI5MWM6IG1vdiAlcmN4LCAl
cnNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjkxZjogaW11bCAl
ZWRpLCAlZXNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjkyMjog
bW92ICQweGZmZmZmZmZmLCAlcjExCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYjkyYzogY21wICVyMTEsICVyc2kKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAg
IDB4NGFjZjMwYzFiOTJmOiBqYmUgMHg0YWNmMzBjMWI5MzYKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiOTM1OiBpbnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
ICA5OTogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChAOTg8SW50MzI+LCA8ZW1wdHk+LCByNyhK
QiksIGJjIzgwKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEwMTogIHNraXBwZWQgIDwgMDot
PglWYWx1ZVRvSW50MzIoQDk1PEludDMyPiwgSW50MzJ8UHVyZUludHxVc2VBc0ludHxDYW5FeGl0
LCBiYyM4NSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMDI6ICAgICAgICAgICA8IDE6MTE+
CUJpdEFuZChAOTU8SW50MzI+LCBANjE8SW50MzI+LCBJbnQzMnxQdXJlSW50fFVzZUFzSW50LCBi
YyM4NSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOTQ0OiBtb3Yg
JDB4MzUwYSwgJWVjeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI5
NDk6IHhvciAkMHhhZjUsICVlY3gKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzFiOTRmOiBhbmQgJWVkeCwgJWVjeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWI5NTE6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWI5NWI6IGNtcCAlcjExLCAlcmN4CiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjk1ZTogamJlIDB4NGFjZjMwYzFiOTY1CiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjk2NDogaW50MyAKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAxMDM6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDEwMjxJbnQz
Mj4sIDxlbXB0eT4sIHI4KEtCKSwgYmMjODUpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTA1
OiAgICAgICAgICAgPCAxOjExPglCaXRMU2hpZnQoQDEwMjxJbnQzMj4sIEA4MTxJbnQzMj4sIElu
dDMyfFB1cmVJbnR8VXNlQXNJbnQsIGJjIzkwKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWI5NzM6IHNobCAkMHhlLCAlZWN4CiAgICA0OTQwLzU5NDk1MzcgICAgICAg
ICAgICAgICAweDRhY2YzMGMxYjk3NjogbW92ICQweGZmZmZmZmZmLCAlcjExCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjk4MDogY21wICVyMTEsICVyY3gKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOTgzOiBqYmUgMHg0YWNmMzBjMWI5
OGEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOTg5OiBpbnQzIAog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEwNjogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChA
MTA1PEludDMyPiwgPGVtcHR5PiwgcjgoTEIpLCBiYyM5MCkKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAxMDg6ICAgICAgICAgICA8ITE6MTE+CVZhbHVlQWRkKEA5ODxJbnQzMj4sIEAxMDU8SW50
MzI+LCBKU3xNdXN0R2VufE1pZ2h0Q2xvYmJlcnxQdXJlSW50fFVzZUFzSW50LCBiYyM5NCkKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOTk4OiBhZGQgJWVjeCwgJWVz
aQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI5OWE6IG1vdiAkMHhm
ZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI5
YTQ6IGNtcCAlcjExLCAlcnNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYjlhNzogamJlIDB4NGFjZjMwYzFiOWFlCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYjlhZDogaW50MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMDk6ICBz
a2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDEwODxJbnQzMj4sIDxlbXB0eT4sIHI3KE1CKSwgYmMj
OTQpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTEyOiAgICAgICAgICAgPCA4OjEyPglHZXRM
b2NhbChAMTExLCBKU3xVc2VBc090aGVyLCByMShOQjxBcnJheT4pLCBiYyM5OSkgIHByZWRpY3Rp
bmcgQXJyYXkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOWJjOiBt
b3YgMHg4KCVyMTMpLCAlcmN4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTE1OiAgICAgICAg
ICAgPCAzOjE0PglHZXRMb2NhbChAMTE0LCBKU3xVc2VBc090aGVyfFVzZUFzSW50LCBhcmc0KE9C
PEludDMyPiksIGJjIzk5KSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzFiOWMwOiBtb3YgLTB4NTgoJXIxMyksICVlZGkKICAgIDQ5NDAvNTk0
OTUzNyAgICAgICAgICAyMDc6ICAgICAgICAgICA8IDI6Nz4JR2V0QnV0dGVyZmx5KEAxMTI8QXJy
YXk+LCBTdG9yYWdlfFB1cmVJbnQsIGJjIzk5KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWI5YzQ6IG1vdiAweDgoJXJjeCksICVyOAogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgIDExNjogICAgICAgICAgIDwhMToxNj4JR2V0QnlWYWwoQDExMjxBcnJheT4sIEAxMTU8
SW50MzI+LCBAMjA3LCBKU3xNdXN0R2VufE1pZ2h0Q2xvYmJlcnxQdXJlSW50fFVzZUFzSW50fENh
bkV4aXQsIEludDMyT3JpZ2luYWxBcnJheUluQm91bmRzQXNJcywgYmMjOTkpICBwcmVkaWN0aW5n
IEludAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI5Yzg6IGNtcCAt
MHg4KCVyOCksICVlZGkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
OWNjOiBqYWUgMHg0YWNmMzBjMWJlZWYKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiOWQyOiBtb3YgKCVyOCwlcmRpLDgpLCAlcjkKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiOWQ2OiB0ZXN0ICVyOSwgJXI5CiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgICAgICAweDRhY2YzMGMxYjlkOToganogMHg0YWNmMzBjMWJmMTAKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOWRmOiBjbXAgJXIxNCwgJXI5CiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjllMjogamFlIDB4NGFjZjMwYzFi
OWU5CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYjllODogaW50MyAK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMTc6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwo
QDExNjxJbnQzMj4sIDxlbXB0eT4sIHI4KFBCKSwgYmMjOTkpCiAgICA0OTQwLzU5NDk1MzcgICAg
ICAgICAgMTE5OiAgICAgICAgICAgPCExOjE2PglWYWx1ZUFkZChAMTA4PEludDMyPiwgQDExNjxJ
bnQzMj4sIEpTfE11c3RHZW58TWlnaHRDbG9iYmVyfFB1cmVJbnR8VXNlQXNJbnQsIGJjIzEwNSkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiOWY3OiBhZGQgJXI5ZCwg
JWVzaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWI5ZmE6IG1vdiAk
MHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWJhMDQ6IGNtcCAlcjExLCAlcnNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmEwNzogamJlIDB4NGFjZjMwYzFiYTBlCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYmEwZDogaW50MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMjA6
ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDExOTxJbnQzMj4sIDxlbXB0eT4sIHI3KFFCKSwg
YmMjMTA1KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEyMzogICAgICAgICAgIDwgMToxMT4J
R2V0TG9jYWwoQDEyMiwgSlN8UHVyZUludHxVc2VBc0ludCwgYXJnNShSQjxJbnQzMj4pLCBiYyMx
MTApICBwcmVkaWN0aW5nIEludAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNm
MzBjMWJhMWM6IG1vdiAtMHg2MCglcjEzKSwgJXI5ZAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
IDEyNDogICAgICAgICAgIDwhMjoxMT4JVmFsdWVBZGQoQDExOTxJbnQzMj4sIEAxMjM8SW50MzI+
LCBKU3xNdXN0R2VufE1pZ2h0Q2xvYmJlcnxQdXJlSW50fFVzZUFzSW50LCBiYyMxMTApCiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmEyMDogYWRkICVyOWQsICVlc2kK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYTIzOiBtb3YgJDB4ZmZm
ZmZmZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYTJk
OiBjbXAgJXIxMSwgJXJzaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWJhMzA6IGpiZSAweDRhY2YzMGMxYmEzNwogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWJhMzY6IGludDMgCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTI1OiAgc2tp
cHBlZCAgPCAwOi0+CVNldExvY2FsKEAxMjQ8SW50MzI+LCA8ZW1wdHk+LCByNChTQiksIGJjIzEx
MCkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMjc6ICBza2lwcGVkICA8IDA6LT4JVmFsdWVU
b0ludDMyKEAxMjQ8SW50MzI+LCBJbnQzMnxQdXJlSW50fFVzZUFzSW50fENhbkV4aXQsIGJjIzEx
NSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMjg6ICAgICAgICAgICA8IDE6MTY+CUpTQ29u
c3RhbnQoSlN8UHVyZUludHxVc2VBc0ludCwgJDMgPSBJbnQzMjogMjgsIGJjIzExNSkKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAxMjk6ICAgICAgICAgICA8IDE6MTY+CUJpdFJTaGlmdChAMTI0
PEludDMyPiwgQDEyODxJbnQzMj4sIEludDMyfFVzZUFzSW50LCBiYyMxMTUpCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmE0NTogbW92ICVyc2ksICVyOQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJhNDg6IHNhciAkMHgxYywgJXI5ZAog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJhNGM6IG1vdiAkMHhmZmZm
ZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJhNTY6
IGNtcCAlcjExLCAlcjkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
YTU5OiBqYmUgMHg0YWNmMzBjMWJhNjAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiYTVmOiBpbnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEzMDogIHNraXBw
ZWQgIDwgMDotPglTZXRMb2NhbChAMTI5PEludDMyPiwgPGVtcHR5PiwgcjcoVEIpLCBiYyMxMTUp
CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTMyOiAgc2tpcHBlZCAgPCAwOi0+CVZhbHVlVG9J
bnQzMihAOTU8SW50MzI+LCBJbnQzMnxQdXJlSW50fFVzZUFzSW50fENhbkV4aXQsIGJjIzExOSkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMzM6ICAgICAgICAgICA8IDE6OT4JQml0UlNoaWZ0
KEA5NTxJbnQzMj4sIEA4MTxJbnQzMj4sIEludDMyfFVzZUFzSW50LCBiYyMxMTkpCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmE2ZTogc2FyICQweGUsICVlZHgKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYTcxOiBtb3YgJDB4ZmZmZmZm
ZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYTdiOiBj
bXAgJXIxMSwgJXJkeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJh
N2U6IGpiZSAweDRhY2YzMGMxYmE4NQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjMWJhODQ6IGludDMgCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTM0OiAgc2tpcHBl
ZCAgPCAwOi0+CVNldExvY2FsKEAxMzM8SW50MzI+LCA8ZW1wdHk+LCByOChVQiksIGJjIzExOSkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMzY6ICAgICAgICAgICA8ITE6OT4JVmFsdWVBZGQo
QDEyOTxJbnQzMj4sIEAxMzM8SW50MzI+LCBKU3xNdXN0R2VufE1pZ2h0Q2xvYmJlcnxVc2VBc0lu
dHxDYW5FeGl0LCBiYyMxMjMpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYmE5MzogYWRkICVlZHgsICVyOWQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiYTk2OiBqbyAweDRhY2YzMGMxYmYzMQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
ICAgICAgMHg0YWNmMzBjMWJhOWM6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJhYTY6IGNtcCAlcjExLCAlcjkKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYWE5OiBqYmUgMHg0YWNmMzBjMWJhYjAK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYWFmOiBpbnQzIAogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgIDEzNzogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChAMTM2
PEludDMyPiwgPGVtcHR5PiwgcjcoVkIpLCBiYyMxMjMpCiAgICA0OTQwLzU5NDk1MzcgICAgICAg
ICAgMTM5OiAgICAgICAgICAgPCExOjEwPglBcml0aE11bChAODY8SW50MzI+LCBAODI8SW50MzI+
LCBOdW1iZXJ8TXVzdEdlbnxVc2VBc0ludHxDYW5FeGl0LCBiYyMxMjgpCiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmFiZTogbW92ICVyYngsICVyZHgKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYWMxOiBpbXVsICVlYXgsICVlZHgKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYWM0OiBqbyAweDRhY2YzMGMx
YmY1MgogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJhY2E6IHRlc3Qg
JWVkeCwgJWVkeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJhY2M6
IGpueiAweDRhY2YzMGMxYmFlNAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNm
MzBjMWJhZDI6IGNtcCAkMHgwLCAlZWF4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAw
eDRhY2YzMGMxYmFkNTogamwgMHg0YWNmMzBjMWJmNzMKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzFiYWRiOiBjbXAgJDB4MCwgJWVieAogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWJhZGU6IGpsIDB4NGFjZjMwYzFiZjk0CiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmFlNDogbW92ICQweGZmZmZmZmZmLCAlcjEx
CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmFlZTogY21wICVyMTEs
ICVyZHgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYWYxOiBqYmUg
MHg0YWNmMzBjMWJhZjgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
YWY3OiBpbnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE0MDogIHNraXBwZWQgIDwgMDot
PglTZXRMb2NhbChAMTM5PEludDMyPiwgPGVtcHR5PiwgcjgoV0IpLCBiYyMxMjgpCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgMTQyOiAgICAgICAgICAgPCExOjEwPglWYWx1ZUFkZChAMTM2PElu
dDMyPiwgQDEzOTxJbnQzMj4sIEpTfE11c3RHZW58TWlnaHRDbG9iYmVyfFVzZUFzT3RoZXJ8VXNl
QXNJbnR8Q2FuRXhpdCwgYmMjMTMzKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjMWJiMDY6IGFkZCAlZWR4LCAlcjlkCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYmIwOTogam8gMHg0YWNmMzBjMWJmYjUKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiYjBmOiBtb3YgJDB4ZmZmZmZmZmYsICVyMTEKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYjE5OiBjbXAgJXIxMSwgJXI5CiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmIxYzogamJlIDB4NGFjZjMwYzFi
YjIzCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmIyMjogaW50MyAK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNDM6ICAgICAgICAgICA8ITA6LT4JRmx1c2goQDEy
MiwgTXVzdEdlbiwgYXJnNShSQjxJbnQzMj4pLCBiYyMxMzMpICBwcmVkaWN0aW5nIEludAogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgIDE0NDogICAgICAgICAgIDwgMjotPglTZXRMb2NhbChAMTQy
PEludDMyPiwgYXJnNShSQjxJbnQzMj4pLCBiYyMxMzMpICBwcmVkaWN0aW5nIEludAogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiMjM6IG1vdiAlcjlkLCAtMHg2MCgl
cjEzKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE0NjogIHNraXBwZWQgIDwgMDotPglTZXRM
b2NhbChAMTEyPEFycmF5PiwgPGVtcHR5PiwgcjcoWUIpLCBiYyMxMzgpCiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgMTQ4OiAgICAgICAgICAgPCEyOjEwPglBcml0aEFkZChAMTE1PEludDMyPiwg
QDY3PEludDMyPiwgTnVtYmVyfE11c3RHZW58VXNlQXNPdGhlcnxVc2VBc0ludHxDYW5FeGl0LCBi
YyMxNDEpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmI0MzogbW92
ICQweDczLCAlZWF4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmI0
ODogeG9yICQweDcyLCAlZWF4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYmI0YjogYWRkICVlZGksICVlYXgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiYjRkOiBqbyAweDRhY2YzMGMxYmZkNgogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
ICAgICAgMHg0YWNmMzBjMWJiNTM6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiNWQ6IGNtcCAlcjExLCAlcmF4CiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmI2MDogamJlIDB4NGFjZjMwYzFiYjY3
CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmI2NjogaW50MyAKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNDk6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDEx
NTxJbnQzMj4sIDxlbXB0eT4sIHI4KFpCKSwgYmMjMTQxKQogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgIDE1MDogICAgICAgICAgIDwhMDotPglGbHVzaChAMTE0LCBNdXN0R2VuLCBhcmc0KE9CPElu
dDMyPiksIGJjIzE0MSkgIHByZWRpY3RpbmcgSW50CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
MTUxOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEAxNDg8SW50MzI+LCBhcmc0KEFDPEludDMy
PiksIGJjIzE0MSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNTI6ICBza2lwcGVkICA8IDA6
LT4JU2V0TG9jYWwoQDExNTxJbnQzMj4sIDxlbXB0eT4sIHI4KEJDKSwgYmMjMTQxKQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgIDE1NDogICAgICAgICAgIDwgMjotPglTZXRMb2NhbChAMTQ4PElu
dDMyPiwgYXJnNChPQjxJbnQzMj4pLCBiYyMxNDEpICBwcmVkaWN0aW5nIEludAogICAgNDk0MC81
OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiNjc6IG1vdiAlZWF4LCAtMHg1OCglcjEz
KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE1NjogIHNraXBwZWQgIDwgMDotPglWYWx1ZVRv
SW50MzIoQDEyNDxJbnQzMj4sIEludDMyfFB1cmVJbnR8VXNlQXNJbnR8Q2FuRXhpdCwgYmMjMTQ0
KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE1NzogICAgICAgICAgIDwgMToxMD4JSlNDb25z
dGFudChKU3xQdXJlSW50fFVzZUFzSW50LCAkNCA9IEludDMyOiAyNjg0MzU0NTUsIGJjIzE0NCkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNTg6ICAgICAgICAgICA8IDE6MTA+CUJpdEFuZChA
MTI0PEludDMyPiwgQDE1NzxJbnQzMj4sIEludDMyfFVzZUFzT3RoZXIsIGJjIzE0NCkKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYjc5OiBhbmQgJDB4ZmZmZmZmZiwg
JWVzaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiN2Y6IG1vdiAk
MHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWJiODk6IGNtcCAlcjExLCAlcnNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmI4YzogamJlIDB4NGFjZjMwYzFiYjkzCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYmI5MjogaW50MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNTk6
ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDE1ODxJbnQzMj4sIDxlbXB0eT4sIHI5KERDKSwg
YmMjMTQ0KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE2MjogICAgICAgICAgIDwhMDotPglQ
dXRCeVZhbEFsaWFzKEAxMTI8QXJyYXk+LCBAMTE1PEludDMyPiwgQDE1ODxJbnQzMj4sIEAyMDcs
IE11c3RHZW58VmFyQXJnc3xNaWdodENsb2JiZXJ8Q2FuRXhpdCwgSW50MzJPcmlnaW5hbEFycmF5
SW5Cb3VuZHNBc0lzLCBiYyMxNDkpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmJhMTogb3IgJXIxNCwgJXJzaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWJiYTQ6IG1vdiAlcnNpLCAoJXI4LCVyZGksOCkKICAgIDQ5NDAvNTk0OTUzNyAg
ICAgICAgICAxNjY6ICAgICAgICAgICA8IDE6Nz4JR2V0TG9jYWwoQDIwMSwgSlN8UHVyZU51bSwg
YXJnNihFQzxJbnQzMj4pLCBiYyMxNTQpICBwcmVkaWN0aW5nIEludAogICAgNDk0MC81OTQ5NTM3
ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiYjY6IG1vdiAtMHg2OCglcjEzKSwgJWVheAogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgIDE2ODogICAgICAgICAgIDwhMjoxMz4JQXJpdGhTdWIoQDE2
NjxJbnQzMj4sIEA2NzxJbnQzMj4sIE51bWJlcnxNdXN0R2VufFVzZUFzT3RoZXJ8Q2FuRXhpdCwg
YmMjMTU0KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiYmE6IG1v
diAkMHg4MywgJWVjeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJi
YmY6IHhvciAkMHg4MiwgJWVjeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNm
MzBjMWJiYzU6IG1vdiAlcmF4LCAlcmR4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAw
eDRhY2YzMGMxYmJjODogc3ViICVlY3gsICVlZHgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzFiYmNhOiBqbyAweDRhY2YzMGMxYmZmNwogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWJiZDA6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiZGE6IGNtcCAlcjExLCAlcmR4CiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmJkZDogamJlIDB4NGFjZjMw
YzFiYmU0CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMxYmJlMzogaW50
MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNjk6ICAgICAgICAgICA8ITA6LT4JRmx1c2go
QDIwMSwgTXVzdEdlbiwgYXJnNihFQzxJbnQzMj4pLCBiYyMxNTQpICBwcmVkaWN0aW5nIEludAog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE3MDogICAgICAgICAgIDwgMjotPglTZXRMb2NhbChA
MTY4PEludDMyPiwgYXJnNihFQzxJbnQzMj4pLCBiYyMxNTQpICBwcmVkaWN0aW5nIEludAogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJiZTQ6IG1vdiAlZWR4LCAtMHg2
OCglcjEzKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE3MjogICAgICAgICAgIDwgMTo3PglK
U0NvbnN0YW50KEpTfFVzZUFzT3RoZXIsICQyID0gSW50MzI6IDAsIGJjIzE1NikKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAxNzM6ICAgICAgICAgICA8ITE6Nz4JQ29tcGFyZUdyZWF0ZXJFcShA
MTY4PEludDMyPiwgQDE3MjxJbnQzMj4sIEJvb2xlYW58TXVzdEdlbnxNaWdodENsb2JiZXJ8VXNl
QXNPdGhlciwgYmMjMTU2KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWJiZjY6IG1vdiAkMHhjMywgJXIxMWQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiYmZjOiB4b3IgJDB4YzMsICVyMTFkCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYmMwMzogY21wICVyMTFkLCAlZWR4CiAgICA0OTQwLzU5NDk1MzcgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYmMwNjogamdlIDB4NGFjZjMwYzFiNzkwCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgMTc0OiAgICAgICAgICAgPCEwOi0+CUJyYW5jaChAMTczPEJvb2xlYW4+
LCBNdXN0R2VufENhbkV4aXQsIFQ6IzEsIEY6IzMsIGJjIzE1NikKICAgICAgICAgICAgICAgICAg
ICAgICAgIEJsb2NrICMzIChiYyMxNjApOiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJl
ZGVjZXNzb3JzOiAjMCAjMQogICAgICAgICAgICAgICAgICAgICAgICAgICBEb21pbmF0ZWQgYnk6
ICMwICMzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbWluYXRlczogIzMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGhpIE5vZGVzOiBAMTc2LT4oQDQ0LCBAMTcwKSwgQDE3OC0+KEA1
LCBAMTQ0KSwgQDE4MC0+KEA0LCBAMTU0KSwgQDE4Mi0+KEAzLCBAMTk4KSwgQDE4NC0+KEAyLCBA
MTk2KSwgQDE4Ni0+KEAxLCBANzQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmMwYzogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWJjMTA6IGp6IDB4NGFjZjMwYzFiYzE3CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYmMxNjogaW50MyAKICAgICAzMDUvNTMwODczICAgICAgICAg
ICAxNzc6ICAgICAgICAgICA8ITA6LT4JRmx1c2goQDE3NiwgTXVzdEdlbiwgYXJnNihFQzxJbnQz
Mj4pLCBiYyMxNjApICBwcmVkaWN0aW5nIEludAogICAgIDMwNS81MzA4NzMgICAgICAgICAgIDE3
OTogICAgICAgICAgIDwhMDotPglGbHVzaChAMTc4LCBNdXN0R2VuLCBhcmc1KFJCPEludDMyPiks
IGJjIzE2MCkgIHByZWRpY3RpbmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMTgxOiAg
ICAgICAgICAgPCEwOi0+CUZsdXNoKEAxODAsIE11c3RHZW4sIGFyZzQoT0I8SW50MzI+KSwgYmMj
MTYwKSAgcHJlZGljdGluZyBJbnQKICAgICAzMDUvNTMwODczICAgICAgICAgICAxODM6ICAgICAg
ICAgICA8ITA6LT4JRmx1c2goQDE4MiwgTXVzdEdlbiwgYXJnMyhKQzxGaW5hbD4pLCBiYyMxNjAp
ICBwcmVkaWN0aW5nIEZpbmFsCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMTg1OiAgICAgICAg
ICAgPCEwOi0+CUZsdXNoKEAxODQsIE11c3RHZW4sIGFyZzIoS0M8SW50MzI+KSwgYmMjMTYwKSAg
cHJlZGljdGluZyBJbnQKICAgICAzMDUvNTMwODczICAgICAgICAgICAxODc6ICAgICAgICAgICA8
ITA6LT4JRmx1c2goQDE4NiwgTXVzdEdlbiwgYXJnMShVPEludDMyPiksIGJjIzE2MCkgIHByZWRp
Y3RpbmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMTg4OiAgICAgICAgICAgPCAxOjc+
CUdldExvY2FsKEAxNzgsIEpTfFVzZUFzT3RoZXIsIGFyZzUoUkI8SW50MzI+KSwgYmMjMTYwKSAg
cHJlZGljdGluZyBJbnQKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
YzI1OiBtb3YgLTB4NjAoJXIxMyksICVlYXgKICAgICAzMDUvNTMwODczICAgICAgICAgICAxODk6
ICAgICAgICAgICA8ITA6LT4JUmV0dXJuKEAxODg8SW50MzI+LCBNdXN0R2VuLCBiYyMxNjApCiAg
ICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmMyOTogb3IgJXIxNCwgJXJh
eAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJjMmM6IG1vdiAtMHgx
MCglcjEzKSwgJXJkeAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJj
MzA6IG1vdiAtMHgyOCglcjEzKSwgJXIxMwogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWJjMzQ6IHB1c2ggJXJkeAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWJjMzU6IHJldCAKICAgICAgICAgICAgICAgICAgICAgICAgIChFbmQgT2YgTWFp
biBQYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJjMzY6IG1v
diAlcnNwLCAlcmRpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmMz
OTogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiYzNlOiBtb3YgJDB4MCwgLTB4MmMoJXIxMykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiYzQ2OiBtb3YgJDB4MTA1MzFkYTYwLCAlcjExCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmM1MDogY2FsbCAlcjExCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmM1Mzogam1wIDB4NGFjZjMwYzFiNWNk
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmM1ODogcG9wICVyY3gK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYzU5OiBtb3YgJXJjeCwg
LTB4MTAoJXIxMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYzVk
OiBtb3YgJDB4N2Y5NjliMTMzNjAwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYmM2NzogbW92ICVyMTEsIC0weDgoJXIxMykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzFiYzZiOiBtb3YgLTB4MzAoJXIxMyksICVlZHgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYzZmOiBjbXAgJDB4NywgJWVkeAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJjNzI6IGphZSAweDRhY2Yz
MGMxYjViMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJjNzg6IG1v
diAlcnNwLCAlcmRpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmM3
YjogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiYzgwOiBtb3YgJDB4MSwgLTB4MmMoJXIxMykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiYzg4OiBtb3YgJDB4MTA1MzIwYzIwLCAlcjExCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmM5MjogY2FsbCAlcjExCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmM5NTogbW92ICVyYXgsICVyMTMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYzk4OiBqbXAgMHg0YWNmMzBj
MWI1YjMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiYzlkOiB0ZXN0
ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmNh
MToganogMHg0YWNmMzBjMWJjYTgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzFiY2E3OiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWJjYTg6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzFiY2IyOiBtb3YgJDB4MCwgKCVyMTEpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDRhY2YzMGMxYmNiOTogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmNiZTogdGVzdCAkMHg3LCAlcjEzYgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJjYzI6IGp6IDB4NGFjZjMw
YzFiY2M5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmNjODogaW50
MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiY2M5OiBtb3YgJDB4
N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYmNkMzogbW92ICQweDEsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWJjZGE6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjMWJjZGY6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiY2UzOiBqeiAweDRhY2YzMGMxYmNlYQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJjZTk6IGludDMgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmNlYTogbW92ICQweDdmOTY5YTgwY2UzMCwg
JXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJjZjQ6IG1vdiAk
MHgyLCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiY2Zi
OiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzFiZDAwOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYmQwNDoganogMHg0YWNmMzBjMWJkMGIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiZDBhOiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg0YWNmMzBjMWJkMGI6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZDE1OiBtb3YgJDB4MywgKCVyMTEpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmQxYzogam1wIDB4NGFjZjcw
YzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmQyMTogdGVz
dCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJk
MjU6IGp6IDB4NGFjZjMwYzFiZDJjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmQyYjogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzFiZDJjOiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMxYmQzNjogbW92ICQweDQsICglcjExKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkM2Q6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkNDI6IHRlc3QgJDB4NywgJXIxM2IK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZDQ2OiBqeiAweDRhY2Yz
MGMxYmQ0ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkNGM6IGlu
dDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmQ0ZDogbW92ICQw
eDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjMWJkNTc6IG1vdiAkMHg1LCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzFiZDVlOiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiZDYzOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmQ2NzoganogMHg0YWNmMzBjMWJkNmUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZDZkOiBpbnQzIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkNmU6IG1vdiAkMHg3Zjk2OWE4MGNlMzAs
ICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZDc4OiBtb3Yg
JDB4NiwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmQ3
Zjogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmQ4NDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWJkODg6IGp6IDB4NGFjZjMwYzFiZDhmCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYmQ4ZTogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzFiZDhmOiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmQ5OTogbW92ICQweDcsICglcjExKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkYTA6IGptcCAweDRhY2Y3
MGMwMDk4MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkYTU6IHRl
c3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
ZGE5OiBqeiAweDRhY2YzMGMxYmRiMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0
YWNmMzBjMWJkYWY6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYmRiMDogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjMWJkYmE6IG1vdiAkMHg4LCAoJXIxMSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZGMxOiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZGM2OiB0ZXN0ICQweDcsICVyMTNi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmRjYToganogMHg0YWNm
MzBjMWJkZDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZGQwOiBp
bnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkZDE6IG1vdiAk
MHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzFiZGRiOiBtb3YgJDB4OSwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYmRlMjogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYmRlNzogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJkZWI6IGp6IDB4NGFjZjMwYzFiZGYyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmRmMTogaW50MyAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZGYyOiBtb3YgJDB4N2Y5NjlhODBjZTMw
LCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmRmYzogbW92
ICQweGEsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJl
MDM6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0
YWNmMzBjMWJlMDg6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzFiZTBjOiBqeiAweDRhY2YzMGMxYmUxMwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWJlMTI6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMxYmUxMzogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJlMWQ6IG1vdiAkMHhiLCAoJXIxMSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZTI0OiBqbXAgMHg0YWNm
NzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZTI5OiB0
ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMx
YmUyZDoganogMHg0YWNmMzBjMWJlMzQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiZTMzOiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjMWJlMzQ6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzFiZTNlOiBtb3YgJDB4YywgKCVyMTEpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmU0NTogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmU0YTogdGVzdCAkMHg3LCAlcjEz
YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJlNGU6IGp6IDB4NGFj
ZjMwYzFiZTU1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmU1NDog
aW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZTU1OiBtb3Yg
JDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmU1ZjogbW92ICQweGQsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWJlNjY6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjMWJlNmI6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZTZmOiBqeiAweDRhY2YzMGMxYmU3NgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJlNzU6IGludDMgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmU3NjogbW92ICQweDdmOTY5YTgwY2Uz
MCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJlODA6IG1v
diAkMHhlLCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
ZTg3OiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiZThjOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYmU5MDoganogMHg0YWNmMzBjMWJlOTcKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzFiZTk2OiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjMWJlOTc6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZWExOiBtb3YgJDB4ZiwgKCVyMTEp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmVhODogam1wIDB4NGFj
ZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmVhZDog
dGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWJlYjE6IGp6IDB4NGFjZjMwYzFiZWI4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDRhY2YzMGMxYmViNzogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzFiZWI4OiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYmVjMjogbW92ICQweDEwLCAoJXIxMSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZWM5OiBqbXAgMHg0YWNmNzBjMDA5ODAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZWNlOiB0ZXN0ICQweDcsICVy
MTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmVkMjoganogMHg0
YWNmMzBjMWJlZDkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZWQ4
OiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJlZDk6IG1v
diAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiZWUzOiBtb3YgJDB4MTEsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg0YWNmMzBjMWJlZWE6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJlZWY6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZWYzOiBqeiAweDRhY2YzMGMxYmVmYQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJlZjk6IGludDMgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmVmYTogbW92ICQweDdmOTY5YTgw
Y2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJmMDQ6
IG1vdiAkMHgxMiwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2Yz
MGMxYmYwYjogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMxYmYxMDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjMWJmMTQ6IGp6IDB4NGFjZjMwYzFiZjFiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmYxYTogaW50MyAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzFiZjFiOiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmYyNTogbW92ICQweDEzLCAo
JXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZjJjOiBqbXAg
MHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFi
ZjMxOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmYzNToganogMHg0YWNmMzBjMWJmM2MKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzFiZjNiOiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg0YWNmMzBjMWJmM2M6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZjQ2OiBtb3YgJDB4MTQsICglcjExKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJmNGQ6IGptcCAweDRhY2Y3MGMwMDk4
MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJmNTI6IHRlc3QgJDB4
NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZjU2OiBq
eiAweDRhY2YzMGMxYmY1ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBj
MWJmNWM6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmY1
ZDogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWJmNjc6IG1vdiAkMHgxNSwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDRhY2YzMGMxYmY2ZTogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmY3MzogdGVzdCAkMHg3LCAlcjEzYgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJmNzc6IGp6IDB4NGFjZjMwYzFi
ZjdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmY3ZDogaW50MyAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZjdlOiBtb3YgJDB4N2Y5
NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMx
YmY4ODogbW92ICQweDE2LCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzFiZjhmOiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzFiZjk0OiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDRhY2YzMGMxYmY5ODoganogMHg0YWNmMzBjMWJmOWYKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZjllOiBpbnQzIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJmOWY6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVy
MTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZmE5OiBtb3YgJDB4
MTcsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJmYjA6
IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjMWJmYjU6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzFiZmI5OiBqeiAweDRhY2YzMGMxYmZjMAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjMWJmYmY6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDRhY2YzMGMxYmZjMDogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJmY2E6IG1vdiAkMHgxOCwgKCVyMTEpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmZkMTogam1wIDB4NGFjZjcw
YzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmZkNjogdGVz
dCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWJm
ZGE6IGp6IDB4NGFjZjMwYzFiZmUxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMxYmZlMDogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzFiZmUxOiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMxYmZlYjogbW92ICQweDE5LCAoJXIxMSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZmYyOiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFiZmY3OiB0ZXN0ICQweDcsICVyMTNi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMxYmZmYjoganogMHg0YWNm
MzBjMWMwMDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzFjMDAxOiBp
bnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjMWMwMDI6IG1vdiAk
MHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzFjMDBjOiBtb3YgJDB4MWEsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjMWMwMTM6IGptcCAweDRhY2Y3MGMwMDk4MApCYXNlbGluZS9ERkcgQ291bnRz
ICBEaXNhc3NlbWJseSBmb3IgQkc4bEJBIGluIERGRwogICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZWQgREZHIEpJVCBjb2RlIGZvciAjQkc4bEJBOlsweDdmOTY5YjIzYTIwMC0+MHgxMDZhNmFh
ZTAsIERGR0Z1bmN0aW9uQ2FsbF0sIGluc3RydWN0aW9uIGNvdW50ID0gMTYyOgogICAgICAgICAg
ICAgICAgICAgICAgICAgQ29kZSBhdCBbMHg0YWNmMzBjM2JkMjAsIDB4NGFjZjMwYzNjN2E1KToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZDIwOiBwb3AgJXJjeAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkMjE6IG1vdiAlcmN4LCAt
MHgxMCglcjEzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkMjU6
IG1vdiAkMHg3Zjk2OWIyM2EyMDAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNiZDJmOiBtb3YgJXIxMSwgLTB4OCglcjEzKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2JkMzM6IGxlYSAweDg4KCVyMTMpLCAlcmR4CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmQzYTogbW92ICQweDdmOTY5YTUwODVk
MCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkNDQ6IGNt
cCAlcmR4LCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNi
ZDQ3OiBqYiAweDRhY2YzMGMzYzNjMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2JkNGQ6IHRlc3QgJXIxNSwgLTB4MzgoJXIxMykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzNiZDUxOiBqbnogMHg0YWNmMzBjM2M0MmEKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZDU3OiBjbXAgJXIxNCwgLTB4NDAoJXIxMykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZDViOiBqYiAweDRhY2Yz
MGMzYzQ0YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkNjE6IGNt
cCAlcjE0LCAtMHg0OCglcjEzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2JkNjU6IGpiIDB4NGFjZjMwYzNjNDZjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYmQ2YjogdGVzdCAlcjE1LCAtMHg1MCglcjEzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkNmY6IGpueiAweDRhY2YzMGMzYzQ4ZAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkNzU6IGNtcCAlcjE0LCAtMHg1OCgl
cjEzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkNzk6IGpiIDB4
NGFjZjMwYzNjNGFlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmQ3
ZjogY21wICVyMTQsIC0weDYwKCVyMTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDRhY2YzMGMzYmQ4MzogamIgMHg0YWNmMzBjM2M0Y2YKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzNiZDg5OiBjbXAgJXIxNCwgLTB4NjgoJXIxMykKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZDhkOiBqYiAweDRhY2YzMGMzYzRmMAogICAg
ICAgICAgICAgICAgICAgICAgICAgQmxvY2sgIzAgKGJjIzApOiAgKE9TUiB0YXJnZXQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFByZWRlY2Vzc29yczoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRG9taW5hdGVkIGJ5OiAjMAogICAgICAgICAgICAgICAgICAgICAgICAgICBEb21pbmF0
ZXM6ICMwICMxICMzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoaSBOb2RlczoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZDkzOiB0ZXN0ICQweDcsICVyMTNi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmQ5NzoganogMHg0YWNm
MzBjM2JkOWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZDlkOiBp
bnQzIAogICAgIDE1NS81MzEwMjUgICAgICAgICAgICAgMDogICAgICAgICAgIDwgMTotPglTZXRB
cmd1bWVudChhcmcwKGEpLCBiYyMwKSAgcHJlZGljdGluZyBGaW5hbAogICAgIDE1NS81MzEwMjUg
ICAgICAgICAgICAgMTogICAgICAgICAgIDwgMjotPglTZXRBcmd1bWVudChhcmcxKFU8SW50MzI+
KSwgYmMjMCkgIHByZWRpY3RpbmcgSW50CiAgICAgMTU1LzUzMTAyNSAgICAgICAgICAgICAyOiAg
ICAgICAgICAgPCAzOi0+CVNldEFyZ3VtZW50KGFyZzIoS0M8SW50MzI+KSwgYmMjMCkgIHByZWRp
Y3RpbmcgSW50CiAgICAgMTU1LzUzMTAyNSAgICAgICAgICAgICAzOiAgICAgICAgICAgPCAzOi0+
CVNldEFyZ3VtZW50KGFyZzMoSkM8RmluYWw+KSwgYmMjMCkgIHByZWRpY3RpbmcgRmluYWwKICAg
ICAxNTUvNTMxMDI1ICAgICAgICAgICAgIDQ6ICAgICAgICAgICA8IDI6LT4JU2V0QXJndW1lbnQo
YXJnNChPQjxJbnQzMj4pLCBiYyMwKSAgcHJlZGljdGluZyBJbnQKICAgICAxNTUvNTMxMDI1ICAg
ICAgICAgICAgIDU6ICAgICAgICAgICA8IDI6LT4JU2V0QXJndW1lbnQoYXJnNShSQjxJbnQzMj4p
LCBiYyMwKSAgcHJlZGljdGluZyBJbnQKICAgICAxNTUvNTMxMDI1ICAgICAgICAgICAgIDY6ICAg
ICAgICAgICA8IDI6LT4JU2V0QXJndW1lbnQoYXJnNihHPEludDMyPiksIGJjIzApICBwcmVkaWN0
aW5nIEludAogICAgIDE1NS81MzEwMjUgICAgICAgICAgICAgOTogIHNraXBwZWQgIDwgMDotPglT
ZXRMb2NhbChAOCwgPGVtcHR5PiwgcjAoSCksIGJjIzApCiAgICAgMTU1LzUzMTAyNSAgICAgICAg
ICAgIDEwOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEA4LCA8ZW1wdHk+LCByMShJKSwgYmMj
MCkKICAgICAxNTUvNTMxMDI1ICAgICAgICAgICAgMTE6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9j
YWwoQDgsIDxlbXB0eT4sIHIyKEopLCBiYyMwKQogICAgIDE1NS81MzEwMjUgICAgICAgICAgICAx
MjogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChAOCwgPGVtcHR5PiwgcjMoSyksIGJjIzApCiAg
ICAgMTU1LzUzMTAyNSAgICAgICAgICAgIDEzOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEA4
LCA8ZW1wdHk+LCByNChMKSwgYmMjMCkKICAgICAxNTUvNTMxMDI1ICAgICAgICAgICAgMTQ6ICBz
a2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDgsIDxlbXB0eT4sIHI1KE0pLCBiYyMwKQogICAgIDE1
NS81MzEwMjUgICAgICAgICAgICAxNTogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChAOCwgPGVt
cHR5PiwgcjYoTiksIGJjIzApCiAgICAgMzA1LzUzMTAyNSAgICAgICAgICAgIDE3OiAgICAgICAg
ICAgPCAzOjc+CUdldExvY2FsKEAwLCBKU3xVc2VBc090aGVyLCBhcmcwKGEpLCBiYyMxKSAgcHJl
ZGljdGluZyBGaW5hbAogICAgIDMwNS81MzEwMjUgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2Jk
YmE6IG1vdiAtMHgzOCglcjEzKSwgJXJheAogICAgIDMwNS81MzEwMjUgICAgICAgICAgICAxODog
ICAgICAgICAgIDwhMDotPglDaGVja1N0cnVjdHVyZShAMTc8RmluYWw+LCBNdXN0R2VufENhbkV4
aXQsIHN0cnVjdCgweDEwNmE2NDE0MDogTm9uQXJyYXkpLCBiYyMxKQogICAgIDMwNS81MzEwMjUg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JkYmU6IG1vdiAkMHgxMDZhNjQxNDAsICVyMTEKICAg
ICAzMDUvNTMxMDI1ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZGM4OiBjbXAgJXIxMSwgKCVy
YXgpCiAgICAgMzA1LzUzMTAyNSAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmRjYjogam56IDB4
NGFjZjMwYzNjNTExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDIxOiAgICAgICAgICAgPCAy
Ojc+CUdldEJ5T2Zmc2V0KEAxNzxGaW5hbD4sIEpTfFVzZUFzT3RoZXIsIGlkMHthcnJheX0sIDIs
IGJjIzQpICBwcmVkaWN0aW5nIEFycmF5CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAw
eDRhY2YzMGMzYmRkZjogbW92IDB4MTAoJXJheCksICVyYXgKICAgICAzMDUvNTMwODczICAgICAg
ICAgICAyMTA6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDIxPEFycmF5PiwgPGVtcHR5Piwg
cjAoVDxBcnJheT4pLCBiYyM0KQogICAgIDMwNS81MzA4NzMgICAgICAgICAgIDIxMTogICAgICAg
ICAgIDwhMDotPglGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUoQDIxPEFycmF5PiwgTXVzdEdlbnxDYW5F
eGl0LCBzdHJ1Y3QoMHgxMDZhNmUxNDA6IEFycmF5V2l0aEludDMyKSwgYmMjNCkKICAgICAzMDUv
NTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZGUzOiB0ZXN0ICVyYXgsICVyMTUKICAg
ICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZGU2OiBqbnogMHg0YWNmMzBj
M2M1MzIKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZGVjOiBtb3Yg
JDB4MTA2YTZlMTQwLCAlcjExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2Yz
MGMzYmRmNjogY21wICVyMTEsICglcmF4KQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAg
MHg0YWNmMzBjM2JkZjk6IGpueiAweDRhY2YzMGMzYzU1MwogICAgIDMwNS81MzA4NzMgICAgICAg
ICAgICAyMjogICAgICAgICAgIDwgMTotPglTZXRMb2NhbChAMjE8QXJyYXk+LCByMChUPEFycmF5
PiksIGJjIzQpICBwcmVkaWN0aW5nIEFycmF5CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYmRmZjogbW92ICVyYXgsIDB4MCglcjEzKQogICAgIDMwNS81MzA4NzMgICAg
ICAgICAgICAyNDogICAgICAgICAgIDwgMjo3PglHZXRMb2NhbChAMywgSlN8VXNlQXNPdGhlciwg
YXJnMyhKQzxGaW5hbD4pLCBiYyMxMykgIHByZWRpY3RpbmcgRmluYWwKICAgICAzMDUvNTMwODcz
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZTExOiBtb3YgLTB4NTAoJXIxMyksICVyYXgKICAg
ICAzMDUvNTMwODczICAgICAgICAgICAgMjU6ICAgICAgICAgICA8ITA6LT4JQ2hlY2tTdHJ1Y3R1
cmUoQDI0PEZpbmFsPiwgTXVzdEdlbnxDYW5FeGl0LCBzdHJ1Y3QoMHgxMDZhNjQxNDA6IE5vbkFy
cmF5KSwgc3RydWN0KDB4MTA2YTY0MWUwOiBOb25BcnJheSksIGJjIzEzKQogICAgIDMwNS81MzA4
NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JlMTU6IG1vdiAoJXJheCksICVyZHgKICAgICAz
MDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZTE4OiBtb3YgJDB4MTA2YTY0MTQw
LCAlcjExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmUyMjogY21w
ICVyMTEsICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZTI1
OiBqeiAweDRhY2YzMGMzYmUzZQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2JlMmI6IG1vdiAkMHgxMDZhNjQxZTAsICVyMTEKICAgICAzMDUvNTMwODczICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzNiZTM1OiBjbXAgJXIxMSwgJXJkeAogICAgIDMwNS81MzA4NzMgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2JlMzg6IGpueiAweDRhY2YzMGMzYzU3NAogICAgIDMwNS81
MzA4NzMgICAgICAgICAgICAyNjogICAgICAgICAgIDwgMjo3PglHZXRCeU9mZnNldChAMjQ8Rmlu
YWw+LCBKU3xVc2VBc090aGVyLCBpZDB7YXJyYXl9LCAyLCBiYyMxMykgIHByZWRpY3RpbmcgQXJy
YXkKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZTNlOiBtb3YgMHgx
MCglcmF4KSwgJXJheAogICAgIDMwNS81MzA4NzMgICAgICAgICAgIDIxMjogIHNraXBwZWQgIDwg
MDotPglTZXRMb2NhbChAMjY8QXJyYXk+LCA8ZW1wdHk+LCByMShOQjxBcnJheT4pLCBiYyMxMykK
ICAgICAzMDUvNTMwODczICAgICAgICAgICAyMTM6ICAgICAgICAgICA8ITA6LT4JRm9yd2FyZENo
ZWNrU3RydWN0dXJlKEAyNjxBcnJheT4sIE11c3RHZW58Q2FuRXhpdCwgc3RydWN0KDB4MTA2YTZl
MTQwOiBBcnJheVdpdGhJbnQzMiksIGJjIzEzKQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2JlNDI6IHRlc3QgJXJheCwgJXIxNQogICAgIDMwNS81MzA4NzMgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2JlNDU6IGpueiAweDRhY2YzMGMzYzU5NQogICAgIDMwNS81MzA4
NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JlNGI6IG1vdiAkMHgxMDZhNmUxNDAsICVyMTEK
ICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZTU1OiBjbXAgJXIxMSwg
KCVyYXgpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmU1ODogam56
IDB4NGFjZjMwYzNjNWI2CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDI3OiAgICAgICAgICAg
PCAxOi0+CVNldExvY2FsKEAyNjxBcnJheT4sIHIxKE5CPEFycmF5PiksIGJjIzEzKSAgcHJlZGlj
dGluZyBBcnJheQogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JlNWU6
IG1vdiAlcmF4LCAweDgoJXIxMykKICAgICAzMDUvNTMwODczICAgICAgICAgICAgMjk6ICAgICAg
ICAgICA8IDI6Nz4JR2V0TG9jYWwoQDIsIEpTfFB1cmVJbnR8VXNlQXNJbnQsIGFyZzIoS0M8SW50
MzI+KSwgYmMjMjIpICBwcmVkaWN0aW5nIEludAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2JlNzA6IG1vdiAtMHg0OCglcjEzKSwgJWVheAogICAgIDMwNS81MzA4NzMg
ICAgICAgICAgICAzMDogIHNraXBwZWQgIDwgMDotPglWYWx1ZVRvSW50MzIoQDI5PEludDMyPiwg
SW50MzJ8UHVyZUludHxVc2VBc0ludHxDYW5FeGl0LCBiYyMyMikKICAgICAzMDUvNTMwODczICAg
ICAgICAgICAgMzE6ICAgICAgICAgICA8IDE6OD4JSlNDb25zdGFudChKU3xQdXJlSW50fFVzZUFz
SW50LCAkMCA9IEludDMyOiAxNjM4MywgYmMjMjIpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAg
IDMyOiAgICAgICAgICAgPCAxOjg+CUJpdEFuZChAMjk8SW50MzI+LCBAMzE8SW50MzI+LCBJbnQz
MnxVc2VBc0ludCwgYmMjMjIpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2Yz
MGMzYmU3NDogbW92ICQweDhlZjQsICVlZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNiZTc5OiB4b3IgJDB4YjEwYiwgJWVkeAogICAgIDMwNS81MzA4NzMgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2JlN2Y6IGFuZCAlZWF4LCAlZWR4CiAgICAgMzA1LzUzMDg3MyAg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYmU4MTogbW92ICQweGZmZmZmZmZmLCAlcjExCiAgICAg
MzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmU4YjogY21wICVyMTEsICVyZHgK
ICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZThlOiBqYmUgMHg0YWNm
MzBjM2JlOTUKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZTk0OiBp
bnQzIAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAzMzogICAgICAgICAgIDwgMTotPglTZXRM
b2NhbChAMzI8SW50MzI+LCByMihHQjxJbnQzMj4pLCBiYyMyMikgIHByZWRpY3RpbmcgSW50CiAg
ICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmU5NTogbW92ICVlZHgsIDB4
MTAoJXIxMykKICAgICAzMDUvNTMwODczICAgICAgICAgICAgMzU6ICBza2lwcGVkICA8IDA6LT4J
VmFsdWVUb0ludDMyKEAyOTxJbnQzMj4sIEludDMyfFB1cmVJbnR8VXNlQXNJbnR8Q2FuRXhpdCwg
YmMjMjcpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDM2OiAgICAgICAgICAgPCAxOjg+CUpT
Q29uc3RhbnQoSlN8UHVyZUludHxVc2VBc0ludCwgJDEgPSBJbnQzMjogMTQsIGJjIzI3KQogICAg
IDMwNS81MzA4NzMgICAgICAgICAgICAzNzogICAgICAgICAgIDwgMTo4PglCaXRSU2hpZnQoQDI5
PEludDMyPiwgQDM2PEludDMyPiwgSW50MzJ8VXNlQXNJbnQsIGJjIzI3KQogICAgIDMwNS81MzA4
NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JlYTc6IHNhciAkMHhlLCAlZWF4CiAgICAgMzA1
LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmVhYTogbW92ICQweGZmZmZmZmZmLCAl
cjExCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmViNDogY21wICVy
MTEsICVyYXgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZWI3OiBq
YmUgMHg0YWNmMzBjM2JlYmUKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNiZWJkOiBpbnQzIAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAzODogICAgICAgICAgIDwg
MTotPglTZXRMb2NhbChAMzc8SW50MzI+LCByMyhFQjxJbnQzMj4pLCBiYyMyNykgIHByZWRpY3Rp
bmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmViZTogbW92
ICVlYXgsIDB4MTgoJXIxMykKICAgICAzMDUvNTMwODczICAgICAgICAgICAgNDA6ICAgICAgICAg
ICA8IDE6OD4JR2V0TG9jYWwoQDYsIEpTfFB1cmVOdW0sIGFyZzYoRzxJbnQzMj4pLCBiYyMzMSkg
IHByZWRpY3RpbmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YmVkMDogbW92IC0weDY4KCVyMTMpLCAlZWF4CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDQx
OiAgICAgICAgICAgPCAxOjc+CUpTQ29uc3RhbnQoSlN8UHVyZU51bSwgJDYgPSBJbnQzMjogMSwg
YmMjMzEpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDQyOiAgICAgICAgICAgPCEyOjc+CUFy
aXRoU3ViKEA0MDxJbnQzMj4sIEA0MTxJbnQzMj4sIE51bWJlcnxNdXN0R2VufFVzZUFzT3RoZXJ8
Q2FuRXhpdCwgYmMjMzEpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YmVkNDogbW92ICQweDI3LCAlZWN4CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRh
Y2YzMGMzYmVkOTogeG9yICQweDI2LCAlZWN4CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYmVkYzogbW92ICVyYXgsICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzNiZWRmOiBzdWIgJWVjeCwgJWVkeAogICAgIDMwNS81MzA4NzMgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2JlZTE6IGpvIDB4NGFjZjMwYzNjNWQ3CiAgICAgMzA1LzUz
MDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmVlNzogbW92ICQweGZmZmZmZmZmLCAlcjEx
CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmVmMTogY21wICVyMTEs
ICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZWY0OiBqYmUg
MHg0YWNmMzBjM2JlZmIKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNi
ZWZhOiBpbnQzIAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICA0MzogICAgICAgICAgIDwhMDot
PglGbHVzaChANiwgTXVzdEdlbiwgYXJnNihHPEludDMyPiksIGJjIzMxKSAgcHJlZGljdGluZyBJ
bnQKICAgICAzMDUvNTMwODczICAgICAgICAgICAgNDQ6ICAgICAgICAgICA8IDI6LT4JU2V0TG9j
YWwoQDQyPEludDMyPiwgYXJnNihFQzxJbnQzMj4pLCBiYyMzMSkgIHByZWRpY3RpbmcgSW50CiAg
ICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmVmYjogbW92ICVlZHgsIC0w
eDY4KCVyMTMpCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgIDQ2OiAgICAgICAgICAgPCAxOjg+
CUpTQ29uc3RhbnQoSlN8VXNlQXNPdGhlciwgJDIgPSBJbnQzMjogMCwgYmMjMzMpCiAgICAgMzA1
LzUzMDg3MyAgICAgICAgICAgIDQ3OiAgICAgICAgICAgPCExOjg+CUNvbXBhcmVHcmVhdGVyRXEo
QDQyPEludDMyPiwgQDQ2PEludDMyPiwgQm9vbGVhbnxNdXN0R2VufE1pZ2h0Q2xvYmJlcnxVc2VB
c090aGVyLCBiYyMzMykKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNi
ZjBkOiBtb3YgJDB4ZDcsICVyMTFkCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRh
Y2YzMGMzYmYxMzogeG9yICQweGQ3LCAlcjExZAogICAgIDMwNS81MzA4NzMgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2JmMWE6IGNtcCAlcjExZCwgJWVkeAogICAgIDMwNS81MzA4NzMgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2JmMWQ6IGpsIDB4NGFjZjMwYzNjMzk5CiAgICAgMzA1LzUzMDg3
MyAgICAgICAgICAgIDQ4OiAgICAgICAgICAgPCEwOi0+CUJyYW5jaChANDc8Qm9vbGVhbj4sIE11
c3RHZW58Q2FuRXhpdCwgVDojMSwgRjojMywgYmMjMzMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBCbG9jayAjMSAoYmMjMzcpOiAgKE9TUiB0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByZWRlY2Vzc29yczogIzAgIzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9taW5h
dGVkIGJ5OiAjMCAjMQogICAgICAgICAgICAgICAgICAgICAgICAgICBEb21pbmF0ZXM6ICMxCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBoaSBOb2RlczogQDUyLT4oQDIyLCBANTIpLCBANTUt
PihAMSwgQDc0KSwgQDg1LT4oQDM4LCBAODUpLCBAOTAtPihAMzMsIEA5MCksIEAxMTEtPihAMjcs
IEAxMTEpLCBAMTE0LT4oQDQsIEAxNTQpLCBAMTIyLT4oQDUsIEAxNDQpLCBAMTk2LT4oQDIsIEAx
OTYpLCBAMTk4LT4oQDMsIEAxOTgpLCBAMjAxLT4oQDQ0LCBAMTcwKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZjIzOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYmYyNzoganogMHg0YWNmMzBjM2JmMmUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZjJkOiBpbnQzIAogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgICA1MzogICAgICAgICAgIDwgODo4PglHZXRMb2NhbChANTIs
IEpTfFVzZUFzT3RoZXIsIHIwKFQ8QXJyYXk+KSwgYmMjMzgpICBwcmVkaWN0aW5nIEFycmF5CiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmY0YTogbW92IDB4MCglcjEz
KSwgJXJheAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA1NjogICAgICAgICAgIDwgMzo3PglH
ZXRMb2NhbChANTUsIEpTfFVzZUFzT3RoZXJ8VXNlQXNJbnQsIGFyZzEoVTxJbnQzMj4pLCBiYyMz
OCkgIHByZWRpY3RpbmcgSW50CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2Yz
MGMzYmY0ZTogbW92IC0weDQwKCVyMTMpLCAlZWR4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
MjAzOiAgICAgICAgICAgPCAyOjk+CUdldEJ1dHRlcmZseShANTM8QXJyYXk+LCBTdG9yYWdlfFB1
cmVJbnQsIGJjIzM4KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2Jm
NTI6IG1vdiAweDgoJXJheCksICVyY3gKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgNTc6ICAg
ICAgICAgICA8ITI6MTA+CUdldEJ5VmFsKEA1MzxBcnJheT4sIEA1NjxJbnQzMj4sIEAyMDMsIEpT
fE11c3RHZW58TWlnaHRDbG9iYmVyfFB1cmVJbnR8VXNlQXNJbnR8Q2FuRXhpdCwgSW50MzJPcmln
aW5hbEFycmF5SW5Cb3VuZHNBc0lzLCBiYyMzOCkgIHByZWRpY3RpbmcgSW50CiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmY1NjogY21wIC0weDgoJXJjeCksICVlZHgK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZjU5OiBqYWUgMHg0YWNm
MzBjM2M1ZjgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZjVmOiBt
b3YgKCVyY3gsJXJkeCw4KSwgJXJieAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2JmNjM6IHRlc3QgJXJieCwgJXJieAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2JmNjY6IGp6IDB4NGFjZjMwYzNjNjE5CiAgICA0OTQwLzU5NDk1MzcgICAg
ICAgICAgICAgICAweDRhY2YzMGMzYmY2YzogY21wICVyMTQsICVyYngKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZjZmOiBqYWUgMHg0YWNmMzBjM2JmNzYKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNiZjc1OiBpbnQzIAogICAgNDk0MC81
OTQ5NTM3ICAgICAgICAgICA1ODogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChANTc8SW50MzI+
LCA8ZW1wdHk+LCByNyhWKSwgYmMjMzgpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDYwOiAg
c2tpcHBlZCAgPCAwOi0+CVZhbHVlVG9JbnQzMihANTc8SW50MzI+LCBJbnQzMnxQdXJlSW50fFVz
ZUFzSW50fENhbkV4aXQsIGJjIzQ0KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA2MTogICAg
ICAgICAgIDwgMjoxMT4JSlNDb25zdGFudChKU3xQdXJlSW50fFVzZUFzSW50LCAkMCA9IEludDMy
OiAxNjM4MywgYmMjNDQpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDYyOiAgICAgICAgICAg
PCAyOjEyPglCaXRBbmQoQDU3PEludDMyPiwgQDYxPEludDMyPiwgSW50MzJ8VXNlQXNJbnQsIGJj
IzQ0KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JmODQ6IG1vdiAk
MHgyZTdjLCAlZWRpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmY4
OTogeG9yICQweDExODMsICVlZGkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNiZjhmOiBhbmQgJWVieCwgJWVkaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAg
MHg0YWNmMzBjM2JmOTE6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2JmOWI6IGNtcCAlcjExLCAlcmRpCiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmY5ZTogamJlIDB4NGFjZjMwYzNiZmE1CiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmZhNDogaW50MyAKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAgNjM6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDYyPEludDMy
PiwgPGVtcHR5PiwgcjQoVyksIGJjIzQ0KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA2NTog
IHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChANTM8QXJyYXk+LCA8ZW1wdHk+LCByNyhYKSwgYmMj
NDkpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDY3OiAgICAgICAgICAgPCAzOjEzPglKU0Nv
bnN0YW50KEpTfFVzZUFzSW50LCAkNiA9IEludDMyOiAxLCBiYyM1MikKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAgNjg6ICAgICAgICAgICA8ITI6MTQ+CUFyaXRoQWRkKEA1NjxJbnQzMj4sIEA2
NzxJbnQzMj4sIE51bWJlcnxNdXN0R2VufFVzZUFzT3RoZXJ8VXNlQXNJbnR8Q2FuRXhpdCwgYmMj
NTIpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmZjMTogbW92ICQw
eDQ3LCAlZXNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmZjNjog
eG9yICQweDQ2LCAlZXNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMz
YmZjOTogYWRkICVlZHgsICVlc2kKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNiZmNiOiBqbyAweDRhY2YzMGMzYzYzYQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2JmZDE6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2JmZGI6IGNtcCAlcjExLCAlcnNpCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmZkZTogamJlIDB4NGFjZjMwYzNiZmU1CiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYmZlNDogaW50MyAKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgNjk6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDU2PElu
dDMyPiwgPGVtcHR5PiwgcjgoWSksIGJjIzUyKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA3
MDogICAgICAgICAgIDwhMDotPglGbHVzaChANTUsIE11c3RHZW4sIGFyZzEoVTxJbnQzMj4pLCBi
YyM1MikgIHByZWRpY3RpbmcgSW50CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDcxOiAgc2tp
cHBlZCAgPCAwOi0+CVNldExvY2FsKEA2ODxJbnQzMj4sIGFyZzEoWjxJbnQzMj4pLCBiYyM1MikK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgNzI6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwo
QDU2PEludDMyPiwgPGVtcHR5PiwgcjgoQUIpLCBiYyM1MikKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgNzQ6ICAgICAgICAgICA8IDI6LT4JU2V0TG9jYWwoQDY4PEludDMyPiwgYXJnMShVPElu
dDMyPiksIGJjIzUyKSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzNiZmU1OiBtb3YgJWVzaSwgLTB4NDAoJXIxMykKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAgNzg6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDU3PEludDMyPiwgPGVt
cHR5PiwgcjgoQ0IpLCBiYyM1NSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgODA6ICBza2lw
cGVkICA8IDA6LT4JVmFsdWVUb0ludDMyKEA1NzxJbnQzMj4sIEludDMyfFB1cmVJbnR8VXNlQXNJ
bnR8Q2FuRXhpdCwgYmMjNjEpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDgxOiAgICAgICAg
ICAgPCAzOjk+CUpTQ29uc3RhbnQoSlN8UHVyZUludHxVc2VBc0ludCwgJDEgPSBJbnQzMjogMTQs
IGJjIzYxKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA4MjogICAgICAgICAgIDwgMjoxMD4J
Qml0UlNoaWZ0KEA1NzxJbnQzMj4sIEA4MTxJbnQzMj4sIEludDMyfFVzZUFzSW50LCBiYyM2MSkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMDA1OiBzYXIgJDB4ZSwg
JWVieAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwMDg6IG1vdiAk
MHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBj
M2MwMTI6IGNtcCAlcjExLCAlcmJ4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRh
Y2YzMGMzYzAxNTogamJlIDB4NGFjZjMwYzNjMDFjCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
ICAgICAweDRhY2YzMGMzYzAxYjogaW50MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgODM6
ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDgyPEludDMyPiwgPGVtcHR5PiwgcjUoREIpLCBi
YyM2MSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgODY6ICAgICAgICAgICA8IDI6Nz4JR2V0
TG9jYWwoQDg1LCBKU3xVc2VBc0ludCwgcjMoRUI8SW50MzI+KSwgYmMjNjUpICBwcmVkaWN0aW5n
IEludAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwMmE6IG1vdiAw
eDE4KCVyMTMpLCAlZWF4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDg3OiAgICAgICAgICAg
PCExOjg+CUFyaXRoTXVsKEA4NjxJbnQzMj4sIEA2MjxJbnQzMj4sIE51bWJlcnxNdXN0R2VufFB1
cmVJbnR8VXNlQXNJbnQsIGJjIzY1KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2MwMmU6IG1vdiAlcmF4LCAlcmR4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzAzMTogaW11bCAlZWRpLCAlZWR4CiAgICA0OTQwLzU5NDk1MzcgICAgICAg
ICAgICAgICAweDRhY2YzMGMzYzAzNDogbW92ICQweGZmZmZmZmZmLCAlcjExCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzAzZTogY21wICVyMTEsICVyZHgKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMDQxOiBqYmUgMHg0YWNmMzBjM2Mw
NDgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMDQ3OiBpbnQzIAog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA4ODogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChA
ODc8SW50MzI+LCA8ZW1wdHk+LCByNyhGQiksIGJjIzY1KQogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgICA5MTogICAgICAgICAgIDwgMjoxND4JR2V0TG9jYWwoQDkwLCBKU3xVc2VBc0ludCwgcjIo
R0I8SW50MzI+KSwgYmMjNzApICBwcmVkaWN0aW5nIEludAogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2MwNTY6IG1vdiAweDEwKCVyMTMpLCAlZWN4CiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgIDkyOiAgICAgICAgICAgPCExOjE1PglBcml0aE11bChAODI8SW50MzI+
LCBAOTE8SW50MzI+LCBOdW1iZXJ8TXVzdEdlbnxQdXJlTnVtfFVzZUFzSW50fENhbkV4aXQsIGJj
IzcwKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwNWE6IG1vdiAl
cmN4LCAlcnNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzA1ZDog
aW11bCAlZWJ4LCAlZXNpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzA2MDogam8gMHg0YWNmMzBjM2M2NWIKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzNjMDY2OiBtb3YgJDB4ZmZmZmZmZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzNjMDcwOiBjbXAgJXIxMSwgJXJzaQogICAgNDk0MC81OTQ5NTM3
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwNzM6IGpiZSAweDRhY2YzMGMzYzA3YQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwNzk6IGludDMgCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgIDkzOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEA5MjxJbnQzMj4s
IDxlbXB0eT4sIHI4KEhCKSwgYmMjNzApCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgIDk1OiAg
ICAgICAgICAgPCEyOjE1PglBcml0aEFkZChAODc8SW50MzI+LCBAOTI8SW50MzI+LCBOdW1iZXJ8
TXVzdEdlbnxQdXJlSW50fFVzZUFzSW50LCBiYyM3NSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzNjMDg4OiBhZGQgJWVzaSwgJWVkeAogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2MwOGE6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwOTQ6IGNtcCAlcjExLCAlcmR4CiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzA5NzogamJlIDB4NGFjZjMw
YzNjMDllCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzA5ZDogaW50
MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgOTY6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9j
YWwoQDk1PEludDMyPiwgPGVtcHR5PiwgcjYoSUIpLCBiYyM3NSkKICAgIDQ5NDAvNTk0OTUzNyAg
ICAgICAgICAgOTg6ICAgICAgICAgICA8ITE6MTI+CUFyaXRoTXVsKEA5MTxJbnQzMj4sIEA2MjxJ
bnQzMj4sIE51bWJlcnxNdXN0R2VufFB1cmVJbnR8VXNlQXNJbnQsIGJjIzgwKQogICAgNDk0MC81
OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwYWM6IG1vdiAlcmN4LCAlcnNpCiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzBhZjogaW11bCAlZWRpLCAlZXNp
CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzBiMjogbW92ICQweGZm
ZmZmZmZmLCAlcjExCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzBi
YzogY21wICVyMTEsICVyc2kKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjMGJmOiBqYmUgMHg0YWNmMzBjM2MwYzYKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNjMGM1OiBpbnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICA5OTogIHNr
aXBwZWQgIDwgMDotPglTZXRMb2NhbChAOTg8SW50MzI+LCA8ZW1wdHk+LCByNyhKQiksIGJjIzgw
KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEwMTogIHNraXBwZWQgIDwgMDotPglWYWx1ZVRv
SW50MzIoQDk1PEludDMyPiwgSW50MzJ8UHVyZUludHxVc2VBc0ludHxDYW5FeGl0LCBiYyM4NSkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMDI6ICAgICAgICAgICA8IDE6MTE+CUJpdEFuZChA
OTU8SW50MzI+LCBANjE8SW50MzI+LCBJbnQzMnxQdXJlSW50fFVzZUFzSW50LCBiYyM4NSkKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMGQ0OiBtb3YgJDB4NTVmOSwg
JWVjeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwZDk6IHhvciAk
MHg2YTA2LCAlZWN4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzBk
ZjogYW5kICVlZHgsICVlY3gKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjMGUxOiBtb3YgJDB4ZmZmZmZmZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzNjMGViOiBjbXAgJXIxMSwgJXJjeAogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2MwZWU6IGpiZSAweDRhY2YzMGMzYzBmNQogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MwZjQ6IGludDMgCiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgMTAzOiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEAxMDI8SW50MzI+LCA8ZW1w
dHk+LCByOChLQiksIGJjIzg1KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEwNTogICAgICAg
ICAgIDwgMToxMT4JQml0TFNoaWZ0KEAxMDI8SW50MzI+LCBAODE8SW50MzI+LCBJbnQzMnxQdXJl
SW50fFVzZUFzSW50LCBiYyM5MCkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNjMTAzOiBzaGwgJDB4ZSwgJWVjeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAg
MHg0YWNmMzBjM2MxMDY6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2MxMTA6IGNtcCAlcjExLCAlcmN4CiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzExMzogamJlIDB4NGFjZjMwYzNjMTFhCiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzExOTogaW50MyAKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAxMDY6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDEwNTxJbnQz
Mj4sIDxlbXB0eT4sIHI4KExCKSwgYmMjOTApCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTA4
OiAgICAgICAgICAgPCExOjExPglWYWx1ZUFkZChAOTg8SW50MzI+LCBAMTA1PEludDMyPiwgSlN8
TXVzdEdlbnxNaWdodENsb2JiZXJ8UHVyZUludHxVc2VBc0ludCwgYmMjOTQpCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzEyODogYWRkICVlY3gsICVlc2kKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMTJhOiBtb3YgJDB4ZmZmZmZmZmYs
ICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMTM0OiBjbXAg
JXIxMSwgJXJzaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MxMzc6
IGpiZSAweDRhY2YzMGMzYzEzZQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2MxM2Q6IGludDMgCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTA5OiAgc2tpcHBlZCAg
PCAwOi0+CVNldExvY2FsKEAxMDg8SW50MzI+LCA8ZW1wdHk+LCByNyhNQiksIGJjIzk0KQogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgIDExMjogICAgICAgICAgIDwgODoxMj4JR2V0TG9jYWwoQDEx
MSwgSlN8VXNlQXNPdGhlciwgcjEoTkI8QXJyYXk+KSwgYmMjOTkpICBwcmVkaWN0aW5nIEFycmF5
CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzE0YzogbW92IDB4OCgl
cjEzKSwgJXJjeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDExNTogICAgICAgICAgIDwgMzox
ND4JR2V0TG9jYWwoQDExNCwgSlN8VXNlQXNPdGhlcnxVc2VBc0ludCwgYXJnNChPQjxJbnQzMj4p
LCBiYyM5OSkgIHByZWRpY3RpbmcgSW50CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAw
eDRhY2YzMGMzYzE1MDogbW92IC0weDU4KCVyMTMpLCAlZWRpCiAgICA0OTQwLzU5NDk1MzcgICAg
ICAgICAgMjA3OiAgICAgICAgICAgPCAyOjg+CUdldEJ1dHRlcmZseShAMTEyPEFycmF5PiwgU3Rv
cmFnZXxQdXJlSW50LCBiYyM5OSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNjMTU0OiBtb3YgMHg4KCVyY3gpLCAlcjgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAx
MTY6ICAgICAgICAgICA8ITE6MTY+CUdldEJ5VmFsKEAxMTI8QXJyYXk+LCBAMTE1PEludDMyPiwg
QDIwNywgSlN8TXVzdEdlbnxNaWdodENsb2JiZXJ8UHVyZUludHxVc2VBc0ludHxDYW5FeGl0LCBJ
bnQzMk9yaWdpbmFsQXJyYXlJbkJvdW5kc0FzSXMsIGJjIzk5KSAgcHJlZGljdGluZyBJbnQKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMTU4OiBjbXAgLTB4OCglcjgp
LCAlZWRpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzE1YzogamFl
IDB4NGFjZjMwYzNjNjdjCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzE2MjogbW92ICglcjgsJXJkaSw4KSwgJXI5CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzE2NjogdGVzdCAlcjksICVyOQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAg
ICAgICAgMHg0YWNmMzBjM2MxNjk6IGp6IDB4NGFjZjMwYzNjNjlkCiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzE2ZjogY21wICVyMTQsICVyOQogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MxNzI6IGphZSAweDRhY2YzMGMzYzE3OQogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MxNzg6IGludDMgCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgMTE3OiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEAxMTY8SW50
MzI+LCA8ZW1wdHk+LCByOChQQiksIGJjIzk5KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEx
OTogICAgICAgICAgIDwhMToxNj4JVmFsdWVBZGQoQDEwODxJbnQzMj4sIEAxMTY8SW50MzI+LCBK
U3xNdXN0R2VufE1pZ2h0Q2xvYmJlcnxQdXJlSW50fFVzZUFzSW50LCBiYyMxMDUpCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzE4NzogYWRkICVyOWQsICVlc2kKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMThhOiBtb3YgJDB4ZmZmZmZm
ZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMTk0OiBj
bXAgJXIxMSwgJXJzaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2Mx
OTc6IGpiZSAweDRhY2YzMGMzYzE5ZQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2MxOWQ6IGludDMgCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTIwOiAgc2tpcHBl
ZCAgPCAwOi0+CVNldExvY2FsKEAxMTk8SW50MzI+LCA8ZW1wdHk+LCByNyhRQiksIGJjIzEwNSkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMjM6ICAgICAgICAgICA8IDE6MTE+CUdldExvY2Fs
KEAxMjIsIEpTfFB1cmVJbnR8VXNlQXNJbnQsIGFyZzUoUkI8SW50MzI+KSwgYmMjMTEwKSAgcHJl
ZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMWFj
OiBtb3YgLTB4NjAoJXIxMyksICVyOWQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMjQ6ICAg
ICAgICAgICA8ITI6MTE+CVZhbHVlQWRkKEAxMTk8SW50MzI+LCBAMTIzPEludDMyPiwgSlN8TXVz
dEdlbnxNaWdodENsb2JiZXJ8UHVyZUludHxVc2VBc0ludCwgYmMjMTEwKQogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MxYjA6IGFkZCAlcjlkLCAlZXNpCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzFiMzogbW92ICQweGZmZmZmZmZmLCAl
cjExCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzFiZDogY21wICVy
MTEsICVyc2kKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMWMwOiBq
YmUgMHg0YWNmMzBjM2MxYzcKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjMWM2OiBpbnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEyNTogIHNraXBwZWQgIDwg
MDotPglTZXRMb2NhbChAMTI0PEludDMyPiwgPGVtcHR5PiwgcjQoU0IpLCBiYyMxMTApCiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgMTI3OiAgc2tpcHBlZCAgPCAwOi0+CVZhbHVlVG9JbnQzMihA
MTI0PEludDMyPiwgSW50MzJ8UHVyZUludHxVc2VBc0ludHxDYW5FeGl0LCBiYyMxMTUpCiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgMTI4OiAgICAgICAgICAgPCAxOjE2PglKU0NvbnN0YW50KEpT
fFB1cmVJbnR8VXNlQXNJbnQsICQzID0gSW50MzI6IDI4LCBiYyMxMTUpCiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgMTI5OiAgICAgICAgICAgPCAxOjE2PglCaXRSU2hpZnQoQDEyNDxJbnQzMj4s
IEAxMjg8SW50MzI+LCBJbnQzMnxVc2VBc0ludCwgYmMjMTE1KQogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2MxZDU6IG1vdiAlcnNpLCAlcjkKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMWQ4OiBzYXIgJDB4MWMsICVyOWQKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMWRjOiBtb3YgJDB4ZmZmZmZmZmYsICVy
MTEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMWU2OiBjbXAgJXIx
MSwgJXI5CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzFlOTogamJl
IDB4NGFjZjMwYzNjMWYwCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzFlZjogaW50MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxMzA6ICBza2lwcGVkICA8IDA6
LT4JU2V0TG9jYWwoQDEyOTxJbnQzMj4sIDxlbXB0eT4sIHI3KFRCKSwgYmMjMTE1KQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgIDEzMjogIHNraXBwZWQgIDwgMDotPglWYWx1ZVRvSW50MzIoQDk1
PEludDMyPiwgSW50MzJ8UHVyZUludHxVc2VBc0ludHxDYW5FeGl0LCBiYyMxMTkpCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgMTMzOiAgICAgICAgICAgPCAxOjk+CUJpdFJTaGlmdChAOTU8SW50
MzI+LCBAODE8SW50MzI+LCBJbnQzMnxVc2VBc0ludCwgYmMjMTE5KQogICAgNDk0MC81OTQ5NTM3
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MxZmU6IHNhciAkMHhlLCAlZWR4CiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzIwMTogbW92ICQweGZmZmZmZmZmLCAlcjEx
CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzIwYjogY21wICVyMTEs
ICVyZHgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMjBlOiBqYmUg
MHg0YWNmMzBjM2MyMTUKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNj
MjE0OiBpbnQzIAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEzNDogIHNraXBwZWQgIDwgMDot
PglTZXRMb2NhbChAMTMzPEludDMyPiwgPGVtcHR5PiwgcjgoVUIpLCBiYyMxMTkpCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgMTM2OiAgICAgICAgICAgPCExOjk+CVZhbHVlQWRkKEAxMjk8SW50
MzI+LCBAMTMzPEludDMyPiwgSlN8TXVzdEdlbnxNaWdodENsb2JiZXJ8VXNlQXNJbnR8Q2FuRXhp
dCwgYmMjMTIzKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyMjM6
IGFkZCAlZWR4LCAlcjlkCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzIyNjogam8gMHg0YWNmMzBjM2M2YmUKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzNjMjJjOiBtb3YgJDB4ZmZmZmZmZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzNjMjM2OiBjbXAgJXIxMSwgJXI5CiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzIzOTogamJlIDB4NGFjZjMwYzNjMjQwCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzIzZjogaW50MyAKICAgIDQ5NDAvNTk0
OTUzNyAgICAgICAgICAxMzc6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDEzNjxJbnQzMj4s
IDxlbXB0eT4sIHI3KFZCKSwgYmMjMTIzKQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDEzOTog
ICAgICAgICAgIDwhMToxMD4JQXJpdGhNdWwoQDg2PEludDMyPiwgQDgyPEludDMyPiwgTnVtYmVy
fE11c3RHZW58VXNlQXNJbnR8Q2FuRXhpdCwgYmMjMTI4KQogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2MyNGU6IG1vdiAlcmJ4LCAlcmR4CiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzI1MTogaW11bCAlZWF4LCAlZWR4CiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzI1NDogam8gMHg0YWNmMzBjM2M2ZGYKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMjVhOiB0ZXN0ICVlZHgsICVl
ZHgKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMjVjOiBqbnogMHg0
YWNmMzBjM2MyNzQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMjYy
OiBjbXAgJDB4MCwgJWVheAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBj
M2MyNjU6IGpsIDB4NGFjZjMwYzNjNzAwCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAw
eDRhY2YzMGMzYzI2YjogY21wICQweDAsICVlYngKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzNjMjZlOiBqbCAweDRhY2YzMGMzYzcyMQogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2MyNzQ6IG1vdiAkMHhmZmZmZmZmZiwgJXIxMQogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyN2U6IGNtcCAlcjExLCAlcmR4CiAg
ICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzI4MTogamJlIDB4NGFjZjMw
YzNjMjg4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzI4NzogaW50
MyAKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNDA6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9j
YWwoQDEzOTxJbnQzMj4sIDxlbXB0eT4sIHI4KFdCKSwgYmMjMTI4KQogICAgNDk0MC81OTQ5NTM3
ICAgICAgICAgIDE0MjogICAgICAgICAgIDwhMToxMD4JVmFsdWVBZGQoQDEzNjxJbnQzMj4sIEAx
Mzk8SW50MzI+LCBKU3xNdXN0R2VufE1pZ2h0Q2xvYmJlcnxVc2VBc090aGVyfFVzZUFzSW50fENh
bkV4aXQsIGJjIzEzMykKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNj
Mjk2OiBhZGQgJWVkeCwgJXI5ZAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2MyOTk6IGpvIDB4NGFjZjMwYzNjNzQyCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzI5ZjogbW92ICQweGZmZmZmZmZmLCAlcjExCiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzJhOTogY21wICVyMTEsICVyOQogICAgNDk0MC81OTQ5
NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyYWM6IGpiZSAweDRhY2YzMGMzYzJiMwogICAg
NDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyYjI6IGludDMgCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgMTQzOiAgICAgICAgICAgPCEwOi0+CUZsdXNoKEAxMjIsIE11c3RH
ZW4sIGFyZzUoUkI8SW50MzI+KSwgYmMjMTMzKSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0
OTUzNyAgICAgICAgICAxNDQ6ICAgICAgICAgICA8IDI6LT4JU2V0TG9jYWwoQDE0MjxJbnQzMj4s
IGFyZzUoUkI8SW50MzI+KSwgYmMjMTMzKSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMmIzOiBtb3YgJXI5ZCwgLTB4NjAoJXIxMykKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNDY6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDEx
MjxBcnJheT4sIDxlbXB0eT4sIHI3KFlCKSwgYmMjMTM4KQogICAgNDk0MC81OTQ5NTM3ICAgICAg
ICAgIDE0ODogICAgICAgICAgIDwhMjoxMD4JQXJpdGhBZGQoQDExNTxJbnQzMj4sIEA2NzxJbnQz
Mj4sIE51bWJlcnxNdXN0R2VufFVzZUFzT3RoZXJ8VXNlQXNJbnR8Q2FuRXhpdCwgYmMjMTQxKQog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyZDM6IG1vdiAkMHgxNiwg
JWVheAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyZDg6IHhvciAk
MHgxNywgJWVheAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyZGI6
IGFkZCAlZWRpLCAlZWF4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzJkZDogam8gMHg0YWNmMzBjM2M3NjMKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4
NGFjZjMwYzNjMmUzOiBtb3YgJDB4ZmZmZmZmZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzNjMmVkOiBjbXAgJXIxMSwgJXJheAogICAgNDk0MC81OTQ5NTM3
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyZjA6IGpiZSAweDRhY2YzMGMzYzJmNwogICAgNDk0
MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MyZjY6IGludDMgCiAgICA0OTQwLzU5
NDk1MzcgICAgICAgICAgMTQ5OiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEAxMTU8SW50MzI+
LCA8ZW1wdHk+LCByOChaQiksIGJjIzE0MSkKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNTA6
ICAgICAgICAgICA8ITA6LT4JRmx1c2goQDExNCwgTXVzdEdlbiwgYXJnNChPQjxJbnQzMj4pLCBi
YyMxNDEpICBwcmVkaWN0aW5nIEludAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgIDE1MTogIHNr
aXBwZWQgIDwgMDotPglTZXRMb2NhbChAMTQ4PEludDMyPiwgYXJnNChBQzxJbnQzMj4pLCBiYyMx
NDEpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTUyOiAgc2tpcHBlZCAgPCAwOi0+CVNldExv
Y2FsKEAxMTU8SW50MzI+LCA8ZW1wdHk+LCByOChCQyksIGJjIzE0MSkKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAxNTQ6ICAgICAgICAgICA8IDI6LT4JU2V0TG9jYWwoQDE0ODxJbnQzMj4sIGFy
ZzQoT0I8SW50MzI+KSwgYmMjMTQxKSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0OTUzNyAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzNjMmY3OiBtb3YgJWVheCwgLTB4NTgoJXIxMykKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAxNTY6ICBza2lwcGVkICA8IDA6LT4JVmFsdWVUb0ludDMyKEAx
MjQ8SW50MzI+LCBJbnQzMnxQdXJlSW50fFVzZUFzSW50fENhbkV4aXQsIGJjIzE0NCkKICAgIDQ5
NDAvNTk0OTUzNyAgICAgICAgICAxNTc6ICAgICAgICAgICA8IDE6MTA+CUpTQ29uc3RhbnQoSlN8
UHVyZUludHxVc2VBc0ludCwgJDQgPSBJbnQzMjogMjY4NDM1NDU1LCBiYyMxNDQpCiAgICA0OTQw
LzU5NDk1MzcgICAgICAgICAgMTU4OiAgICAgICAgICAgPCAxOjEwPglCaXRBbmQoQDEyNDxJbnQz
Mj4sIEAxNTc8SW50MzI+LCBJbnQzMnxVc2VBc090aGVyLCBiYyMxNDQpCiAgICA0OTQwLzU5NDk1
MzcgICAgICAgICAgICAgICAweDRhY2YzMGMzYzMwOTogYW5kICQweGZmZmZmZmYsICVlc2kKICAg
IDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzBmOiBtb3YgJDB4ZmZmZmZm
ZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzE5OiBj
bXAgJXIxMSwgJXJzaQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2Mz
MWM6IGpiZSAweDRhY2YzMGMzYzMyMwogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2MzMjI6IGludDMgCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgMTU5OiAgc2tpcHBl
ZCAgPCAwOi0+CVNldExvY2FsKEAxNTg8SW50MzI+LCA8ZW1wdHk+LCByOShEQyksIGJjIzE0NCkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNjI6ICAgICAgICAgICA8ITA6LT4JUHV0QnlWYWxB
bGlhcyhAMTEyPEFycmF5PiwgQDExNTxJbnQzMj4sIEAxNTg8SW50MzI+LCBAMjA3LCBNdXN0R2Vu
fFZhckFyZ3N8TWlnaHRDbG9iYmVyfENhbkV4aXQsIEludDMyT3JpZ2luYWxBcnJheUluQm91bmRz
QXNJcywgYmMjMTQ5KQogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2Mz
MzE6IG9yICVyMTQsICVyc2kKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjMzM0OiBtb3YgJXJzaSwgKCVyOCwlcmRpLDgpCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAg
MTY2OiAgICAgICAgICAgPCAxOjg+CUdldExvY2FsKEAyMDEsIEpTfFB1cmVOdW0sIGFyZzYoRUM8
SW50MzI+KSwgYmMjMTU0KSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzNjMzQ2OiBtb3YgLTB4NjgoJXIxMyksICVlYXgKICAgIDQ5NDAvNTk0
OTUzNyAgICAgICAgICAxNjg6ICAgICAgICAgICA8ITI6MTM+CUFyaXRoU3ViKEAxNjY8SW50MzI+
LCBANjc8SW50MzI+LCBOdW1iZXJ8TXVzdEdlbnxVc2VBc090aGVyfENhbkV4aXQsIGJjIzE1NCkK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzRhOiBtb3YgJDB4NDMs
ICVlY3gKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzRmOiB4b3Ig
JDB4NDIsICVlY3gKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzUy
OiBtb3YgJXJheCwgJXJkeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBj
M2MzNTU6IHN1YiAlZWN4LCAlZWR4CiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRh
Y2YzMGMzYzM1Nzogam8gMHg0YWNmMzBjM2M3ODQKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzNjMzVkOiBtb3YgJDB4ZmZmZmZmZmYsICVyMTEKICAgIDQ5NDAvNTk0OTUz
NyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzY3OiBjbXAgJXIxMSwgJXJkeAogICAgNDk0MC81
OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MzNmE6IGpiZSAweDRhY2YzMGMzYzM3MQog
ICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MzNzA6IGludDMgCiAgICA0
OTQwLzU5NDk1MzcgICAgICAgICAgMTY5OiAgICAgICAgICAgPCEwOi0+CUZsdXNoKEAyMDEsIE11
c3RHZW4sIGFyZzYoRUM8SW50MzI+KSwgYmMjMTU0KSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAv
NTk0OTUzNyAgICAgICAgICAxNzA6ICAgICAgICAgICA8IDI6LT4JU2V0TG9jYWwoQDE2ODxJbnQz
Mj4sIGFyZzYoRUM8SW50MzI+KSwgYmMjMTU0KSAgcHJlZGljdGluZyBJbnQKICAgIDQ5NDAvNTk0
OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzcxOiBtb3YgJWVkeCwgLTB4NjgoJXIxMykK
ICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAxNzI6ICAgICAgICAgICA8IDE6OD4JSlNDb25zdGFu
dChKU3xVc2VBc090aGVyLCAkMiA9IEludDMyOiAwLCBiYyMxNTYpCiAgICA0OTQwLzU5NDk1Mzcg
ICAgICAgICAgMTczOiAgICAgICAgICAgPCExOjg+CUNvbXBhcmVHcmVhdGVyRXEoQDE2ODxJbnQz
Mj4sIEAxNzI8SW50MzI+LCBCb29sZWFufE11c3RHZW58TWlnaHRDbG9iYmVyfFVzZUFzT3RoZXIs
IGJjIzE1NikKICAgIDQ5NDAvNTk0OTUzNyAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjMzgzOiBt
b3YgJDB4ZmMsICVyMTFkCiAgICA0OTQwLzU5NDk1MzcgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzM4OTogeG9yICQweGZjLCAlcjExZAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2MzOTA6IGNtcCAlcjExZCwgJWVkeAogICAgNDk0MC81OTQ5NTM3ICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2MzOTM6IGpnZSAweDRhY2YzMGMzYmYyMwogICAgNDk0MC81OTQ5NTM3ICAg
ICAgICAgIDE3NDogICAgICAgICAgIDwhMDotPglCcmFuY2goQDE3MzxCb29sZWFuPiwgTXVzdEdl
bnxDYW5FeGl0LCBUOiMxLCBGOiMzLCBiYyMxNTYpCiAgICAgICAgICAgICAgICAgICAgICAgICBC
bG9jayAjMyAoYmMjMTYwKTogCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWRlY2Vzc29y
czogIzAgIzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9taW5hdGVkIGJ5OiAjMCAjMwog
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb21pbmF0ZXM6ICMzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBoaSBOb2RlczogQDE3Ni0+KEA0NCwgQDE3MCksIEAxNzgtPihANSwgQDE0NCks
IEAxODAtPihANCwgQDE1NCksIEAxODItPihAMywgQDE5OCksIEAxODQtPihAMiwgQDE5NiksIEAx
ODYtPihAMSwgQDc0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2Mz
OTk6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNjMzlkOiBqeiAweDRhY2YzMGMzYzNhNAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2MzYTM6IGludDMgCiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMTc3OiAg
ICAgICAgICAgPCEwOi0+CUZsdXNoKEAxNzYsIE11c3RHZW4sIGFyZzYoRUM8SW50MzI+KSwgYmMj
MTYwKSAgcHJlZGljdGluZyBJbnQKICAgICAzMDUvNTMwODczICAgICAgICAgICAxNzk6ICAgICAg
ICAgICA8ITA6LT4JRmx1c2goQDE3OCwgTXVzdEdlbiwgYXJnNShSQjxJbnQzMj4pLCBiYyMxNjAp
ICBwcmVkaWN0aW5nIEludAogICAgIDMwNS81MzA4NzMgICAgICAgICAgIDE4MTogICAgICAgICAg
IDwhMDotPglGbHVzaChAMTgwLCBNdXN0R2VuLCBhcmc0KE9CPEludDMyPiksIGJjIzE2MCkgIHBy
ZWRpY3RpbmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMTgzOiAgICAgICAgICAgPCEw
Oi0+CUZsdXNoKEAxODIsIE11c3RHZW4sIGFyZzMoSkM8RmluYWw+KSwgYmMjMTYwKSAgcHJlZGlj
dGluZyBGaW5hbAogICAgIDMwNS81MzA4NzMgICAgICAgICAgIDE4NTogICAgICAgICAgIDwhMDot
PglGbHVzaChAMTg0LCBNdXN0R2VuLCBhcmcyKEtDPEludDMyPiksIGJjIzE2MCkgIHByZWRpY3Rp
bmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMTg3OiAgICAgICAgICAgPCEwOi0+CUZs
dXNoKEAxODYsIE11c3RHZW4sIGFyZzEoVTxJbnQzMj4pLCBiYyMxNjApICBwcmVkaWN0aW5nIElu
dAogICAgIDMwNS81MzA4NzMgICAgICAgICAgIDE4ODogICAgICAgICAgIDwgMTo4PglHZXRMb2Nh
bChAMTc4LCBKU3xVc2VBc090aGVyLCBhcmc1KFJCPEludDMyPiksIGJjIzE2MCkgIHByZWRpY3Rp
bmcgSW50CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzNiMjogbW92
IC0weDYwKCVyMTMpLCAlZWF4CiAgICAgMzA1LzUzMDg3MyAgICAgICAgICAgMTg5OiAgICAgICAg
ICAgPCEwOi0+CVJldHVybihAMTg4PEludDMyPiwgTXVzdEdlbiwgYmMjMTYwKQogICAgIDMwNS81
MzA4NzMgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MzYjY6IG9yICVyMTQsICVyYXgKICAgICAz
MDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjM2I5OiBtb3YgLTB4MTAoJXIxMyks
ICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjM2JkOiBtb3Yg
LTB4MjgoJXIxMyksICVyMTMKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjM2MxOiBwdXNoICVyZHgKICAgICAzMDUvNTMwODczICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjM2MyOiByZXQgCiAgICAgICAgICAgICAgICAgICAgICAgICAoRW5kIE9mIE1haW4gUGF0aCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjM2MzOiBtb3YgJXJzcCwg
JXJkaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MzYzY6IG1vdiAl
cjEzLCAweDU4KCVyc3ApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzNjYjogbW92ICQweDAsIC0weDJjKCVyMTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzNkMzogbW92ICQweDEwNTMxZGE2MCwgJXIxMQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MzZGQ6IGNhbGwgJXIxMQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MzZTA6IGptcCAweDRhY2YzMGMzYmQ0ZAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2MzZTU6IHBvcCAlcmN4CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzNlNjogbW92ICVyY3gsIC0weDEwKCVy
MTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzNlYTogbW92ICQw
eDdmOTY5YjIzYTIwMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2MzZjQ6IG1vdiAlcjExLCAtMHg4KCVyMTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDRhY2YzMGMzYzNmODogbW92IC0weDMwKCVyMTMpLCAlZWR4CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzNmYzogY21wICQweDcsICVlZHgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjM2ZmOiBqYWUgMHg0YWNmMzBjM2JkMzMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNDA1OiBtb3YgJXJzcCwg
JXJkaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0MDg6IG1vdiAl
cjEzLCAweDU4KCVyc3ApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzQwZDogbW92ICQweDEsIC0weDJjKCVyMTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzQxNTogbW92ICQweDEwNTMyMGMyMCwgJXIxMQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0MWY6IGNhbGwgJXIxMQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0MjI6IG1vdiAlcmF4LCAlcjEzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzQyNTogam1wIDB4NGFjZjMwYzNiZDMzCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzQyYTogdGVzdCAkMHg3LCAl
cjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0MmU6IGp6IDB4
NGFjZjMwYzNjNDM1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzQz
NDogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNDM1OiBt
b3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDRhY2YzMGMzYzQzZjogbW92ICQweDAsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg0YWNmMzBjM2M0NDY6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0NGI6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNDRmOiBqeiAweDRhY2YzMGMzYzQ1Ngog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0NTU6IGludDMgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzQ1NjogbW92ICQweDdmOTY5YTgw
Y2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0NjA6
IG1vdiAkMHgxLCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjNDY3OiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNjNDZjOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMzYzQ3MDoganogMHg0YWNmMzBjM2M0NzcKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNDc2OiBpbnQzIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2M0Nzc6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNDgxOiBtb3YgJDB4MiwgKCVy
MTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzQ4ODogam1wIDB4
NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzQ4
ZDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2M0OTE6IGp6IDB4NGFjZjMwYzNjNDk4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzQ5NzogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzNjNDk4OiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzRhMjogbW92ICQweDMsICglcjExKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0YTk6IGptcCAweDRhY2Y3MGMwMDk4MAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0YWU6IHRlc3QgJDB4Nywg
JXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNGIyOiBqeiAw
eDRhY2YzMGMzYzRiOQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0
Yjg6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzRiOTog
bW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg0YWNmMzBjM2M0YzM6IG1vdiAkMHg0LCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzNjNGNhOiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNGNmOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzRkMzoganogMHg0YWNmMzBjM2M0ZGEK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNGQ5OiBpbnQzIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M0ZGE6IG1vdiAkMHg3Zjk2OWE4
MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNGU0
OiBtb3YgJDB4NSwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2Yz
MGMzYzRlYjogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzRmMDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2M0ZjQ6IGp6IDB4NGFjZjMwYzNjNGZiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzRmYTogaW50MyAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzNjNGZiOiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzUwNTogbW92ICQweDYsICgl
cjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1MGM6IGptcCAw
eDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1
MTE6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNjNTE1OiBqeiAweDRhY2YzMGMzYzUxYwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2M1MWI6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDRhY2YzMGMzYzUxYzogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1MjY6IG1vdiAkMHg3LCAoJXIxMSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNTJkOiBqbXAgMHg0YWNmNzBjMDA5ODAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNTMyOiB0ZXN0ICQweDcs
ICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzUzNjoganog
MHg0YWNmMzBjM2M1M2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNj
NTNjOiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1M2Q6
IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNjNTQ3OiBtb3YgJDB4OCwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMzYzU0ZTogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzU1MzogdGVzdCAkMHg3LCAlcjEzYgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1NTc6IGp6IDB4NGFjZjMwYzNjNTVl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzU1ZDogaW50MyAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNTVlOiBtb3YgJDB4N2Y5Njlh
ODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzU2
ODogbW92ICQweDksICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2M1NmY6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2M1NzQ6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzNjNTc4OiBqeiAweDRhY2YzMGMzYzU3ZgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1N2U6IGludDMgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzU3ZjogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1ODk6IG1vdiAkMHhhLCAo
JXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNTkwOiBqbXAg
MHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNj
NTk1OiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMzYzU5OToganogMHg0YWNmMzBjM2M1YTAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzNjNTlmOiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg0YWNmMzBjM2M1YTA6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNWFhOiBtb3YgJDB4YiwgKCVyMTEpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzViMTogam1wIDB4NGFjZjcwYzAwOTgw
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzViNjogdGVzdCAkMHg3
LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1YmE6IGp6
IDB4NGFjZjMwYzNjNWMxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzVjMDogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNWMx
OiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDRhY2YzMGMzYzVjYjogbW92ICQweGMsICglcjExKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2M1ZDI6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1ZDc6IHRlc3QgJDB4NywgJXIxM2IKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNWRiOiBqeiAweDRhY2YzMGMzYzVl
MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1ZTE6IGludDMgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzVlMjogbW92ICQweDdmOTY5
YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M1
ZWM6IG1vdiAkMHhkLCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNjNWYzOiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4NGFjZjMwYzNjNWY4OiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDRhY2YzMGMzYzVmYzoganogMHg0YWNmMzBjM2M2MDMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNjAyOiBpbnQzIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2MDM6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNjBkOiBtb3YgJDB4ZSwg
KCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzYxNDogam1w
IDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzYxOTogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2M2MWQ6IGp6IDB4NGFjZjMwYzNjNjI0CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDRhY2YzMGMzYzYyMzogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNjNjI0OiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzYyZTogbW92ICQweGYsICglcjExKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2MzU6IGptcCAweDRhY2Y3MGMwMDk4
MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2M2E6IHRlc3QgJDB4
NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNjNlOiBq
eiAweDRhY2YzMGMzYzY0NQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBj
M2M2NDQ6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzY0
NTogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2M2NGY6IG1vdiAkMHgxMCwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDRhY2YzMGMzYzY1Njogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzY1YjogdGVzdCAkMHg3LCAlcjEzYgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2NWY6IGp6IDB4NGFjZjMwYzNj
NjY2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzY2NTogaW50MyAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNjY2OiBtb3YgJDB4N2Y5
NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzY3MDogbW92ICQweDExLCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
NGFjZjMwYzNjNjc3OiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4NGFjZjMwYzNjNjdjOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzY4MDoganogMHg0YWNmMzBjM2M2ODcKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNjg2OiBpbnQzIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2ODc6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVy
MTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNjkxOiBtb3YgJDB4
MTIsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2OTg6
IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNm
MzBjM2M2OWQ6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNjNmExOiBqeiAweDRhY2YzMGMzYzZhOAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg0YWNmMzBjM2M2YTc6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDRhY2YzMGMzYzZhODogbW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2YjI6IG1vdiAkMHgxMywgKCVyMTEpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzZiOTogam1wIDB4NGFjZjcw
YzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzZiZTogdGVz
dCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2
YzI6IGp6IDB4NGFjZjMwYzNjNmM5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRh
Y2YzMGMzYzZjODogaW50MyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMw
YzNjNmM5OiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMzYzZkMzogbW92ICQweDE0LCAoJXIxMSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNmRhOiBqbXAgMHg0YWNmNzBjMDA5ODAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNmRmOiB0ZXN0ICQweDcsICVyMTNi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzZlMzoganogMHg0YWNm
MzBjM2M2ZWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNmU5OiBp
bnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M2ZWE6IG1vdiAk
MHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNjNmY0OiBtb3YgJDB4MTUsICglcjExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg0YWNmMzBjM2M2ZmI6IGptcCAweDRhY2Y3MGMwMDk4MAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg0YWNmMzBjM2M3MDA6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNzA0OiBqeiAweDRhY2YzMGMzYzcwYgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M3MGE6IGludDMgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzcwYjogbW92ICQweDdmOTY5YTgwY2Uz
MCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M3MTU6IG1v
diAkMHgxNiwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMz
YzcxYzogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDRhY2YzMGMzYzcyMTogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg0YWNmMzBjM2M3MjU6IGp6IDB4NGFjZjMwYzNjNzJjCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDRhY2YzMGMzYzcyYjogaW50MyAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4NGFjZjMwYzNjNzJjOiBtb3YgJDB4N2Y5NjlhODBjZTMwLCAlcjExCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzczNjogbW92ICQweDE3LCAoJXIx
MSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNzNkOiBqbXAgMHg0
YWNmNzBjMDA5ODAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNzQy
OiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2Yz
MGMzYzc0NjoganogMHg0YWNmMzBjM2M3NGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4NGFjZjMwYzNjNzRjOiBpbnQzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0
YWNmMzBjM2M3NGQ6IG1vdiAkMHg3Zjk2OWE4MGNlMzAsICVyMTEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NGFjZjMwYzNjNzU3OiBtb3YgJDB4MTgsICglcjExKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M3NWU6IGptcCAweDRhY2Y3MGMwMDk4MAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M3NjM6IHRlc3QgJDB4Nywg
JXIxM2IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNzY3OiBqeiAw
eDRhY2YzMGMzYzc2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M3
NmQ6IGludDMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzc2ZTog
bW92ICQweDdmOTY5YTgwY2UzMCwgJXIxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg0YWNmMzBjM2M3Nzg6IG1vdiAkMHgxOSwgKCVyMTEpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDRhY2YzMGMzYzc3Zjogam1wIDB4NGFjZjcwYzAwOTgwCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzc4NDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg0YWNmMzBjM2M3ODg6IGp6IDB4NGFjZjMwYzNjNzhm
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzc4ZTogaW50MyAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFjZjMwYzNjNzhmOiBtb3YgJDB4N2Y5Njlh
ODBjZTMwLCAlcjExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhY2YzMGMzYzc5
OTogbW92ICQweDFhLCAoJXIxMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGFj
ZjMwYzNjN2EwOiBqbXAgMHg0YWNmNzBjMDA5ODAKPiBxdWl0CltwaXpsb0B3YXJ0b290aCBPcGVu
U291cmNlXSAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177128</attachid>
            <date>2012-12-01 21:41:09 -0800</date>
            <delta_ts>2012-12-02 01:09:20 -0800</delta_ts>
            <desc>it does things</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>210424</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NSBA
QAorMjAxMi0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHByb2ZpbGluZyB0byBKU0MsIGNh
bGxlZCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBUaGlzIHdpbGwgY291bnQKKyAg
ICAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgYnl0ZWNvZGUgZXhlY3V0ZXMgaW4gdmFy
aW91cyBlbmdpbmVzLCBhbmQgd2lsbCByZWNvcmQgYm90aAorICAgICAgICB0aGUgY291bnRzIGFu
ZCBhbGwgZGlzYXNzZW1ibHkgYW5kIGJ5dGVjb2RlIGR1bXBzLCBpbnRvIGEgZGF0YWJhc2UgdGhh
dCBjYW4gYmUgYXQgYW55CisgICAgICAgIHRpbWUgdHVybmVkIGludG8gZWl0aGVyIGEgSlMgb2Jq
ZWN0IHVzaW5nIGFueSBnbG9iYWwgb2JqZWN0IG9yIGdsb2JhbCBkYXRhIG9mIHlvdXIKKyAgICAg
ICAgY2hvaWNlLCBvciBjYW4gYmUgdHVybmVkIGludG8gYSBKU09OIHN0cmluZywgb3Igc2F2ZWQg
dG8gYSBmaWxlLgorICAgICAgICAKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHVzZSBvZiB0
aGlzIGlzIHRoZSBuZXcgJy1wIDxmaWxlPicgZmxhZyB0byB0aGUganNjIGNvbW1hbmQtbGluZS4K
KyAgICAgICAgCisgICAgICAgIFRoZSBQQlAgaXMgYWx3YXlzIGNvbXBpbGVkIGluIGFuZCBub3Jt
YWxseSBpbmN1cnMgbm8gZXhlY3V0aW9uIHRpbWUgY29zdCwgYnV0IGlzIG9ubHkKKyAgICAgICAg
YWN0aXZhdGVkIHdoZW4geW91IGNyZWF0ZSBhIFBCUDo6RGF0YWJhc2UgYW5kIGluc3RhbGwgaXQg
aW4KKyAgICAgICAgSlNHbG9iYWxEYXRhOjptX3BlckJ5dGVjb2RlUHJvZmlsZXIuIEZyb20gdGhh
dCBwb2ludCBvbiwgYWxsIGNvZGUgYmxvY2tzIHdpbGwgYmUKKyAgICAgICAgY29tcGlsZWQgYWxv
bmcgd2l0aCBkaXNhc3NlbWJseSBhbmQgYnl0ZWNvZGUgZHVtcHMgc3RvcmVkIGludG8gdGhlIFBC
UDo6RGF0YWJhc2UsIGFuZAorICAgICAgICBhbGwgY29kZSBibG9ja3Mgd2lsbCBoYXZlIGV4ZWN1
dGlvbiBjb3VudHMsIHdoaWNoIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuCisgICAg
ICAgIFRoZSBkYXRhYmFzZSB3aWxsIGNvbnRpbnVlIHRvIGtlZXAgaW5mb3JtYXRpb24gYWJvdXQg
Y29kZSBibG9ja3MgYWxpdmUgZXZlbiBhZnRlciB0aGV5CisgICAgICAgIGFyZSBvdGhlcndpc2Ug
R0MnZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY3VycmVudGx5IHN0aWxsIGhhcyBzb21lIGds
aXRjaGVzLCBsaWtlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBjb3VudHMgZXhlY3V0aW9ucworICAg
ICAgICBpbiB0aGUgSklUcy4gRG9pbmcgZXhlY3V0aW9uIGNvdW50aW5nIGluIHRoZSBMTEludCBt
aWdodCByZXF1aXJlIGEgYml0IG9mIGEgcmV0aGluaworICAgICAgICBhYm91dCBob3cgdGhlIGNv
dW50aW5nIGlzIGV4cHJlc3NlZCAtIGN1cnJlbnRseSBpdCBpcyBpbXBsaWNpdCBpbiBieXRlY29k
ZSwgc28gdGhlcmUKKyAgICAgICAgaXMgbm8gZWFzeSB3YXkgdG8gInR1cm4gaXQgb24iIGluIHRo
ZSBMTEludC4gQWxzbywgcmlnaHQgbm93IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uCisgICAgICAg
IHJlY29yZGVkIGFib3V0IE9TUiBleGl0cyBvciBvdXQtb2YtbGluZSBzdHVicy4gQnV0LCBldmVu
IHNvLCBpdCdzIHF1aXRlIGNvb2wsIGFuZAorICAgICAgICBnaXZlcyB5b3UgYSBwZWVrIGludG8g
d2hhdCBKU0MgaXMgZG9pbmcgdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGJlIHBvc3NpYmxlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpwcmludFVuYXJ5T3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50QmluYXJ5T3Ap
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50Q29uZGl0aW9uYWxKdW1wKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEdldEJ5SWRPcCk6CisgICAgICAgIChKU0M6OmR1bXBT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpkdW1wQ2hhaW4pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpwcmludENhbGxPcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRQdXRCeUlkT3Ap
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxvY2spOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZU9yaWdpbi5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6YmFzZWxp
bmVDb2RlQmxvY2spOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3Jp
Z2luLmg6CisgICAgICAgIChJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNz
ZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1bXApOgorICAg
ICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OnJlcG9ydFRvUHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6ZHVtcEhlYWRlcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjphcHBlbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkRpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QpOgorICAgICAgICAqIGRmZy9ERkdEaXNh
c3NlbWJsZXIuaDoKKyAgICAgICAgKERpc2Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6OkRGRzo6
RGlzYXNzZW1ibGVyOjpEdW1wZWRPcDo6RHVtcGVkT3ApOgorICAgICAgICAoRHVtcGVkT3ApOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Okdy
YXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcENvZGVPcmlnaW4pOgorICAgICAg
ICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKEdyYXBoKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpKSVRDb21waWxlcik6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
Ojpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFeGVjdXRpb25Db3VudGVyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpleGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OkpJVCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6Cisg
ICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fz
c2VtYmxlcjo6ZHVtcCk6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Q
cm9maWxlcik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6
OmR1bXBIZWFkZXIpOgorICAgICAgICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6OmZpcnN0U2xvd0xh
YmVsKToKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wVmVjdG9yRm9ySW5zdHJ1
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rp
b25zKToKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpyZXBvcnRJbnN0cnVjdGlvbnMp
OgorICAgICAgICAqIGppdC9KSVREaXNhc3NlbWJsZXIuaDoKKyAgICAgICAgKEpJVERpc2Fzc2Vt
Ymxlcik6CisgICAgICAgIChEdW1wZWRPcCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
KENvbW1hbmRMaW5lOjpDb21tYW5kTGluZSk6CisgICAgICAgIChDb21tYW5kTGluZSk6CisgICAg
ICAgIChDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMpOgorICAgICAgICAoanNjbWFpbik6Cisg
ICAgICAgICogcHJvZmlsZXIvUEJQQnl0ZWNvZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6
CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGU6OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVy
L1BCUEJ5dGVjb2RlLmg6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZTo6Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQQlA6OkJ5dGVjb2RlOjpieXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRl
Y29kZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpQQlA6OmdldEJ5dGVjb2RlSW5kZXhG
b3JCeXRlY29kZSk6CisgICAgICAgICogcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcDogQWRkZWQu
CisgICAgICAgIChQQlApOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6Qnl0ZWNvZGVz
KToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6On5CeXRlY29kZXMpOgorICAgICAgICAo
SlNDOjpQQlA6OkJ5dGVjb2Rlczo6aW5kZXhGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpT
Qzo6UEJQOjpCeXRlY29kZXM6OmZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpQQlA6
OkJ5dGVjb2Rlczo6ZHVtcCk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjp0b0pTKToK
KyAgICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZXMuaDogQWRkZWQuCisgICAgICAgIChQQlAp
OgorICAgICAgICAoQnl0ZWNvZGVzKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OmFw
cGVuZCk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjppZCk6CisgICAgICAgIChKU0M6
OlBCUDo6Qnl0ZWNvZGVzOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OnNp
emUpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6YXQpOgorICAgICAgICAqIHByb2Zp
bGVyL1BCUENvbXBpbGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAo
SlNDOjpQQlA6OkNvbXBpbGF0aW9uOjpDb21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlBCUDo6
Q29tcGlsYXRpb246On5Db21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsYXRp
b246OmFkZERlc2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxhdGlvbjo6ZXhl
Y3V0aW9uQ291bnRlckZvcik6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsYXRpb246OnRvSlMp
OgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAo
UEJQKToKKyAgICAgICAgKENvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxh
dGlvbjo6Ynl0ZWNvZGVzKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxhdGlvbjo6a2luZCk6
CisgICAgICAgICogcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNwcDogQWRkZWQuCisgICAg
ICAgIChXVEYpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBwcm9m
aWxlci9QQlBDb21waWxhdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcDogQWRk
ZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGVkQnl0ZWNvZGU6
OkNvbXBpbGVkQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGVkQnl0ZWNvZGU6
On5Db21waWxlZEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxlZEJ5dGVjb2Rl
Ojp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmg6IEFkZGVk
LgorICAgICAgICAoUEJQKToKKyAgICAgICAgKENvbXBpbGVkQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpQQlA6OkNvbXBpbGVkQnl0ZWNvZGU6Om9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6
UEJQOjpDb21waWxlZEJ5dGVjb2RlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcHJvZmlsZXIv
UEJQRGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBC
UDo6RGF0YWJhc2U6OkRhdGFiYXNlKToKKyAgICAgICAgKEpTQzo6UEJQOjpEYXRhYmFzZTo6fkRh
dGFiYXNlKToKKyAgICAgICAgKEpTQzo6UEJQOjpEYXRhYmFzZTo6YWRkQnl0ZWNvZGVzKToKKyAg
ICAgICAgKEpTQzo6UEJQOjpEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKToKKyAgICAgICAg
KEpTQzo6UEJQOjpEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpQ
QlA6OkRhdGFiYXNlOjpuZXdDb21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlBCUDo6RGF0YWJh
c2U6OnRvSlMpOgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjp0b0pTT04pOgorICAgICAg
ICAoSlNDOjpQQlA6OkRhdGFiYXNlOjpzYXZlKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBEYXRh
YmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChEYXRhYmFzZSk6CisgICAg
ICAgICogcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oOiBBZGRlZC4KKyAgICAgICAgKFBC
UCk6CisgICAgICAgIChFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpTQzo6UEJQOjpFeGVj
dXRpb25Db3VudGVyOjpFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpTQzo6UEJQOjpFeGVj
dXRpb25Db3VudGVyOjphZGRyZXNzKToKKyAgICAgICAgKEpTQzo6UEJQOjpFeGVjdXRpb25Db3Vu
dGVyOjpjb3VudCk6CisgICAgICAgICogcHJvZmlsZXIvUEJQT3JpZ2luLmNwcDogQWRkZWQuCisg
ICAgICAgIChQQlApOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6T3JpZ2luKToKKyAgICAg
ICAgKEpTQzo6UEJQOjpPcmlnaW46OmR1bXApOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6
dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQT3JpZ2luLmg6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKFBCUCk6CisgICAgICAgIChPcmlnaW4pOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpbjo6T3JpZ2luKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46Om9wZXJhdG9y
ISk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpieXRlY29kZXMpOgorICAgICAgICAoSlND
OjpQQlA6Ok9yaWdpbjo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2lu
OjpvcGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6aGFzaCk6CisgICAgICAgIChKU0M6OlBCUDo6T3Jp
Z2luOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2lu
SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luSGFzaDo6ZXF1YWwpOgorICAg
ICAgICAoT3JpZ2luSGFzaCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHByb2ZpbGVyL1BC
UE9yaWdpblN0YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrOjpPcmlnaW5TdGFjayk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2lu
U3RhY2s6On5PcmlnaW5TdGFjayk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OmFw
cGVuZCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0YWNrOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5TdGFjazo6ZHVtcCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OnRvSlMp
OgorICAgICAgICAqIHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmg6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKFBCUCk6CisgICAgICAgIChPcmlnaW5TdGFjayk6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luU3RhY2s6Ok9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5TdGFjazo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6
c2l6ZSk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OmZyb21Cb3R0b20pOgorICAg
ICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0YWNrOjpmcm9tVG9wKToKKyAgICAgICAgKEpTQzo6UEJQ
OjpPcmlnaW5TdGFjazo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3Rh
Y2tIYXNoOjplcXVhbCk6CisgICAgICAgIChPcmlnaW5TdGFja0hhc2gpOgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRpb25IYXJuZXNzLmg6CisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRp
b24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6On5KU0dsb2JhbERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoSlNDKToKKwog
MjAxMi0xMS0zMCAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KIAogICAg
ICAgICBbUXRdIFVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgTWFjIGJ1aWxkIGZpeCBhZnRlciByMTM2
MjMyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV9pbnRlcmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCBtX2R1
bXAoZmFsc2UpCiAgICAgICAgICwgbV9leGl0Q29kZShmYWxzZSkKKyAgICAgICAgLCBtX3Byb2Zp
bGUoZmFsc2UpCiAgICAgewogICAgICAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAg
ICB9CkBAIC0xMzUsNiArMTM2LDggQEAgcHVibGljOgogICAgIGJvb2wgbV9leGl0Q29kZTsKICAg
ICBWZWN0b3I8U2NyaXB0PiBtX3NjcmlwdHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1bWVu
dHM7CisgICAgYm9vbCBtX3Byb2ZpbGU7CisgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAK
ICAgICB2b2lkIHBhcnNlQXJndW1lbnRzKGludCwgY2hhcioqKTsKIH07CkBAIC02NDksNiArNjUy
LDcgQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbgogI2lmIEhBVkUo
U0lHTkFMX0gpCiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1zICAgICAgICAgSW5zdGFsbHMgc2ln
bmFsIGhhbmRsZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIChVbml4IHBsYXRmb3JtcyBvbmx5KVxu
Iik7CiAjZW5kaWYKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXAgPGZpbGU+ICBPdXRwdXRzIHBy
b2ZpbGluZyBkYXRhIHRvIGEgZmlsZVxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC14ICAg
ICAgICAgT3V0cHV0IGV4aXQgY29kZSBiZWZvcmUgdGVybWluYXRpbmdcbiIpOwogICAgIGZwcmlu
dGYoc3RkZXJyLCAiXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1vcHRpb25zICAgICAg
ICAgICAgICAgICAgRHVtcHMgYWxsIEpTQyBWTSBvcHRpb25zIGFuZCBleGl0c1xuIik7CkBAIC02
ODcsNiArNjkxLDEzIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmcK
ICAgICAgICAgICAgIG1fZHVtcCA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQorICAgICAgICBpZiAoIXN0cmNtcChhcmcsICItcCIpKSB7CisgICAgICAgICAgICBpZiAo
KytpID09IGFyZ2MpCisgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudCgpOworICAg
ICAgICAgICAgbV9wcm9maWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQg
PSBhcmd2W2ldOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYg
KCFzdHJjbXAoYXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgICAgICAgICBz
aWduYWwoU0lHSUxMLCBfZXhpdCk7CkBAIC03NTAsNiArNzYxLDkgQEAgaW50IGpzY21haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIEpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbERhdGEuZ2V0
KCkpOwogICAgIGludCByZXN1bHQ7CiAKKyAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUpCisgICAg
ICAgIGdsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IGFkb3B0UHRyKG5ldyBQQlA6
OkRhdGFiYXNlKCpnbG9iYWxEYXRhKSk7CisgICAgCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50
cyk7CiAgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXApOwogICAgIGlmIChvcHRpb25zLm1faW50ZXJh
Y3RpdmUgJiYgc3VjY2VzcykKQEAgLTc1OSw2ICs3NzMsMTEgQEAgaW50IGpzY21haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogCiAgICAgaWYgKG9wdGlvbnMubV9leGl0Q29kZSkKICAgICAgICAg
cHJpbnRmKCJqc2MgZXhpdGluZyAlZFxuIiwgcmVzdWx0KTsKKyAgICAKKyAgICBpZiAob3B0aW9u
cy5tX3Byb2ZpbGUpIHsKKyAgICAgICAgaWYgKCFnbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPnNhdmUob3B0aW9ucy5tX3Byb2ZpbGVyT3V0cHV0LnV0ZjgoKS5kYXRhKCkpKQorICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3Qgc2F2ZSBwcm9maWxlciBvdXRwdXQu
XG4iKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzEsNiArMjcxLDI3IEBACiAJCTBGRjQyNzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVz
LmNwcCAqLzsgfTsKIAkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxT
dGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGNzE2OEMxNUEzQjIz
NTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlP
ZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTkzMTY2QUQzNDcwMDBGNUJB
MyAvKiBQQlBCeXRlY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRjcyOUFEMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5MjE2
NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuY3BwICovOyB9OworCQkwRkY3MjlBRTE2NkFE
MzVDMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRl
Y29kZXMuY3BwICovOyB9OworCQkwRkY3MjlBRjE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29tcGls
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCAqLzsgfTsKKwkJ
MEZGNzI5QjAxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5ODE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjExNjZB
RDM1QzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8q
IFBCUENvbXBpbGVkQnl0ZWNvZGUuY3BwICovOyB9OworCQkwRkY3MjlCMjE2NkFEMzVDMDAwRjVC
QTMgLyogUEJQRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmNwcCAq
LzsgfTsKKwkJMEZGNzI5QjMxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5RjE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQT3JpZ2luLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjQxNjZBRDM1QzAwMEY1
QkEzIC8qIFBCUE9yaWdpblN0YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRjcyOUExMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFj
ay5jcHAgKi87IH07CisJCTBGRjcyOUI1MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NzQyRjYzMERE
MTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjYxNjZBRDM1QzAw
MEY1QkEzIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQ1NzQwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVH
ZW5lcmF0b3IuY3BwICovOyB9OworCQkwRkY3MjlCNzE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmls
ZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTVBQjgzNTQwREE0M0I0NDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCAqLzsgfTsKKwkJMEZG
NzI5QjgxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzJFMERBNDJDQUQwMEJDODNGMyAvKiBQ
cm9maWxlci5jcHAgKi87IH07CisJCTBGRjcyOUI5MTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBCeXRl
Y29kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjcyOTk1MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCQTE2NkFEMzYwMDAwRjVC
QTMgLyogUEJQQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjcyOTk3MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcy
OUJCMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTk5MTY2QUQzNDcwMDBGNUJB
MyAvKiBQQlBDb21waWxhdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQ29tcGls
ZWRCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNzI5OUIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRDE2
NkFEMzYwMDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlEMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBEYXRh
YmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGRjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5RTE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcyOUJGMTY2QUQzNjAwMDBGNUJBMyAvKiBQ
QlBPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRjcyOUEwMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlDMDE2NkFEMzYwMDAwRjVC
QTMgLyogUEJQT3JpZ2luU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjcyOUEyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjky
MkQ0MTRGNDZCNDEwMDQxQTI0RSAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CiAJCTBGRkZDOTU3MTRF
RjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuY3BwICovOyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZD
OTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NTEsMTEgKzU3Miw3IEBACiAJCTkzMzA0
MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDNGRTgwRTZBNzJCNTAwNzg2RTZBIC8q
IFNtYWxsU3RyaW5ncy5jcHAgKi87IH07CiAJCTkzMzVGMjREMTJFNjc2NUIwMDJCNTU1MyAvKiBT
dHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMzQ1QTg3MTJEODM4QzQwMDMwMkJFMyAvKiBTdHJpbmdSZWN1cnNp
b25DaGVja2VyLmNwcCAqLzsgfTsKIAkJOTUzNEFBRkIwRTVCN0E5NjAwQjhBNDVCIC8qIEpTUHJv
ZmlsZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NTJDNjNBQzBFNDc3N0Q2MDBDMTM5MzYgLyogSlNQcm9maWxlclByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5NTc0MkY2NTBE
RDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NTc0MkY2MzBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5j
cHAgKi87IH07Ci0JCTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODMyRTBEQTQy
Q0FEMDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwICovOyB9OwotCQk5NUFCODM1NjBEQTQzQzMwMDBC
QzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTVBQjgzNTQwREE0M0I0NDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNw
cCAqLzsgfTsKLQkJOTVDRDQ1NzYwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQ1
NzQwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwICovOyB9OwotCQk5NUNE
NDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQ1NzUwRTFDNEZERDAwODUzNThF
IC8qIFByb2ZpbGVHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9
OyB9OworCQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQ1NzUwRTFD
NEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUUzQkMwNTBFMUFFNjgyMDBCMkQxQzEgLyog
Q2FsbElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1RTNCQzA0MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1RjZFNjk1MEU1
QjVGOTcwMDkxRTg2MCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTk4OEJBOTBFNDc3QkVDMDBEMjhENEQgLyog
SlNQcm9maWxlclByaXZhdGUuY3BwICovOyB9OwogCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcg
LyogTGFiZWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLzsgfTsKQEAg
LTEwNzksNiArMTA5NiwyMyBAQAogCQkwRkY0Mjc2RTE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2
ZUdsb2JhbFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZXNvbHZlR2xvYmFsU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZG
NDI3NkYxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb2x2ZUdsb2JhbFN0YXR1cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlP
ZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlPZmZzZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTIxNjZBRDM0NzAwMEY1QkEz
IC8qIFBCUEJ5dGVjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFBCUEJ5dGVjb2RlLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTMxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5
dGVjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUEJ5dGVjb2RlLmg7
IHBhdGggPSBwcm9maWxlci9QQlBCeXRlY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkY3Mjk5NDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUEJ5dGVjb2Rlcy5jcHA7IHBhdGggPSBw
cm9maWxlci9QQlBCeXRlY29kZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFBCUEJ5dGVjb2Rlcy5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0
ZWNvZGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk2MTY2QUQzNDcw
MDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBQQlBDb21waWxhdGlvbi5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBDb21waWxh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk3MTY2QUQzNDcw
MDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQQlBDb21waWxhdGlvbi5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEzIC8q
IFBCUENvbXBpbGF0aW9uS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBQQlBDb21waWxhdGlvbktpbmQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsYXRp
b25LaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTkxNjZBRDM0
NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBQQlBDb21waWxhdGlvbktpbmQuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUENvbXBp
bGF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5QTE2NkFE
MzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBDb21waWxlZEJ5dGVjb2RlLmNwcDsgcGF0aCA9IHByb2Zp
bGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5QjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBDb21waWxlZEJ5dGVjb2RlLmg7IHBhdGgg
PSBwcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBEYXRhYmFzZS5jcHA7IHBhdGggPSBw
cm9maWxlci9QQlBEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RjcyOTlEMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQQlBEYXRhYmFzZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQRGF0YWJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUUxNjZBRDM0NzAwMEY1
QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gUEJQRXhlY3V0aW9uQ291bnRlci5oOyBwYXRoID0gcHJvZmlsZXIvUEJQRXhlY3V0aW9u
Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5RjE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFBCUE9yaWdpbi5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBPcmlnaW4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUE9yaWdpbi5oOyBw
YXRoID0gcHJvZmlsZXIvUEJQT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRjcyOUExMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBPcmlnaW5TdGFjay5jcHA7IHBhdGggPSBw
cm9maWxlci9QQlBPcmlnaW5TdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRjcyOUEyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBPcmlnaW5TdGFjay5oOyBwYXRoID0gcHJvZmlsZXIv
UEJQT3JpZ2luU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGOTIyQ0Yx
NEY0NkIxMzAwNDFBMjRFIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkwRkZGQzk0QjE0RUY5
MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8q
IERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBo
YXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1MTYsNiArMjU1MCwyMyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk5NUUzQkMwNDBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCAq
LywKKwkJCQkwRkY3Mjk5MjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuY3BwICovLAor
CQkJCTBGRjcyOTkzMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5oICovLAorCQkJCTBG
RjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuY3BwICovLAorCQkJCTBGRjcy
OTk1MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuaCAqLywKKwkJCQkwRkY3Mjk5NjE2
NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uY3BwICovLAorCQkJCTBGRjcyOTk3MTY2
QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5oICovLAorCQkJCTBGRjcyOTk4MTY2QUQz
NDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuY3BwICovLAorCQkJCTBGRjcyOTk5MTY2
QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuaCAqLywKKwkJCQkwRkY3Mjk5QTE2
NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAgKi8sCisJCQkJMEZGNzI5
OUIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCAqLywKKwkJCQkwRkY3
Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuY3BwICovLAorCQkJCTBGRjcyOTlE
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5oICovLAorCQkJCTBGRjcyOTlFMTY2QUQz
NDcwMDBGNUJBMyAvKiBQQlBFeGVjdXRpb25Db3VudGVyLmggKi8sCisJCQkJMEZGNzI5OUYxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgKi8sCisJCQkJMEZGNzI5QTAxNjZBRDM0NzAw
MEY1QkEzIC8qIFBCUE9yaWdpbi5oICovLAorCQkJCTBGRjcyOUExMTY2QUQzNDcwMDBGNUJBMyAv
KiBQQlBPcmlnaW5TdGFjay5jcHAgKi8sCisJCQkJMEZGNzI5QTIxNjZBRDM0NzAwMEY1QkEzIC8q
IFBCUE9yaWdpblN0YWNrLmggKi8sCiAJCQkJOTU3NDJGNjMwREQxMUY1QTAwMDkxN0ZCIC8qIFBy
b2ZpbGUuY3BwICovLAogCQkJCTk1NzQyRjY0MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmgg
Ki8sCiAJCQkJOTVDRDQ1NzQwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3Bw
ICovLApAQCAtMzA3Nyw2ICszMTI4LDE1IEBACiAJCQkJMEZEREJGQjYxNjY2RUVEQTAwQzU1RkVG
IC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5
NDQxMTY2NzYzMzIwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjk2RUJCMzE2Njc2RUY2MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRjcyOUE1MTY2QUQzNTEwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QjkxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUEJ5dGVj
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFBC
UENvbXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCQjE2NkFEMzYwMDAwRjVC
QTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCQzE2
NkFEMzYwMDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291bnRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkYxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9yaWdp
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9y
aWdpblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM1MzQsMTAgKzM1OTQsNiBAQAogCQkJCTE0
OEYyMUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMwNTJDMzQwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk5NTc0MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk5NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdl
bmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMg
LyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTVBQjgzNDIwREE0MzIyNTAw
QkM4M0YzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RkI2MEE0MTAzRjdE
QzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ0NjlERTcxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0NDY5REU4MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eVNsb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zNjY1LDYgKzM3MjEsMTggQEAKIAkJCQkwRjhGOTQ0MjE2Njc2
MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDQx
NjY3NjM1NDAwRDYxOTcxIC8qIEpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0
NDYxNjY3NjRGMTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZGNzI5QUQxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGRjcyOUFFMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUIwMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBD
b21waWxhdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjExNjZBRDM1QzAw
MEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZG
NzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRjcyOUIzMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEZGNzI5QjQxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGRjcyOUI1MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUI2MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxl
R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUI3MTY2QUQzNUMwMDBGNUJB
MyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCODE2NkFEMzVD
MDAwRjVCQTMgLyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTM2Mjc2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMiwxNiArMTEyLDE2IEBAIHN0YXRpYyBDU3RyaW5nIGlkTmFtZShpbnQgaWQw
LCBjb25zdCBJZGUKICAgICByZXR1cm4gbWFrZVN0cmluZyhpZGVudC5zdHJpbmcoKSwgIihAaWQi
LCBTdHJpbmc6Om51bWJlcihpZDApLCAiKSIpLnV0ZjgoKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGludCBsb2NhdGlvbikKK3ZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShQcmludFN0cmVhbSYgb3V0LCBpbnQg
bG9jYXRpb24pCiB7CiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQogICAgIGNvbnN0IGNo
YXIqIGNvbW1lbnQgPSBjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQobG9jYXRpb24pOwogICAgIGlm
IChjb21tZW50KQotICAgICAgICBkYXRhTG9nRigiXHRcdCA7ICVzIiwgY29tbWVudCk7CisgICAg
ICAgIG91dC5wcmludGYoIlx0XHQgOyAlcyIsIGNvbW1lbnQpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwogI2VuZGlmCi0gICAgZGF0YUxvZ0YoIlxuIik7CisgICAgb3V0LnBy
aW50KCJcbiIpOwogfQogCiBDU3RyaW5nIENvZGVCbG9jazo6cmVnaXN0ZXJOYW1lKEV4ZWNTdGF0
ZSogZXhlYywgaW50IHIpIGNvbnN0CkBAIC0xODIsMzMgKzE4MiwzMyBAQCBORVZFUl9JTkxJTkUg
c3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnSG9vCiAgICAgcmV0dXJuICIiOwogfQogCi12b2lkIENv
ZGVCbG9jazo6cHJpbnRVbmFyeU9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmlu
dFVuYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24s
IGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQogewogICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogCi0g
ICAgZGF0YUxvZ0YoIlslNGRdICVzXHRcdCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7Ci0g
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgIG91dC5wcmlu
dGYoIlslNGRdICVzXHRcdCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiB9CiAKLXZvaWQgQ29kZUJs
b2NrOjpwcmludEJpbmFyeU9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJ
bnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludEJp
bmFyeU9wKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBp
bnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdFx0ICVz
LCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRh
KCkpOwotICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICBv
dXQucHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludENvbmRp
dGlvbmFsSnVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5z
dHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJs
b2NrOjpwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0
aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZ0YoIlslNGRd
ICVzXHRcdCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNcdFx0
ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRHZXRC
eUlkT3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYg
aXQpCit2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgRXhl
Y1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpCiB7CiAg
ICAgY29uc3QgY2hhciogb3A7CiAgICAgc3dpdGNoIChleGVjLT5pbnRlcnByZXRlcigpLT5nZXRP
cGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CkBAIC0yNjEsMjggKzI2MSwyOCBAQCB2b2lkIENvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlCiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlkMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2dGKCJbJTRkXSAlc1x0ICVzLCAlcywgJXMiLCBs
b2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OworICAgIG91dC5wcmludGYoIlslNGRdICVzXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CiAgICAgaXQgKz0g
NTsKIH0KIAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkgLy8gdW51c2VkIGluIHNv
bWUgY29uZmlndXJhdGlvbnMKLXN0YXRpYyB2b2lkIGR1bXBTdHJ1Y3R1cmUoY29uc3QgY2hhciog
bmFtZSwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRlbnRpZmllciYg
aWRlbnQpCitzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IGNoYXIqIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElkZW50
aWZpZXImIGlkZW50KQogewogICAgIGlmICghc3RydWN0dXJlKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgZGF0YUxvZ0YoIiVzID0gJXAiLCBuYW1lLCBzdHJ1Y3R1cmUpOworICAgIG91dC5w
cmludGYoIiVzID0gJXAiLCBuYW1lLCBzdHJ1Y3R1cmUpOwogICAgIAogICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQpOwog
ICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKLSAgICAgICAgZGF0YUxvZ0YoIiAob2Zm
c2V0ID0gJWQpIiwgb2Zmc2V0KTsKKyAgICAgICAgb3V0LnByaW50ZigiIChvZmZzZXQgPSAlZCki
LCBvZmZzZXQpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKSAvLyB1bnVzZWQgd2hlbiBu
b3QgRU5BQkxFKEpJVCksIGxlYWRpbmcgdG8gc2lsbHkgd2FybmluZ3MKLXN0YXRpYyB2b2lkIGR1
bXBDaGFpbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgSWRlbnRpZmll
ciYgaWRlbnQpCitzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIElkZW50aWZpZXImIGlkZW50KQogewot
ICAgIGRhdGFMb2dGKCJjaGFpbiA9ICVwOiBbIiwgY2hhaW4pOworICAgIG91dC5wcmludGYoImNo
YWluID0gJXA6IFsiLCBjaGFpbik7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgZm9yIChX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY3VycmVudFN0cnVjdHVyZSA9IGNoYWluLT5oZWFkKCk7
CiAgICAgICAgICAqY3VycmVudFN0cnVjdHVyZTsKQEAgLTI5MSwxMyArMjkxLDEzIEBAIHN0YXRp
YyB2b2lkIGR1bXBDaGFpbihFeGVjU3RhdGUqIGV4ZWMsIFMKICAgICAgICAgICAgIGZpcnN0ID0g
ZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAgICAg
ICBkdW1wU3RydWN0dXJlKCJzdHJ1Y3QiLCBleGVjLCBjdXJyZW50U3RydWN0dXJlLT5nZXQoKSwg
aWRlbnQpOworICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGV4ZWMsIGN1cnJl
bnRTdHJ1Y3R1cmUtPmdldCgpLCBpZGVudCk7CiAgICAgfQotICAgIGRhdGFMb2dGKCJdIik7Cisg
ICAgb3V0LnByaW50ZigiXSIpOwogfQogI2VuZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludEdl
dEJ5SWRDYWNoZVN0YXR1cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKK3ZvaWQgQ29k
ZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGludCBsb2NhdGlvbikKIHsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24g
PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTMwNywyMSArMzA3LDIx
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cygKICAgICAKICNpZiBF
TkFCTEUoTExJTlQpCiAgICAgaWYgKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9nZXRfYXJyYXlfbGVuZ3RoKQotICAgICAgICBk
YXRhTG9nRigiIGxsaW50KGFycmF5X2xlbmd0aCkiKTsKKyAgICAgICAgb3V0LnByaW50ZigiIGxs
aW50KGFycmF5X2xlbmd0aCkiKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgZGF0YUxv
Z0YoIiBsbGludCgiKTsKLSAgICAgICAgZHVtcFN0cnVjdHVyZSgic3RydWN0IiwgZXhlYywgc3Ry
dWN0dXJlLCBpZGVudCk7Ci0gICAgICAgIGRhdGFMb2dGKCIpIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiBsbGludCgiKTsKKyAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBleGVj
LCBzdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAobnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5m
b3MoKSkgewotICAgICAgICBkYXRhTG9nRigiIGppdCgiKTsKKyAgICAgICAgb3V0LnByaW50Zigi
IGppdCgiKTsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1Yklu
Zm8obG9jYXRpb24pOwogICAgICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgICAgICBk
YXRhTG9nRigibm90IHNlZW4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIm5vdCBzZWVuIik7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlID0g
MDsKICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gMDsKQEAgLTMz
MSw0MCArMzMxLDQwIEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cygK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7
CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICAgICAgICAgICAg
ICBkYXRhTG9nRigic2VsZiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInNlbGYiKTsK
ICAgICAgICAgICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5i
YXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOgotICAgICAgICAgICAgICAgIGRhdGFM
b2dGKCJwcm90byIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInByb3RvIik7CiAgICAg
ICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmJhc2VP
YmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlU3RydWN0dXJl
ID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLmdldCgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2No
YWluOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJjaGFpbiIpOworICAgICAgICAgICAgICAg
IG91dC5wcmludGYoImNoYWluIik7CiAgICAgICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0
dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAg
ICAgICAgICAgY2hhaW4gPSBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9z
ZWxmX2xpc3Q6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoInNlbGZfbGlzdCIpOworICAgICAg
ICAgICAgICAgIG91dC5wcmludGYoInNlbGZfbGlzdCIpOwogICAgICAgICAgICAgICAgIHN0cnVj
dHVyZUxpc3QgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0OwogICAg
ICAgICAgICAgICAgIGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlzdFNp
emU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRf
YnlfaWRfcHJvdG9fbGlzdDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigicHJvdG9fbGlzdCIp
OworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInByb3RvX2xpc3QiKTsKICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmVMaXN0ID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVy
ZUxpc3Q7CiAgICAgICAgICAgICAgICAgbGlzdFNpemUgPSBzdHViSW5mby51LmdldEJ5SWRQcm90
b0xpc3QubGlzdFNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IGFjY2Vzc191bnNldDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigidW5zZXQiKTsKKyAgICAg
ICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM6Ci0gICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoImdlbmVyaWMiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJnZW5l
cmljIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19n
ZXRfYXJyYXlfbGVuZ3RoOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJhcnJheV9sZW5ndGgi
KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJhcnJheV9sZW5ndGgiKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9zdHJpbmdfbGVuZ3Ro
OgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJzdHJpbmdfbGVuZ3RoIik7CisgICAgICAgICAg
ICAgICAgb3V0LnByaW50Zigic3RyaW5nX2xlbmd0aCIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTM3MiwxMjUgKzM3MiwxMjYgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJ
ZENhY2hlU3RhdHVzKAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBp
ZiAoYmFzZVN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAg
ICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUoInN0cnVjdCIsIGV4ZWMsIGJhc2VTdHJ1Y3R1cmUs
IGlkZW50KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAgICAgICAgICAg
ICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgZXhlYywgYmFzZVN0cnVjdHVyZSwgaWRl
bnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocHJvdG90
eXBlU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7Ci0gICAgICAg
ICAgICAgICAgZHVtcFN0cnVjdHVyZSgicHJvdG90eXBlU3RydWN0IiwgZXhlYywgYmFzZVN0cnVj
dHVyZSwgaWRlbnQpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAg
ICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJwcm90b3R5cGVTdHJ1Y3QiLCBleGVjLCBiYXNl
U3RydWN0dXJlLCBpZGVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChjaGFpbikgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAgICAg
ICAgICAgICAgIGR1bXBDaGFpbihleGVjLCBjaGFpbiwgaWRlbnQpOworICAgICAgICAgICAgICAg
IG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICAgICAgZHVtcENoYWluKG91dCwgZXhlYywg
Y2hhaW4sIGlkZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKHN0cnVjdHVyZUxpc3QpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCBsaXN0ID0g
JXA6IFsiLCBzdHJ1Y3R1cmVMaXN0KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsIGxp
c3QgPSAlcDogWyIsIHN0cnVjdHVyZUxpc3QpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoaSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiKCIpOwotICAgICAgICAgICAgICAgICAgICBkdW1wU3RydWN0dXJlKCJiYXNl
IiwgZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS5iYXNlLmdldCgpLCBpZGVudCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCIoIik7CisgICAgICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0
LCAiYmFzZSIsIGV4ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0uYmFzZS5nZXQoKSwgaWRlbnQp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlTGlzdC0+bGlzdFtpXS5pc0NoYWlu
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlTGlzdC0+bGlzdFtpXS51
LmNoYWluLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwg
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcENoYWluKGV4ZWMsIHN0cnVjdHVy
ZUxpc3QtPmxpc3RbaV0udS5jaGFpbi5nZXQoKSwgaWRlbnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHVtcENoYWluKG91dCwgZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS51LmNoYWluLmdldCgp
LCBpZGVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlTGlzdC0+bGlz
dFtpXS51LnByb3RvLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0YoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZSgicHJv
dG8iLCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLnUucHJvdG8uZ2V0KCksIGlkZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAicHJvdG8iLCBleGVjLCBzdHJ1
Y3R1cmVMaXN0LT5saXN0W2ldLnUucHJvdG8uZ2V0KCksIGlkZW50KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nRigiKSIpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJdIik7CisgICAgICAgICAg
ICAgICAgb3V0LnByaW50ZigiXSIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IGRhdGFMb2dGKCIpIik7CisgICAgICAgIG91dC5wcmludGYoIikiKTsKICAgICB9CiAjZW5kaWYK
IH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50Q2FsbE9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxv
Y2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1w
TW9kZSBjYWNoZUR1bXBNb2RlKQordm9pZCBDb2RlQmxvY2s6OnByaW50Q2FsbE9wKFByaW50U3Ry
ZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlKQogewog
ICAgIGludCBmdW5jID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGFyZ0NvdW50ID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgZGF0YUxvZ0YoIlslNGRdICVzXHQgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCBvcCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmMpLmRhdGEoKSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0
KTsKKyAgICBvdXQucHJpbnRmKCJbJTRkXSAlc1x0ICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgb3As
IHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jKS5kYXRhKCksIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNl
dCk7CiAgICAgaWYgKGNhY2hlRHVtcE1vZGUgPT0gRHVtcENhY2hlcykgewogI2lmIEVOQUJMRShM
TElOVCkKICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGl0WzFdLnUu
Y2FsbExpbmtJbmZvOwogICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZSkg
ewotICAgICAgICAgICAgZGF0YUxvZ0YoIiBsbGludCglcCwgZXhlYyAlcCkiLAotICAgICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpLAotICAgICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLT5leGVjdXRhYmxlKCkpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigKKyAgICAgICAgICAgICAgICAiIGxsaW50KCVwLCBleGVj
ICVwKSIsCisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQo
KSwKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLT5leGVjdXRh
YmxlKCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgbGxpbnQobm90
IHNldCkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiBsbGludChub3Qgc2V0KSIpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgaWYgKG51bWJlck9mQ2FsbExpbmtJbmZvcygp
KSB7CiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBnZXRDYWxsTGlua0luZm8obG9j
YXRpb24pLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwogICAgICAgICAgICAgaWYgKHRhcmdldCkKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nRigiIGppdCglcCwgZXhlYyAlcCkiLCB0YXJnZXQsIHRhcmdl
dC0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCVwLCBl
eGVjICVwKSIsIHRhcmdldCwgdGFyZ2V0LT5leGVjdXRhYmxlKCkpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgaml0KG5vdCBzZXQpIik7CisgICAgICAgICAg
ICAgICAgb3V0LnByaW50ZigiIGppdChub3Qgc2V0KSIpOwogICAgICAgICB9CiAjZW5kaWYKICAg
ICB9Ci0gICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgIGl0ICs9IDI7
CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqIGV4ZWMsIGlu
dCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApCit2b2lk
IENvZGVCbG9jazo6cHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBl
eGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9w
KQogewogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBpZDAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBkYXRh
TG9nRigiWyU0ZF0gJXNcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNcdCAlcywgJXMs
ICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1l
KGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpKTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICBpdCArPSA1OwogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmUoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgaW50IG9wZXJhbmQpCit2b2lk
IENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciog
bmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgaW50IG9wZXJhbmQpCiB7CiAgICAgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25PZmZzZXQgPSB2UEMgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IGRhdGFMb2dGKCIgIFslNGRdICVzOiAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsIG5hbWUsIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyh2UENbb3BlcmFuZF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRh
KCkpOworICAgIG91dC5wcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNl
dCwgbmFtZSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1tvcGVyYW5kXS51LnN0cnVjdHVyZSku
dXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29u
c3QgSW5zdHJ1Y3Rpb24qIHZQQykKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykKIHsKICAgICBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOwogICAgIHVuc2lnbmVk
IGluc3RydWN0aW9uT2Zmc2V0ID0gdlBDIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKIAogICAg
IGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlf
aWQpKSB7Ci0gICAgICAgIHByaW50U3RydWN0dXJlKCJnZXRfYnlfaWQiLCB2UEMsIDQpOworICAg
ICAgICBwcmludFN0cnVjdHVyZShvdXQsICJnZXRfYnlfaWQiLCB2UEMsIDQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9nZXRfYnlfaWRfc2VsZikpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1cmUoImdl
dF9ieV9pZF9zZWxmIiwgdlBDLCA0KTsKKyAgICAgICAgcHJpbnRTdHJ1Y3R1cmUob3V0LCAiZ2V0
X2J5X2lkX3NlbGYiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJv
dG8pKSB7Ci0gICAgICAgIGRhdGFMb2dGKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0
XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1
XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG91dC5wcmludGYoIiAgWyU0
ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfcHJvdG8iLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7Ci0gICAgICAgIGRh
dGFMb2dGKCIgIFslNGRdICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVj
dHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgb3V0LnByaW50ZigiICBbJTRkXSAl
czogJXMsICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJwdXRfYnlfaWRfdHJhbnNpdGlv
biIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRh
KCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRh
KCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbikudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikpIHsKLSAgICAg
ICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJn
ZXRfYnlfaWRfY2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJl
KS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJl
Q2hhaW4pLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnRmKCIgIFslNGRdICVzOiAl
cywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKSkgewotICAgICAgICBwcmludFN0cnVjdHVyZSgi
cHV0X2J5X2lkIiwgdlBDLCA0KTsKKyAgICAgICAgcHJpbnRTdHJ1Y3R1cmUob3V0LCAicHV0X2J5
X2lkIiwgdlBDLCA0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7
Ci0gICAgICAgIHByaW50U3RydWN0dXJlKCJwdXRfYnlfaWRfcmVwbGFjZSIsIHZQQywgNCk7Cisg
ICAgICAgIHByaW50U3RydWN0dXJlKG91dCwgInB1dF9ieV9pZF9yZXBsYWNlIiwgdlBDLCA0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDk4LDcgKzQ5OSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4KICAgICBBU1NFUlQodlBDWzBdLnUub3Bjb2Rl
ID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1sw
XS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9nZW5lcmlj
KSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9jYWxsKSB8
fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9jYWxsX2V2YWwp
IHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2NvbnN0cnVj
dCkpOwogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKK3ZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKIHsKICAgICAvLyBXZSBvbmx5IHVzZSB0
aGUgRXhlY1N0YXRlKiBmb3IgdGhpbmdzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgbGVhZCB0byBKUyBl
eGVjdXRpb24sCiAgICAgLy8gbGlrZSBjb252ZXJ0aW5nIGEgSlNTdHJpbmcgdG8gYSBTdHJpbmcu
IEhlbmNlIHRoZSBnbG9iYWxFeGVjIGlzIGFwcHJvcHJpYXRlLgpAQCAtNTA5LDkyICs1MTAsOTIg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5pbnRl
cnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQogICAg
ICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBkYXRhTG9nKCp0aGlzKTsKLSAgICBkYXRh
TG9nRigKKyAgICBvdXQucHJpbnQoKnRoaXMpOworICAgIG91dC5wcmludGYoCiAgICAgICAgICI6
ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxl
ZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkpLAogICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24p
KSwKICAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1W
YXJzKTsKICAgICBpZiAoc3ltYm9sVGFibGUoKSAmJiBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlQ291
bnQoKSkKLSAgICAgICAgZGF0YUxvZ0YoIjsgJWQgY2FwdHVyZWQgdmFyKHMpIiwgc3ltYm9sVGFi
bGUoKS0+Y2FwdHVyZUNvdW50KCkpOworICAgICAgICBvdXQucHJpbnRmKCI7ICVkIGNhcHR1cmVk
IHZhcihzKSIsIHN5bWJvbFRhYmxlKCktPmNhcHR1cmVDb3VudCgpKTsKICAgICBpZiAodXNlc0Fy
Z3VtZW50cygpKSB7Ci0gICAgICAgIGRhdGFMb2dGKAorICAgICAgICBvdXQucHJpbnRmKAogICAg
ICAgICAgICAgIjsgdXNlcyBhcmd1bWVudHMsIGluIHIlZCwgciVkIiwKICAgICAgICAgICAgIGFy
Z3VtZW50c1JlZ2lzdGVyKCksCiAgICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoYXJndW1lbnRzUmVnaXN0ZXIoKSkpOwogICAgIH0KICAgICBpZiAobmVlZHNGdWxsU2NvcGVD
aGFpbigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBkYXRhTG9nRigi
OyBhY3RpdmF0aW9uIGluIHIlZCIsIGFjdGl2YXRpb25SZWdpc3RlcigpKTsKLSAgICBkYXRhTG9n
RigiXG5cbiIpOworICAgICAgICBvdXQucHJpbnRmKCI7IGFjdGl2YXRpb24gaW4gciVkIiwgYWN0
aXZhdGlvblJlZ2lzdGVyKCkpOworICAgIG91dC5wcmludGYoIlxuXG4iKTsKIAogICAgIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwogICAgIGZvciAoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZHVtcEJ5
dGVjb2RlKGV4ZWMsIGJlZ2luLCBpdCk7CisgICAgICAgIGR1bXBCeXRlY29kZShvdXQsIGV4ZWMs
IGJlZ2luLCBpdCk7CiAKICAgICBpZiAoIW1faWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGRhdGFMb2dGKCJcbklkZW50aWZpZXJzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxu
SWRlbnRpZmllcnM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICBkYXRhTG9nRigiICBpZCV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpKSwgbV9pZGVudGlmaWVyc1tpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiAgaWQldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSks
IG1faWRlbnRpZmllcnNbaV0uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAr
K2k7CiAgICAgICAgIH0gd2hpbGUgKGkgIT0gbV9pZGVudGlmaWVycy5zaXplKCkpOwogICAgIH0K
IAogICAgIGlmICghbV9jb25zdGFudFJlZ2lzdGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGF0
YUxvZ0YoIlxuQ29uc3RhbnRzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuQ29uc3RhbnRz
OlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAgICAg
ZGF0YUxvZ0YoIiAgIGsldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHZhbHVl
VG9Tb3VyY2VTdHJpbmcoZXhlYywgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5nZXQoKSkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICBrJXUgPSAlc1xuIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGkpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIG1fY29uc3RhbnRS
ZWdpc3RlcnNbaV0uZ2V0KCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgKytpOwogICAg
ICAgICB9IHdoaWxlIChpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCkpOwogICAgIH0KIAog
ICAgIGlmIChzaXplX3QgY291bnQgPSBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZSZWdFeHBzKCkp
IHsKLSAgICAgICAgZGF0YUxvZ0YoIlxubV9yZWdleHBzOlxuIik7CisgICAgICAgIG91dC5wcmlu
dGYoIlxubV9yZWdleHBzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZG8g
ewotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgcmUldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaSksIHJlZ2V4cFRvU291cmNlU3RyaW5nKG1fdW5saW5rZWRDb2RlLT5yZWdleHAoaSkp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICByZSV1ID0gJXNcbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV91bmxpbmtl
ZENvZGUtPnJlZ2V4cChpKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICArK2k7CiAgICAg
ICAgIH0gd2hpbGUgKGkgPCBjb3VudCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBp
ZiAoIW1fc3RydWN0dXJlU3R1YkluZm9zLmlzRW1wdHkoKSkKLSAgICAgICAgZGF0YUxvZ0YoIlxu
U3RydWN0dXJlczpcbiIpOworICAgICAgICBvdXQucHJpbnRmKCJcblN0cnVjdHVyZXM6XG4iKTsK
ICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJcbkV4Y2VwdGlvbiBIYW5k
bGVyczpcbiIpOworICAgICAgICBvdXQucHJpbnRmKCJcbkV4Y2VwdGlvbiBIYW5kbGVyczpcbiIp
OwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAgICAgZGF0
YUxvZ0YoIlx0ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6IFslNGRdIHRhcmdldDogWyU0ZF0gfVxu
IiwgaSArIDEsIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uc3RhcnQsIG1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5kLCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlv
bkhhbmRsZXJzW2ldLnRhcmdldCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJcdCAlZDogeyBz
dGFydDogWyU0ZF0gZW5kOiBbJTRkXSB0YXJnZXQ6IFslNGRdIH1cbiIsIGkgKyAxLCBtX3JhcmVE
YXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldLnN0YXJ0LCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlv
bkhhbmRsZXJzW2ldLmVuZCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS50YXJn
ZXQpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+
bV9leGNlcHRpb25IYW5kbGVycy5zaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAobV9yYXJl
RGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHko
KSkgewotICAgICAgICBkYXRhTG9nRigiSW1tZWRpYXRlIFN3aXRjaCBKdW1wIFRhYmxlczpcbiIp
OworICAgICAgICBvdXQucHJpbnRmKCJJbW1lZGlhdGUgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7
CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgJTFkID0g
e1xuIiwgaSk7CiAgICAgICAgICAgICBpbnQgZW50cnkgPSAwOwogICAgICAgICAgICAgVmVjdG9y
PGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3
aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQoKTsKICAgICAgICAgICAgIGZvciAo
VmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yYXJlRGF0YS0+bV9pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlciwgKytlbnRyeSkgewogICAgICAgICAgICAgICAgIGlmICghKml0ZXIpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJcdFx0
JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1w
VGFibGVzW2ldLm1pbiwgKml0ZXIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHQl
NGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBU
YWJsZXNbaV0ubWluLCAqaXRlcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkYXRhTG9n
RigiICAgICAgfVxuIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICAgICB9XG4iKTsKICAg
ICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1faW1tZWRp
YXRlU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAobV9yYXJl
RGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHko
KSkgewotICAgICAgICBkYXRhTG9nRigiXG5DaGFyYWN0ZXIgU3dpdGNoIEp1bXAgVGFibGVzOlxu
Iik7CisgICAgICAgIG91dC5wcmludGYoIlxuQ2hhcmFjdGVyIFN3aXRjaCBKdW1wIFRhYmxlczpc
biIpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAgICAg
ZGF0YUxvZ0YoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICUx
ZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgaW50IGVudHJ5ID0gMDsKICAgICAgICAgICAgIFZl
Y3RvcjxpbnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0YS0+bV9jaGFyYWN0
ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuZW5kKCk7CiAgICAgICAgICAgICBm
b3IgKFZlY3RvcjxpbnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmFyZURhdGEtPm1f
Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIsICsrZW50cnkpIHsKQEAgLTYwMiw5NiArNjAzLDk2IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoISgoaSArIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNo
SnVtcFRhYmxlc1tpXS5taW4pICYgfjB4RkZGRikpOwogICAgICAgICAgICAgICAgIFVDaGFyIGNo
ID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGVudHJ5ICsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0
Y2hKdW1wVGFibGVzW2ldLm1pbik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlx0XHRcIiVz
XCIgPT4gJTA0ZFxuIiwgU3RyaW5nKCZjaCwgMSkudXRmOCgpLmRhdGEoKSwgKml0ZXIpOwotICAg
ICAgICB9Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAgICAgfVxuIik7CisgICAgICAgICAgICAg
ICAgb3V0LnByaW50ZigiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoJmNoLCAxKS51dGY4
KCkuZGF0YSgpLCAqaXRlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1f
cmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLmlzRW1wdHkoKSkgewotICAgICAgICBkYXRhTG9nRigiXG5TdHJpbmcgU3dpdGNoIEp1
bXAgVGFibGVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuU3RyaW5nIFN3aXRjaCBKdW1w
IFRhYmxlczpcbiIpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgZGF0YUxvZ0YoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJp
bmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgZm9yIChT
dHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBpdGVyID0g
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmJlZ2lu
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlx0XHRc
IiVzXCIgPT4gJTA0ZFxuIiwgU3RyaW5nKGl0ZXItPmtleSkudXRmOCgpLmRhdGEoKSwgaXRlci0+
dmFsdWUuYnJhbmNoT2Zmc2V0KTsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICB9XG4iKTsK
KyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFN0cmlu
ZyhpdGVyLT5rZXkpLnV0ZjgoKS5kYXRhKCksIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsKICAg
ICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5z
aXplKCkpOwogICAgIH0KIAotICAgIGRhdGFMb2dGKCJcbiIpOworICAgIG91dC5wcmludGYoIlxu
Iik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpCit2b2lkIENv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KQogewogICAg
IGludCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47CiAgICAgc3dpdGNoIChleGVjLT5pbnRlcnByZXRl
cigpLT5nZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CiAgICAgICAgIGNhc2Ugb3BfZW50ZXI6
IHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBlbnRlciIsIGxvY2F0aW9uKTsKLSAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIlslNGRdIGVudGVyIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hY3RpdmF0aW9uOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJbJTRkXSBjcmVhdGVfYWN0aXZhdGlvbiAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjcmVhdGVfYWN0
aXZhdGlvbiAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2Fy
Z3VtZW50czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY3JlYXRlX2FyZ3VtZW50c1x0ICVzIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlsl
NGRdIGNyZWF0ZV9hcmd1bWVudHNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShv
dXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfaW5pdF9sYXp5X3JlZzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIGluaXRfbGF6eV9yZWdcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2NhbGxlZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gb3BfZ2V0X2NhbGxlZSAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIG9wX2dldF9jYWxsZWUgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjcmVhdGVfdGhp
cyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGNy
ZWF0ZV90aGlzICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnZlcnRfdGhpczogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0g
Y29udmVydF90aGlzXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY29udmVydF90aGlzXHQgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICArK2l0
OyAvLyBTa2lwIHZhbHVlIHByb2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG5ld19vYmplY3RcdCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX25ld19hcnJheTogewogICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiWyU0ZF0gbmV3X2FycmF5XHQgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd2KS5kYXRhKCksIGFy
Z2MpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2FycmF5XHQgJXMsICVzLCAlZCIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCBhcmd2KS5kYXRhKCksIGFyZ2MpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICArK2l0OyAvLyBTa2lwIGFy
cmF5IGFsbG9jYXRpb24gcHJvZmlsZS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZTogewogICAgICAgICAgICAgaW50IGRz
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxlbmd0aCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG5ld19hcnJheV93aXRoX3Np
emVcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgbGVuZ3RoKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gbmV3X2FycmF5X3dpdGhfc2l6ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBsZW5ndGgpLmRhdGEoKSk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY5OSwxNDkgKzcwMCwxNDkgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IGRz
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X2FycmF5X2J1ZmZlclx0ICVzLCAlZCwgJWQiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBhcmdjKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19hcnJheV9idWZmZXJcdCAlcywgJWQsICVkIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgYXJndiwgYXJnYyk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
ICAgICAgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByZTAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBu
ZXdfcmVnZXhwXHQgJXMsICIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfcmVnZXhwXHQgJXMsICIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAo
cjAgPj0wICYmIHIwIDwgKGludCltX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZSZWdFeHBzKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVzIiwgcmVnZXhwTmFtZShyZTAsIHJlZ2V4cChyZTAp
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnZXhwTmFtZShy
ZTAsIHJlZ2V4cChyZTApKS5kYXRhKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7Ci0gICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50ZigiYmFkX3JlZ2V4cCglZCkiLCByZTApOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX21vdjogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBtb3ZcdFx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkp
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbW92XHRcdCAlcywgJXMiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9u
b3Q6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJub3Qi
KTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5v
dCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9lcTog
ewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJlcSIpOwor
ICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImVxIik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2VxX251bGw6
IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJlcV9udWxs
Iik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJl
cV9udWxsIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X25lcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJu
ZXEiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJuZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
bmVxX251bGw6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQs
ICJuZXFfbnVsbCIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAibmVxX251bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3Bfc3RyaWN0ZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywg
bG9jYXRpb24sIGl0LCAic3RyaWN0ZXEiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzdHJpY3RlcSIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uc3RyaWN0ZXE6IHsKLSAgICAgICAgICAgIHByaW50
QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibnN0cmljdGVxIik7CisgICAgICAgICAgICBw
cmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibnN0cmljdGVxIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xlc3M6IHsKLSAgICAg
ICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibGVzcyIpOworICAgICAg
ICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxlc3MiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbGVzc2VxOiB7Ci0g
ICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxlc3NlcSIpOwor
ICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxlc3Nl
cSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9ncmVh
dGVyOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdy
ZWF0ZXIiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJncmVhdGVyIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2dyZWF0ZXJlcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJncmVhdGVyZXEiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJncmVhdGVyZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHJlX2luY1x0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3ByZV9kZWM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHByZV9kZWNcdFx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIHByZV9kZWNcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wb3N0X2luYzogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInBvc3RfaW5jIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJwb3N0X2luYyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9wb3N0X2RlYzogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9w
KGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfZGVjIik7CisgICAgICAgICAgICBwcmludFVuYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwb3N0X2RlYyIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90b19qc251bWJlcjogewotICAgICAgICAg
ICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRvX2pzbnVtYmVyIik7CisgICAg
ICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0b19qc251bWJl
ciIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZWdh
dGU6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJuZWdh
dGUiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
Im5lZ2F0ZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9hZGQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
YWRkIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAiYWRkIik7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9tdWw6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhl
YywgbG9jYXRpb24sIGl0LCAibXVsIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAibXVsIik7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kaXY6IHsKLSAgICAgICAgICAg
IHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiZGl2Iik7CisgICAgICAgICAgICBw
cmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGl2Iik7CiAgICAgICAgICAg
ICArK2l0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9t
b2Q6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAibW9k
Iik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
bW9kIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N1
YjogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJzdWIi
KTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJz
dWIiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2xzaGlmdDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJsc2hpZnQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJsc2hpZnQiKTsKICAgICAgICAgICAgIGJyZWFrOyAgICAg
ICAgICAgIAogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcnNoaWZ0OiB7Ci0gICAgICAgICAg
ICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJzaGlmdCIpOworICAgICAgICAg
ICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJzaGlmdCIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF91cnNoaWZ0OiB7Ci0g
ICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInVyc2hpZnQiKTsK
KyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ1cnNo
aWZ0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Jp
dGFuZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJi
aXRhbmQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJiaXRhbmQiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2JpdHhvcjogewotICAgICAgICAgICAgcHJpbnRCaW5h
cnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJiaXR4b3IiKTsKKyAgICAgICAgICAgIHByaW50Qmlu
YXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJiaXR4b3IiKTsKICAgICAgICAgICAgICsr
aXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2JpdG9y
OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdG9y
Iik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
Yml0b3IiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtODUwLDQ4ICs4NTEsNDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVj
U3RhdGUqIAogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjaGVja19o
YXNfaW5zdGFuY2VcdFx0ICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY2hlY2tfaGFzX2luc3RhbmNlXHRcdCAlcywgJXMs
ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nRigiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIlslNGRdIGluc3RhbmNlb2ZcdFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfdHlwZW9mOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAidHlwZW9mIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0eXBlb2YiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkOiB7Ci0gICAgICAgICAgICBw
cmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfdW5kZWZpbmVkIik7CisgICAgICAg
ICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc191bmRlZmluZWQi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfYm9v
bGVhbjogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlz
X2Jvb2xlYW4iKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImlzX2Jvb2xlYW4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfaXNfbnVtYmVyOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywg
bG9jYXRpb24sIGl0LCAiaXNfbnVtYmVyIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfc3RyaW5nOiB7Ci0gICAgICAgICAgICBwcmlu
dFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfc3RyaW5nIik7CisgICAgICAgICAgICBw
cmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19zdHJpbmciKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfb2JqZWN0OiB7Ci0g
ICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfb2JqZWN0Iik7
CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19v
YmplY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
aXNfZnVuY3Rpb246IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJpc19mdW5jdGlvbiIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAiaXNfZnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfaW46IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhl
YywgbG9jYXRpb24sIGl0LCAiaW4iKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9wdXRfdG9fYmFzZV92YXJpYWJsZToKQEAgLTkwMCw4ICs5MDEsOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBp
bnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByZXNvbHZlSW5mbyA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHB1dF90b19iYXNlXHQgJXMsICVz
LCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgaWRO
YW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB2
YWx1ZSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBw
dXRfdG9fYmFzZVx0ICVzLCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCBiYXNlKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgdmFsdWUpLmRhdGEoKSwgcmVzb2x2ZUluZm8pOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmU6CkBAIC05MTMs
MTQgKzkxNCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBp
ZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByZXNvbHZlSW5mbyA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHJlc29sdmVcdFx0
ICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlk
TmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSByZXNvbHZlXHRcdCAlcywgJXMsICVkIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJz
W2lkMF0pLmRhdGEoKSwgcmVzb2x2ZUluZm8pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbml0X2dsb2JhbF9jb25z
dF9ub3A6IHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbml0X2dsb2JhbF9jb25zdF9u
b3BcdCIsIGxvY2F0aW9uKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGluaXRfZ2xvYmFs
X2NvbnN0X25vcFx0IiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAg
ICAgaXQrKzsKICAgICAgICAgICAgIGl0Kys7CkBAIC05MzAsOCArOTMxLDggQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICBjYXNlIG9wX2luaXRfZ2xv
YmFsX2NvbnN0OiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVy
UG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbml0X2ds
b2JhbF9jb25zdFx0IGclZCglcCksICVzIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5k
UmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGluaXRf
Z2xvYmFsX2NvbnN0XHQgZyVkKCVwKSwgJXMiLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZp
bmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAg
ICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTM5LDggKzk0MCw4IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgY2FzZSBvcF9pbml0X2ds
b2JhbF9jb25zdF9jaGVjazogewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBy
ZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVyOwogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0g
aW5pdF9nbG9iYWxfY29uc3RfY2hlY2tcdCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBtX2dsb2Jh
bE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2lu
dGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCJbJTRkXSBpbml0X2dsb2JhbF9jb25zdF9jaGVja1x0IGclZCglcCksICVzIiwgbG9jYXRpb24s
IG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdp
c3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAg
ICAgaXQrKzsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk1NSwx
NiArOTU2LDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAg
ICAgICAgICAgIGludCBpc1N0cmljdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHJlc29sdmVJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcHV0
VG9CYXNlSW5mbyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlsl
NGRdIHJlc29sdmVfYmFzZSVzXHQgJXMsICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgaXNTdHJpY3Qg
PyAiX3N0cmljdCIgOiAiIiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShp
ZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbywgcHV0VG9CYXNlSW5m
byk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSByZXNvbHZlX2Jhc2Ulc1x0ICVzLCAlcywg
JWQsICVkIiwgbG9jYXRpb24sIGlzU3RyaWN0ID8gIl9zdHJpY3QiIDogIiIsIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEo
KSwgcmVzb2x2ZUluZm8sIHB1dFRvQmFzZUluZm8pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9lbnN1cmVfcHJvcGVy
dHlfZXhpc3RzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJbJTRkXSBlbnN1cmVfcHJvcGVydHlfZXhpc3RzXHQgJXMsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBlbnN1cmVfcHJvcGVydHlf
ZXhpc3RzXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX2Jhc2U6IHsK
QEAgLTk3Myw4ICs5NzQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0
ZSogCiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcmVzb2x2ZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBw
dXRUb0Jhc2VJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigi
WyU0ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlcywgJWQsICVkIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBw
dXRUb0Jhc2VJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVfd2l0aF9i
YXNlICVzLCAlcywgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbywgcHV0VG9CYXNlSW5mbyk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtOTgzLDgg
Kzk4NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHJlc29sdmVJbmZvID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcmVzb2x2ZV93aXRoX3Ro
aXMgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2ZUluZm8pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gcmVzb2x2ZV93aXRoX3RoaXMgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2ZUluZm8pOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMDIsNTAg
KzEwMDMsNTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAg
ICAgICBjYXNlIG9wX2dldF9ieV9pZF9nZW5lcmljOgogICAgICAgICBjYXNlIG9wX2dldF9hcnJh
eV9sZW5ndGg6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3N0cmluZ19sZW5ndGg6IHsKLSAgICAgICAg
ICAgIHByaW50R2V0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgICAgICBwcmlu
dEdldEJ5SWRDYWNoZVN0YXR1cyhleGVjLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBwcmludEdldEJ5
SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCk7CisgICAgICAgICAgICBwcmludEdldEJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGV4ZWMsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xlbmd0aDogewotICAgICAg
ICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9hcmd1bWVudHNfbGVu
Z3RoIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJnZXRfYXJndW1lbnRzX2xlbmd0aCIpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7Ci0gICAgICAg
ICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWQiKTsKKyAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9vdXRfb2ZfbGluZTogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBwcmlu
dFB1dEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGlu
ZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfcmVwbGFjZTogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRp
b24sIGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b246IHsKLSAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uIik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdDogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKLSAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9v
dXRfb2ZfbGluZSIpOworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTogewotICAgICAgICAg
ICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2Zf
bGluZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfZ2VuZXJpYzogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKKyAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0
ZXI6IHsKQEAgLTEwNTMsMjQgKzEwNTQsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwdXRf
Z2V0dGVyX3NldHRlclx0ICVzLCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1dF9nZXR0ZXJfc2V0dGVyXHQgJXMs
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlk
TmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBkZWxfYnlfaWRcdCAlcywgJXMsICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZGVsX2J5X2lkXHQgJXMsICVzLCAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfdmFsOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZ2V0X2J5X3ZhbFx0ICVzLCAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBnZXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
aXQrKzsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzksOCAr
MTA4MCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRfYXJndW1lbnRfYnlfdmFsXHQgJXMs
ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsK
LSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9hcmd1bWVudF9ieV92YWxcdCAlcywgJXMs
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTA5MiwxNiArMTA5MywxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNT
dGF0ZSogCiAgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHI1ID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZ2V0X2J5X3BuYW1l
XHQgJXMsICVzLCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9ieV9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjUpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZ0YoIlslNGRdIHB1dF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50
ZigiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTEwOSwyMDggKzExMTAsMjA4IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJbJTRkXSBkZWxfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGRl
bF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
b3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pbmRleDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsK
LSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1dF9ieV9pbmRleFx0ICVzLCAldSwgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3Bfam1wOiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gam1wXHRcdCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IlslNGRdIGptcFx0XHQgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxv
Y2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
bG9vcDogewogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGxvb3BcdFx0ICVkKC0+JWQpIiwgbG9jYXRpb24sIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbG9v
cFx0XHQgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsK
LSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRp
b24sICJqdHJ1ZSIpOworICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0LCBleGVj
LCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAianRydWUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl90cnVlOiB7Ci0gICAgICAgICAgICBwcmlu
dENvbmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9pZl90cnVl
Iik7CisgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBp
dCwgbG9jYXRpb24sICJsb29wX2lmX3RydWUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9mYWxzZTogewotICAgICAgICAgICAgcHJpbnRD
b25kaXRpb25hbEp1bXAoZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImxvb3BfaWZfZmFsc2Ui
KTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywgYmVnaW4sIGl0
LCBsb2NhdGlvbiwgImxvb3BfaWZfZmFsc2UiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfamZhbHNlOiB7Ci0gICAgICAgICAgICBwcmludENvbmRpdGlv
bmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamZhbHNlIik7CisgICAgICAgICAg
ICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJq
ZmFsc2UiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
amVxX251bGw6IHsKLSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2lu
LCBpdCwgbG9jYXRpb24sICJqZXFfbnVsbCIpOworICAgICAgICAgICAgcHJpbnRDb25kaXRpb25h
bEp1bXAob3V0LCBleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamVxX251bGwiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOiB7Ci0g
ICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9u
LCAiam5lcV9udWxsIik7CisgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4
ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqbmVxX251bGwiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBw
b2ludGVyID0gKCsraXQpLT51LnNwZWNpYWxQb2ludGVyOwogICAgICAgICAgICAgaW50IG9mZnNl
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpuZXFf
cHRyXHRcdCAlcywgJWQgKCVwKSwgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHBvaW50ZXIsIG1fZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2ludGVyRm9y
KHBvaW50ZXIpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIlslNGRdIGpuZXFfcHRyXHRcdCAlcywgJWQgKCVwKSwgJWQoLT4lZCkiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHBvaW50ZXIsIG1fZ2xvYmFsT2JqZWN0LT5h
Y3R1YWxQb2ludGVyRm9yKHBvaW50ZXIpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVzczogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVz
LCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVzc2VxOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZCki
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiWyU0ZF0gam5sZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9qbmxlc3NlcTogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gam5sZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBk
YXRhTG9nRigiWyU0ZF0gam5ncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50
ZigiWyU0ZF0gam5ncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xlc3M6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9pZl9sZXNzXHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gbG9vcF9pZl9sZXNzXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzc2VxOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGxvb3BfaWZfbGVzc2VxXHQgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbG9vcF9pZl9sZXNzZXFcdCAlcywgJXMsICVkKC0+JWQp
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGxvb3BfaWZfZ3JlYXRl
clx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGxvb3BfaWZfZ3JlYXRlclx0ICVz
LCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29w
X2lmX2dyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRk
XSBsb29wX2lmX2dyZWF0ZXJlcVx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGxv
b3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNl
dCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2xvb3BfaGludDogewotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGxvb3BfaGludCIsIGxvY2F0aW9uKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGxvb3Bf
aGludCIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHN3aXRjaF9pbW1cdCAlZCwg
JWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0
aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVy
KS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gc3dpdGNoX2ltbVx0ICVkLCAl
ZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRp
b24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIp
LmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQs
IGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3Bfc3dpdGNoX2NoYXI6IHsKICAgICAgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3dpdGNoX2NoYXJcdCAlZCwgJWQoLT4l
ZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsg
ZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gc3dpdGNoX2NoYXJcdCAlZCwgJWQoLT4l
ZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsg
ZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2Nh
dGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N3
aXRjaF9zdHJpbmc6IHsKICAgICAgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAlZCgtPiVk
KSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBk
ZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQgJWQsICVkKC0+
JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiAr
IGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9u
ZXdfZnVuYzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzaG91
bGRDaGVjayA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IG5ld19mdW5jXHRcdCAlcywgZiVkLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgZjAsIHNob3VsZENoZWNrID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4i
KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19mdW5jXHRcdCAlcywgZiVkLCAlcyIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjAsIHNob3VsZENoZWNr
ID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbmV3X2Z1bmNfZXhwXHQgJXMs
IGYlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjApOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2Z1bmNfZXhwXHQgJXMsIGYlZCIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjApOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKLSAgICAgICAgICAgIHByaW50
Q2FsbE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzKTsKKyAgICAgICAg
ICAgIHByaW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNo
ZXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxs
X2V2YWw6IHsKLSAgICAgICAgICAgIHByaW50Q2FsbE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNh
bGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzKTsKKyAgICAgICAgICAgIHByaW50Q2FsbE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6IHsK
QEAgLTEzMTgsNjAgKzEzMTksNjAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVj
U3RhdGUqIAogICAgICAgICAgICAgaW50IHRoaXNWYWx1ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGFyZ3VtZW50cyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGZpcnN0RnJlZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nRigiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
dGhpc1ZhbHVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd1bWVudHMpLmRhdGEoKSwg
Zmlyc3RGcmVlUmVnaXN0ZXIpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY2FsbF92YXJh
cmdzXHQgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGNhbGxl
ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgdGhpc1ZhbHVlKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCBhcmd1bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2
YXRpb246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZ0YoIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSB0ZWFyX29mZl9hY3RpdmF0aW9uXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSB0ZWFyX29mZl9hcmd1bWVudHMgJXMsICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSB0ZWFyX29mZl9hcmd1
bWVudHMgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmV0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSByZXRcdFx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlslNGRdIHJldFx0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY2FsbF9wdXRfcmVzdWx0XHRcdCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmV0X29iamVjdF9vcl90aGlz
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXMiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb25z
dHJ1Y3Q6IHsKLSAgICAgICAgICAgIHByaW50Q2FsbE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNv
bnN0cnVjdCIsIER1bXBDYWNoZXMpOworICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGNvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gc3RyY2F0XHRcdCAlcywgJXMsICVkIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgY291bnQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gc3RyY2F0XHRcdCAl
cywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291bnQpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZTogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSB0b19wcmltaXRpdmVcdCAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHRvX3By
aW1pdGl2ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9wbmFtZXM6IHsKQEAgLTEzODAsOCArMTM4
MSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAg
ICAgIGludCByMiA9IGl0WzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMyA9IGl0WzRd
LnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdFs1XS51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZ2V0X3BuYW1lc1x0ICVzLCAlcywgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAlcywgJXMs
ICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKSAtIDE7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTM5Miw1NCArMTM5Myw1NCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQg
c2l6ZSA9IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpdGVyID0gaXRbNV0udS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzZdLnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXh0X3BuYW1lXHQgJXMsICVzLCAlcywgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVzdCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaXRl
cikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIlslNGRdIG5leHRfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpdGVyKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVO
R1RIKG9wX25leHRfcG5hbWUpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwdXNoX3dpdGhf
c2NvcGVcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwdXNoX3dpdGhfc2NvcGVcdCAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcG9wX3Njb3BlOiB7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiWyU0ZF0gcG9wX3Njb3BlIiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gcG9wX3Njb3BlIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX3B1c2hfbmFtZV9zY29wZTogewogICAgICAgICAgICAgaW50
IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHVzaF9uYW1lX3Njb3BlIFx0JXMs
ICVzLCAldSIsIGxvY2F0aW9uLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGF0dHJpYnV0ZXMpOwotICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gcHVzaF9uYW1lX3Njb3BlIFx0JXMsICVzLCAldSIsIGxvY2F0aW9u
LCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2ptcF9zY29wZXM6IHsKICAgICAgICAgICAgIGludCBzY29w
ZURlbHRhID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gam1wX3Njb3Blc1x0
XiVkLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGptcF9zY29wZXNcdF4lZCwgJWQo
LT4lZCkiLCBsb2NhdGlvbiwgc2NvcGVEZWx0YSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2F0Y2g6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZ0YoIlslNGRdIGNhdGNoXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjYXRjaFx0XHQgJXMi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRk
XSB0aHJvd1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkp
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gdGhyb3dcdFx0ICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6IHsKICAgICAgICAgICAg
IGludCBrMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGsxID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gdGhyb3dfc3RhdGljX2Vy
cm9yXHQgJXMsICVzIiwgbG9jYXRpb24sIGNvbnN0YW50TmFtZShleGVjLCBrMCwgZ2V0Q29uc3Rh
bnQoazApKS5kYXRhKCksIGsxID8gInRydWUiIDogImZhbHNlIik7Ci0gICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSB0aHJvd19zdGF0aWNfZXJyb3JcdCAlcywgJXMiLCBsb2NhdGlvbiwgY29uc3Rh
bnROYW1lKGV4ZWMsIGswLCBnZXRDb25zdGFudChrMCkpLmRhdGEoKSwgazEgPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwg
bG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9kZWJ1ZzogewpAQCAtMTQ0NywyNiArMTQ0OCwyNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgZmlyc3RMaW5lID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGFzdExpbmUgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBjb2x1bW4gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCwgJWQiLCBsb2NhdGlvbiwgZGVi
dWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNvbHVtbik7Ci0g
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCwgJWQiLCBsb2Nh
dGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNv
bHVtbik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxv
Y2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cHJvZmlsZV93aWxsX2NhbGw6IHsKICAgICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxs
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxsICVzIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOiB7CiAgICAg
ICAgICAgICBpbnQgZnVuY3Rpb24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2dGKCJbJTRkXSBwcm9maWxlX2RpZF9jYWxsXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0g
cHJvZmlsZV9kaWRfY2FsbFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5j
dGlvbikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9lbmQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGVuZFx0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZW5k
XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKQEAg
LTE0NzYsMTEgKzE0NzcsMTEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3Rh
dGUqIAogICAgIH0KIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0m
IG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
bV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQg
PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgZHVtcEJ5dGVj
b2RlKGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsKKyAgICBkdW1wQnl0ZWNvZGUo
b3V0LCBleGVjLCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCk7CiB9CiAKICNpZiBEVU1QX0NP
REVfQkxPQ0tfU1RBVElTVElDUwpAQCAtMTkxNiw2ICsxOTE3LDkgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogewor
ICAgIGlmIChtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKKyAgICAgICAgbV9n
bG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5vdGlmeURlc3RydWN0aW9uKHRoaXMp
OworICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIFJlbW92ZSBteXNlbGYgZnJvbSB0
aGUgc2V0IG9mIERGRyBjb2RlIGJsb2Nrcy4gTm90ZSB0aGF0IEkgbWF5IG5vdCBiZSBpbiB0aGlz
IHNldAogICAgIC8vIChiZWNhdXNlIEknbSBub3QgYSBERkcgY29kZSBibG9jayksIGluIHdoaWNo
IGNhc2UgdGhpcyBpcyBhIG5vLW9wIGFueXdheS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyAr
NzksNyBAQAogCiAvLyBTZXQgRU5BQkxFX0JZVEVDT0RFX0NPTU1FTlRTIHRvIDEgdG8gZW5hYmxl
IHJlY29yZGluZyBieXRlY29kZSBnZW5lcmF0b3IKIC8vIGNvbW1lbnRzIGZvciB0aGUgYnl0ZWNv
ZGVzIHRoYXQgaXQgZ2VuZXJhdGVzLiBUaGlzIHdpbGwgYWxsb3cKLS8vIENvZGVCbG9jazo6ZHVt
cCgpIHRvIHByb3ZpZGUgc29tZSBjb250ZXh0dWFsIGluZm8gYWJvdXQgdGhlIGJ5dGVjb2Rlcy4K
Ky8vIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkgdG8gcHJvdmlkZSBzb21lIGNvbnRleHR1YWwg
aW5mbyBhYm91dCB0aGUgYnl0ZWNvZGVzLgogLy8KIC8vIFRoZSB3YXkgdGhpcyBjb21tZW50IHN5
c3RlbSB3b3JrcyBpcyBhcyBmb2xsb3dzOgogLy8gMS4gVGhlIEJ5dGVjb2RlR2VuZXJhdG9yIGNh
bGxzIHByZXBlbmRDb21tZW50KCkgd2l0aCBhIGNvbnN0YW50IGNvbW1lbnQKQEAgLTg5LDcgKzg5
LDcgQEAKIC8vICAgIHByZXBlbmRlZCBjb21tZW50IHdpbGwgYmUgcmVjb3JkZWQgd2l0aCB0aGUg
UEMgb2YgdGhlIG9wY29kZSBiZWluZwogLy8gICAgZW1pdHRlZC4gVGhpcyBjb21tZW50IGlzIGJl
aW5nIHJlY29yZGVkIGluIHRoZSBDb2RlQmxvY2sncwogLy8gICAgbV9ieXRlY29kZUNvbW1lbnRz
LgotLy8gMy4gV2hlbiBDb2RlQmxvY2s6OmR1bXAoKSBpcyBjYWxsZWQsIGl0IHdpbGwgcGFpciB1
cCB0aGUgY29tbWVudHMgd2l0aAorLy8gMy4gV2hlbiBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgp
IGlzIGNhbGxlZCwgaXQgd2lsbCBwYWlyIHVwIHRoZSBjb21tZW50cyB3aXRoCiAvLyAgICB0aGVp
ciBjb3JyZXNwb25kaW5nIGJ5dGVjb2RlcyBiYXNlZCBvbiB0aGUgYnl0ZWNvZGUgYW5kIGNvbW1l
bnQncwogLy8gICAgUEMuIElmIGEgbWF0Y2hpbmcgcGFpciBpcyBmb3VuZCwgdGhlIGNvbW1lbnQg
d2lsbCBiZSBwcmludGVkIGFmdGVyCiAvLyAgICB0aGUgYnl0ZWNvZGUuIElmIG5vdCwgbm8gY29t
bWVudCBpcyBwcmludGVkLgpAQCAtMTYwLDE2ICsxNjAsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRU
eXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyNlbHNlCisg
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVWZXJzaW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIHZvaWQgdmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlz
dGljcygpOwogCi0gICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKCk7Ci0gICAgICAgIHZvaWQgZHVt
cEJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBwcmludFN0
cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBwcmludFN0cnVjdHVy
ZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKKyAg
ICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsK
KyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShQcmludFN0cmVh
bSYsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwog
CiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1v
ZGU7IH0KIApAQCAtMTg5LDEwICsxOTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShpbnQgbG9jYXRpb24pOworICAgICAgICB2b2lk
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKFByaW50U3RyZWFtJiwgaW50IGxvY2F0aW9u
KTsKICNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0gICAgICAgIGNvbnN0IGNoYXIqIGNv
bW1lbnRGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Ci0gICAgICAg
IHZvaWQgZHVtcEJ5dGVjb2RlQ29tbWVudHMoKTsKKyAgICAgICAgY29uc3QgY2hhciogY29tbWVu
dEZvckJ5dGVjb2RlT2Zmc2V0KFByaW50U3RyZWFtJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
OworICAgICAgICB2b2lkIGR1bXBCeXRlY29kZUNvbW1lbnRzKFByaW50U3RyZWFtJik7CiAjZW5k
aWYKIAogICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTEyMTUsMTcgKzEyMjAsMTcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQoKm1fZ2xvYmFs
RGF0YSwgb3duZXJFeGVjdXRhYmxlKCksIGNvbnN0YW50c1tpXS5nZXQoKSk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIGR1bXBCeXRlY29kZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYpOworICAgICAgICB2b2lkIGR1bXBCeXRlY29k
ZShQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJik7CiAKICAgICAgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoRXhlY1N0
YXRlKiwgaW50IHIpIGNvbnN0OwotICAgICAgICB2b2lkIHByaW50VW5hcnlPcChFeGVjU3RhdGUq
LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKLSAg
ICAgICAgdm9pZCBwcmludEJpbmFyeU9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwotICAgICAgICB2b2lkIHByaW50Q29uZGl0
aW9uYWxKdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgICAgIHZvaWQgcHJpbnRH
ZXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomKTsK
LSAgICAgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhFeGVjU3RhdGUqLCBpbnQgbG9j
YXRpb24pOworICAgICAgICB2b2lkIHByaW50VW5hcnlPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0
ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwor
ICAgICAgICB2b2lkIHByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQg
bG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICAgICAg
dm9pZCBwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgaW50IGxvY2F0aW9uLCBjb25zdCBj
aGFyKiBvcCk7CisgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlYW0mLCBFeGVj
U3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYpOworICAgICAgICB2b2lk
IHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uKTsKICAgICAgICAgZW51bSBDYWNoZUR1bXBNb2RlIHsgRHVtcENhY2hlcywgRG9udER1
bXBDYWNoZXMgfTsKLSAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3RhdGUqLCBpbnQgbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2Rl
KTsKLSAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24s
IGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICAgICAgdm9pZCBwcmlu
dENhbGxPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5z
dHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUpOworICAgICAgICB2b2lk
IHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgICAgIHZvaWQgdmlzaXRT
dHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQyk7CiAgICAgICAgIAogI2lm
IEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTczLDYgKzc0LDExIEBAIENvZGVCbG9ja0hhc2ggSW5saW5lQ2FsbEZyYW1lOjpo
YXNoKCkgY28KICAgICByZXR1cm4gZXhlY3V0YWJsZS0+aGFzaEZvcihzcGVjaWFsaXphdGlvbktp
bmQoKSk7CiB9CiAKK0NvZGVCbG9jayogSW5saW5lQ2FsbEZyYW1lOjpiYXNlbGluZUNvZGVCbG9j
aygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlLmdldCgpKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkp
OworfQorCiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIG91dC5wcmludCgiIyIsIGhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRh
YmxlLmdldCgpKSwgIiwgYmMjIiwgY2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHNwZWNpYWxp
emF0aW9uS2luZCgpLCAiPiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDgg
QEAgc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNo
KCkgY29uc3Q7CiAgICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0
OworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZp
c2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzI0LDYgKzE3MjQsNyBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2Ug
SW5saW5lU3RhcnQ6CiAgICAgY2FzZSBOb3A6CisgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAg
ICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA4LDYgKzIxMDgsMTIgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBtX2N1cnJlbnRJbmRl
eDsKICAgICAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb247IC8v
IFNvbWUgbWV0aG9kcyB3YW50IHRvIHVzZSB0aGlzLCBhbmQgd2UnZCByYXRoZXIgbm90IHRocmVh
ZCBpdCB0aHJvdWdoIGNhbGxzLgogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pIHsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ291bnRFeGVjdXRpb24sIE9wSW5mbyhtX2dyYXBoLm1fY29tcGlsYXRpb24tPmV4ZWN1
dGlvbkNvdW50ZXJGb3IoCisgICAgICAgICAgICAgICAgUEJQOjpPcmlnaW5TdGFjaygqbV9nbG9i
YWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIG1fY29kZUJsb2NrLCBjdXJyZW50Q29kZU9y
aWdpbigpKSkpKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgewogCiAgICAgICAgIC8vID09PSBGdW5jdGlvbiBlbnRyeSBvcGNvZGVzID09PQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNp
b24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsNTMgQEAgRGlzYXNzZW1ibGVyOjpEaXNh
c3NlbWJsZXIoR3JhcGgmIGdyYXBoKQogCiB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0
cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogewotICAgIG1fZ3JhcGgubV9kb21p
bmF0b3JzLmNvbXB1dGVJZk5lY2Vzc2FyeShtX2dyYXBoKTsKKyAgICBWZWN0b3I8RHVtcGVkT3A+
IG9wcyA9IGNyZWF0ZUR1bXBMaXN0KGxpbmtCdWZmZXIpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBvcHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChvcHNbaV0udGV4dCk7
Cit9CisKK3ZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7
CisgICAgZHVtcChXVEY6OmRhdGFGaWxlKCksIGxpbmtCdWZmZXIpOworfQorCit2b2lkIERpc2Fz
c2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcihQQlA6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiwg
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3sKKyAgICBWZWN0b3I8RHVtcGVkT3A+IG9wcyA9IGNy
ZWF0ZUR1bXBMaXN0KGxpbmtCdWZmZXIpOwogICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBvcHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUEJQOjpPcmlnaW5TdGFjayBzdGFjazsK
KyAgICAgICAgCisgICAgICAgIGlmIChvcHNbaV0uY29kZU9yaWdpbi5pc1NldCgpKQorICAgICAg
ICAgICAgc3RhY2sgPSBQQlA6Ok9yaWdpblN0YWNrKCptX2dyYXBoLm1fZ2xvYmFsRGF0YS5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIsIG1fZ3JhcGgubV9jb2RlQmxvY2ssIG9wc1tpXS5jb2RlT3JpZ2lu
KTsKKyAgICAgICAgCisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNv
bXBpbGVkQnl0ZWNvZGUoc3RhY2ssIG9wc1tpXS50ZXh0KSk7CisgICAgfQorfQorCit2b2lkIERp
c2Fzc2VtYmxlcjo6ZHVtcEhlYWRlcihQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKQorewogICAgIG91dC5wcmludCgiR2VuZXJhdGVkIERGRyBKSVQgY29kZSBmb3IgIiwg
Q29kZUJsb2NrV2l0aEpJVFR5cGUobV9ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6REZHSklU
KSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVj
dGlvbkNvdW50KCksICI6XG4iKTsKICAgICBvdXQucHJpbnQoIiAgICBDb2RlIGF0IFsiLCBSYXdQ
b2ludGVyKGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRp
Y19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVi
dWdTaXplKCkpLCAiKTpcbiIpOworfQorCit2b2lkIERpc2Fzc2VtYmxlcjo6YXBwZW5kKFZlY3Rv
cjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiYgcmVzdWx0LCBTdHJpbmdQcmludFN0cmVhbSYgb3V0
LCBDb2RlT3JpZ2luJiBwcmV2aW91c09yaWdpbikKK3sKKyAgICByZXN1bHQuYXBwZW5kKER1bXBl
ZE9wKHByZXZpb3VzT3JpZ2luLCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICBwcmV2aW91c09yaWdp
biA9IENvZGVPcmlnaW4oKTsKKyAgICBvdXQucmVzZXQoKTsKK30KKworVmVjdG9yPERpc2Fzc2Vt
Ymxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKK3sKKyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgVmVjdG9yPER1
bXBlZE9wPiByZXN1bHQ7CisgICAgCisgICAgQ29kZU9yaWdpbiBwcmV2aW91c09yaWdpbiA9IENv
ZGVPcmlnaW4oKTsKKyAgICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CisgICAgYXBwZW5k
KHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CisgICAgCisgICAgbV9ncmFwaC5tX2RvbWlu
YXRvcnMuY29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOwogICAgIAogICAgIGNvbnN0IGNoYXIq
IHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVByZWZpeCA9ICIg
ICAgICAgICI7CkBAIC01Nyw3ICsxMDAsOSBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZm
ZXIsIHByZXZpb3VzTGFiZWwsIG1fbGFiZWxGb3JCbG9ja0luZGV4W2Jsb2NrSW5kZXhdLCBsYXN0
Tm9kZUluZGV4KTsKKyAgICAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7
CiAgICAgICAgIG1fZ3JhcGguZHVtcEJsb2NrSGVhZGVyKG91dCwgcHJlZml4LCBibG9ja0luZGV4
LCBHcmFwaDo6RHVtcExpdmVQaGlzT25seSk7CisgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwg
cHJldmlvdXNPcmlnaW4pOwogICAgICAgICBOb2RlSW5kZXggbGFzdE5vZGVJbmRleEZvckRpc2Fz
c2VtYmx5ID0gYmxvY2stPmF0KDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJs
b2NrLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKCFtX2dyYXBoW2Jsb2NrLT5hdChp
KV0ud2lsbEhhdmVDb2RlR2VuT3JPU1IoKSAmJiAhT3B0aW9uczo6c2hvd0FsbERGR05vZGVzKCkp
CkBAIC03NiwyMCArMTIxLDI1IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQKICAgICAgICAgICAgICAgICAgICAgY3VycmVudExhYmVsID0gbV9lbmRPZk1haW5QYXRo
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNz
ZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZpb3VzTGFiZWwsIGN1cnJlbnRMYWJlbCwgbGFz
dE5vZGVJbmRleEZvckRpc2Fzc2VtYmx5KTsKLSAgICAgICAgICAgIG1fZ3JhcGguZHVtcENvZGVP
cmlnaW4ob3V0LCBwcmVmaXgsIGxhc3ROb2RlSW5kZXgsIGJsb2NrLT5hdChpKSk7CisgICAgICAg
ICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKKyAgICAgICAgICAgIHBy
ZXZpb3VzT3JpZ2luID0gbV9ncmFwaFtibG9jay0+YXQoaSldLmNvZGVPcmlnaW47CisgICAgICAg
ICAgICBpZiAobV9ncmFwaC5kdW1wQ29kZU9yaWdpbihvdXQsIHByZWZpeCwgbGFzdE5vZGVJbmRl
eCwgYmxvY2stPmF0KGkpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwg
cHJldmlvdXNPcmlnaW4pOworICAgICAgICAgICAgICAgIHByZXZpb3VzT3JpZ2luID0gbV9ncmFw
aFtibG9jay0+YXQoaSldLmNvZGVPcmlnaW47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
X2dyYXBoLmR1bXAob3V0LCBwcmVmaXgsIGJsb2NrLT5hdChpKSk7CiAgICAgICAgICAgICBsYXN0
Tm9kZUluZGV4ID0gYmxvY2stPmF0KGkpOwogICAgICAgICAgICAgbGFzdE5vZGVJbmRleEZvckRp
c2Fzc2VtYmx5ID0gYmxvY2stPmF0KGkpOwogICAgICAgICB9CiAgICAgfQogICAgIGR1bXBEaXNh
c3NlbWJseShvdXQsIGRpc2Fzc2VtYmx5UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2aW91c0xhYmVs
LCBtX2VuZE9mTWFpblBhdGgsIGxhc3ROb2RlSW5kZXgpOworICAgIGFwcGVuZChyZXN1bHQsIG91
dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIG91dC5wcmludChwcmVmaXgsICIoRW5kIE9mIE1haW4g
UGF0aClcbiIpOworICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAg
IGR1bXBEaXNhc3NlbWJseShvdXQsIGRpc2Fzc2VtYmx5UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2
aW91c0xhYmVsLCBtX2VuZE9mQ29kZSwgTm9Ob2RlKTsKLX0KLQotdm9pZCBEaXNhc3NlbWJsZXI6
OmR1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKLXsKLSAgICBkdW1wKFdURjo6ZGF0YUZpbGUo
KSwgbGlua0J1ZmZlcik7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7
CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBE
aXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCYgcHJldmlvdXNMYWJlbCwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGN1cnJlbnRMYWJlbCwgTm9kZUluZGV4IGNvbnRleHQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgJKHJldmlzaW9u
IDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJERkdDb21tb24uaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTY0LDggKzY1LDI0IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7CiAg
ICAgdm9pZCBkdW1wKExpbmtCdWZmZXImKTsKKyAgICB2b2lkIHJlcG9ydFRvUHJvZmlsZXIoUEJQ
OjpDb21waWxhdGlvbiosIExpbmtCdWZmZXImKTsKICAgICAKIHByaXZhdGU6CisgICAgdm9pZCBk
dW1wSGVhZGVyKFByaW50U3RyZWFtJiwgTGlua0J1ZmZlciYpOworICAgIAorICAgIHN0cnVjdCBE
dW1wZWRPcCB7CisgICAgICAgIER1bXBlZE9wKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ1N0cmlu
ZyB0ZXh0KQorICAgICAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICAg
ICAsIHRleHQodGV4dCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBD
b2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgICAgIENTdHJpbmcgdGV4dDsKKyAgICB9OworICAg
IHZvaWQgYXBwZW5kKFZlY3RvcjxEdW1wZWRPcD4mLCBTdHJpbmdQcmludFN0cmVhbSYsIENvZGVP
cmlnaW4mKTsKKyAgICBWZWN0b3I8RHVtcGVkT3A+IGNyZWF0ZUR1bXBMaXN0KExpbmtCdWZmZXIm
KTsKKyAgICAKICAgICB2b2lkIGR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYsIGNvbnN0IGNo
YXIqIHByZWZpeCwgTGlua0J1ZmZlciYsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCYgcHJldmlvdXNM
YWJlbCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGN1cnJlbnRMYWJlbCwgTm9kZUluZGV4IGNvbnRl
eHQpOwogICAgIAogICAgIEdyYXBoJiBtX2dyYXBoOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7CiBHcmFwaDo6R3JhcGgoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgb3NyRW50cnlC
eXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcykK
ICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJs
b2NrKQorICAgICwgbV9jb21waWxhdGlvbihnbG9iYWxEYXRhLm1fcGVyQnl0ZWNvZGVQcm9maWxl
ciA/IGdsb2JhbERhdGEubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5uZXdDb21waWxhdGlvbihjb2Rl
QmxvY2ssIFBCUDo6REZHKSA6IDApCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2soY29kZUJsb2NrLT5h
bHRlcm5hdGl2ZSgpKQogICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgLCBtX29zckVu
dHJ5Qnl0ZWNvZGVJbmRleChvc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCkBAIC02MywxNSArNjQsMTUg
QEAgc3RhdGljIHZvaWQgcHJpbnRXaGl0ZVNwYWNlKFByaW50U3RyZWFtJgogICAgICAgICBvdXQu
cHJpbnQoIiAiKTsKIH0KIAotdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgY2hhciogcHJlZml4LCBOb2RlSW5kZXggcHJldk5vZGVJbmRleCwgTm9kZUlu
ZGV4IG5vZGVJbmRleCkKK2Jvb2wgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZUluZGV4IHByZXZOb2RlSW5kZXgsIE5vZGVJbmRl
eCBub2RlSW5kZXgpCiB7CiAgICAgaWYgKHByZXZOb2RlSW5kZXggPT0gTm9Ob2RlKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBOb2RlJiBjdXJyZW50
Tm9kZSA9IGF0KG5vZGVJbmRleCk7CiAgICAgTm9kZSYgcHJldmlvdXNOb2RlID0gYXQocHJldk5v
ZGVJbmRleCk7CiAgICAgaWYgKHByZXZpb3VzTm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSA9PSBjdXJyZW50Tm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgVmVjdG9yPENvZGVPcmlnaW4+
IHByZXZpb3VzSW5saW5lU3RhY2sgPSBwcmV2aW91c05vZGUuY29kZU9yaWdpbi5pbmxpbmVTdGFj
aygpOwogICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBjdXJyZW50SW5saW5lU3RhY2sgPSBjdXJyZW50
Tm9kZS5jb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7CkBAIC04NCwxMSArODUsMTQgQEAgdm9pZCBH
cmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAogICAgICAgICB9CiAgICAgfQogICAg
IAorICAgIGJvb2wgaGFzUHJpbnRlZCA9IGZhbHNlOworICAgIAogICAgIC8vIFByaW50IHRoZSBw
b3BzLgogICAgIGZvciAodW5zaWduZWQgaSA9IHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBp
LS0gPiBpbmRleE9mRGl2ZXJnZW5jZTspIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7CiAg
ICAgICAgIHByaW50V2hpdGVTcGFjZShvdXQsIGkgKiAyKTsKICAgICAgICAgb3V0LnByaW50KCI8
LS0gIiwgKnByZXZpb3VzSW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLCAiXG4iKTsKKyAg
ICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIAogICAgIC8vIFByaW50IHRoZSBw
dXNoZXMuCkBAIC05Niw3ICsxMDAsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJp
bnRTdHJlYW0mIAogICAgICAgICBvdXQucHJpbnQocHJlZml4KTsKICAgICAgICAgcHJpbnRXaGl0
ZVNwYWNlKG91dCwgaSAqIDIpOwogICAgICAgICBvdXQucHJpbnQoIi0tPiAiLCAqY3VycmVudElu
bGluZVN0YWNrW2ldLmlubGluZUNhbGxGcmFtZSwgIlxuIik7CisgICAgICAgIGhhc1ByaW50ZWQg
PSB0cnVlOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4gaGFzUHJpbnRlZDsKIH0KIAogaW50IEdy
YXBoOjphbW91bnRPZk5vZGVXaGl0ZVNwYWNlKE5vZGUmIG5vZGUpCkBAIC0yNTQsNiArMjYxLDEz
IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgaWYg
KGhhc1ByaW50ZWQpCiAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CiAgICAgICAgIG91dC5w
cmludChpbmRleGluZ1R5cGVUb1N0cmluZyhub2RlLmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAg
IGhhc1ByaW50ZWQgPSB0cnVlOworICAgIH0KKyAgICBpZiAobm9kZS5oYXNFeGVjdXRpb25Db3Vu
dGVyKCkpIHsKKyAgICAgICAgaWYgKGhhc1ByaW50ZWQpCisgICAgICAgICAgICBvdXQucHJpbnQo
IiwgIik7CisgICAgICAgIG91dC5wcmludChSYXdQb2ludGVyKG5vZGUuZXhlY3V0aW9uQ291bnRl
cigpKSk7CisgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAob3AgPT0g
SlNDb25zdGFudCkgewogICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
IiQiLCBub2RlLmNvbnN0YW50TnVtYmVyKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksOCArMTk5LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIHByaW50Tm9kZVdoaXRlU3BhY2UoUHJpbnRTdHJlYW0mLCBOb2RlJik7
CiAKICAgICAvLyBEdW1wIHRoZSBjb2RlIG9yaWdpbiBvZiB0aGUgZ2l2ZW4gbm9kZSBhcyBhIGRp
ZmYgZnJvbSB0aGUgY29kZSBvcmlnaW4gb2YgdGhlCi0gICAgLy8gcHJlY2VkaW5nIG5vZGUuCi0g
ICAgdm9pZCBkdW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCwg
Tm9kZUluZGV4LCBOb2RlSW5kZXgpOworICAgIC8vIHByZWNlZGluZyBub2RlLiBSZXR1cm5zIHRy
dWUgaWYgYW55dGhpbmcgd2FzIHByaW50ZWQuCisgICAgYm9vbCBkdW1wQ29kZU9yaWdpbihQcmlu
dFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZUluZGV4LCBOb2RlSW5kZXgpOwogCiAg
ICAgQmxvY2tJbmRleCBibG9ja0luZGV4Rm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPEJsb2NrSW5k
ZXg+JiBibG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW4pOwogCkBAIC02NzEsNiArNjcxLDcg
QEAgcHVibGljOgogICAgIAogICAgIEpTR2xvYmFsRGF0YSYgbV9nbG9iYWxEYXRhOwogICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgUEJQOjpDb21waWxhdGlvbiogbV9jb21waWxhdGlv
bjsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKIAogICAgIFZlY3RvcjwgT3duUHRy
PEJhc2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDcgKzQ1LDcgQEAgSklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBt
X2dyYXBoKGRmZykKICAgICAsIG1fY3VycmVudENvZGVPcmlnaW5JbmRleCgwKQogewotICAgIGlm
IChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKKyAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5
KCkgfHwgbV9ncmFwaC5tX2dsb2JhbERhdGEubV9wZXJCeXRlY29kZVByb2ZpbGVyKQogICAgICAg
ICBtX2Rpc2Fzc2VtYmxlciA9IGFkb3B0UHRyKG5ldyBEaXNhc3NlbWJsZXIoZGZnKSk7CiB9CiAK
QEAgLTIzNiw4ICsyMzYsMTAgQEAgYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZShKSVRDb2RlJiBl
bnRyeQogICAgIGxpbmsobGlua0J1ZmZlcik7CiAgICAgc3BlY3VsYXRpdmUubGlua09TUkVudHJp
ZXMobGlua0J1ZmZlcik7CiAKLSAgICBpZiAobV9kaXNhc3NlbWJsZXIpCisgICAgaWYgKHNob3Vs
ZFNob3dEaXNhc3NlbWJseSgpKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChsaW5rQnVm
ZmVyKTsKKyAgICBpZiAobV9ncmFwaC5tX2NvbXBpbGF0aW9uKQorICAgICAgICBtX2Rpc2Fzc2Vt
Ymxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2dyYXBoLm1fY29tcGlsYXRpb24sIGxpbmtCdWZmZXIp
OwogCiAgICAgZW50cnkgPSBKSVRDb2RlKAogICAgICAgICBsaW5rQnVmZmVyLmZpbmFsaXplQ29k
ZVdpdGhvdXREaXNhc3NlbWJseSgpLApAQCAtMzI3LDggKzMyOSwxMCBAQCBib29sIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kCiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGxTdGFj
a0NoZWNrLCBjdGlfc3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsQXJpdHlD
aGVjaywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJp
dHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwogICAgIAotICAgIGlmIChtX2Rpc2Fz
c2VtYmxlcikKKyAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCiAgICAgICAgIG1fZGlz
YXNzZW1ibGVyLT5kdW1wKGxpbmtCdWZmZXIpOworICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRp
b24pCisgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fZ3JhcGgubV9j
b21waWxhdGlvbiwgbGlua0J1ZmZlcik7CiAKICAgICBlbnRyeVdpdGhBcml0eUNoZWNrID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGFyaXR5Q2hlY2spOwogICAgIGVudHJ5ID0gSklUQ29kZSgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODU5
LDYgKzg1OSwxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIEFTU0VSVChoYXNBcmd1bWVudFBv
c2l0aW9uU3RhcnQoKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNFeGVjdXRpb25Db3VudGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgp
ID09IENvdW50RXhlY3V0aW9uOworICAgIH0KKyAgICAKKyAgICBQQlA6OkV4ZWN1dGlvbkNvdW50
ZXIqIGV4ZWN1dGlvbkNvdW50ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxQQlA6OkV4ZWN1dGlvbkNvdW50ZXIqPihtX29wSW5mbyk7CisgICAgfQogCiAgICAgYm9vbCBz
aG91bGRHZW5lcmF0ZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDkgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICBtYWNybyhHYXJiYWdlVmFsdWUs
IE5vZGVSZXN1bHRKUyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgXAorICAgIC8qIENvdW50
IGV4ZWN1dGlvbi4gKi9cCisgICAgbWFjcm8oQ291bnRFeGVjdXRpb24sIE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBcCiAgICAgLyogVGhpcyBpcyBhIHBzZXVkby10ZXJtaW5hbC4gSXQgbWVhbnMg
dGhhdCBleGVjdXRpb24gc2hvdWxkIGZhbGwgb3V0IG9mIERGRyBhdCAqL1wKICAgICAvKiB0aGlz
IHBvaW50LCBidXQgZXhlY3V0aW9uIGRvZXMgY29udGludWUgaW4gdGhlIGJhc2ljIGJsb2NrIC0g
anVzdCBpbiBhICovXAogICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9cCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc3MSw2ICs3NzEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFBoYW50b206CiAgICAg
ICAgIGNhc2UgSW5saW5lU3RhcnQ6CiAgICAgICAgIGNhc2UgTm9wOgorICAgICAgICBjYXNlIENv
dW50RXhlY3V0aW9uOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBMYXN0Tm9kZVR5cGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5MTIsNiArNDkxMiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgY2FzZSBOZXdGdW5jdGlvbkV4cHJlc3Npb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbkV4cHJlc3Npb24obm9kZSk7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAg
ICBjYXNlIENvdW50RXhlY3V0aW9uOgorICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIo
MSksIE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3Mobm9kZS5leGVjdXRpb25Db3VudGVy
KCktPmFkZHJlc3MoKSkpOworICAgICAgICBicmVhazsKIAogICAgIGNhc2UgR2FyYmFnZVZhbHVl
OgogICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0IHRvIHRoZSBwb2ludCBvZiBjb2RlIGVt
aXNzaW9uIGZvciBhIEdhcmJhZ2VWYWx1ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBAIEpJVDo6SklUKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZUIKICAgICAsIG1fbGFzdFJlc3VsdEJ5dGVjb2RlUmVnaXN0ZXIoc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkKICAgICAsIG1fanVtcFRhcmdldHNQb3NpdGlv
bigwKQogI2VuZGlmCisgICAgLCBtX2NvbXBpbGF0aW9uKDApCiAjaWYgVVNFKE9TX1JBTkRPTU5F
U1MpCiAgICAgLCBtX3JhbmRvbUdlbmVyYXRvcihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
cigpKQogI2Vsc2UKQEAgLTIzMiw2ICsyMzMsMTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogI2lmIEVOQUJMRShKSVRfVkVSQk9TRSkKICAgICAgICAgZGF0YUxvZ0YoIk9s
ZCBKSVQgZW1pdHRpbmcgY29kZSBmb3IgYmMjJXUgYXQgb2Zmc2V0IDB4JWx4LlxuIiwgbV9ieXRl
Y29kZU9mZnNldCwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKKyAgICAgICAgCisgICAg
ICAgIGlmIChtX2NvbXBpbGF0aW9uKSB7CisgICAgICAgICAgICBhZGQ2NCgKKyAgICAgICAgICAg
ICAgICBUcnVzdGVkSW1tMzIoMSksCisgICAgICAgICAgICAgICAgQWJzb2x1dGVBZGRyZXNzKG1f
Y29tcGlsYXRpb24tPmV4ZWN1dGlvbkNvdW50ZXJGb3IoUEJQOjpPcmlnaW5TdGFjayhQQlA6Ok9y
aWdpbigKKyAgICAgICAgICAgICAgICAgICAgbV9jb21waWxhdGlvbi0+Ynl0ZWNvZGVzKCksIG1f
Ynl0ZWNvZGVPZmZzZXQpKSktPmFkZHJlc3MoKSkpOworICAgICAgICB9CiAKICAgICAgICAgc3dp
dGNoIChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKSkgewogICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2RlbF9ieV92YWwpCkBAIC02MzEs
OCArNjM5LDEwIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAg
ICB9CiAjZW5kaWYKICAgICAKLSAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkpCisg
ICAgaWYgKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpIHx8IG1fZ2xvYmFsRGF0YS0+bV9wZXJC
eXRlY29kZVByb2ZpbGVyKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IGFkb3B0UHRyKG5ldyBK
SVREaXNhc3NlbWJsZXIobV9jb2RlQmxvY2spKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIpCisgICAgICAgIG1fY29tcGlsYXRpb24gPSBtX2dsb2JhbERhdGEt
Pm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+bmV3Q29tcGlsYXRpb24obV9jb2RlQmxvY2ssIFBCUDo6
QmFzZWxpbmUpOwogICAgIAogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNh
c3NlbWJsZXItPnNldFN0YXJ0T2ZDb2RlKGxhYmVsKCkpOwpAQCAtODIzLDggKzgzMywxMCBAQCBK
SVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgaWYgKG1fY29kZUJs
b2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVj
aykKICAgICAgICAgKmZ1bmN0aW9uRW50cnlBcml0eUNoZWNrID0gcGF0Y2hCdWZmZXIubG9jYXRp
b25PZihhcml0eUNoZWNrKTsKIAotICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKKyAgICBpZiAoT3B0
aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5kdW1wKHBh
dGNoQnVmZmVyKTsKKyAgICBpZiAobV9jb21waWxhdGlvbikKKyAgICAgICAgbV9kaXNhc3NlbWJs
ZXItPnJlcG9ydFRvUHJvZmlsZXIobV9jb21waWxhdGlvbiwgcGF0Y2hCdWZmZXIpOwogICAgIAog
ICAgIENvZGVSZWYgcmVzdWx0ID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlV2l0aG91dERpc2Fz
c2VtYmx5KCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEz
NjI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTk0Nyw2ICs5NDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogI2VuZGlmCiAgICAg
ICAgIE93blB0cjxKSVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOworICAgICAgICBQQlA6
OkNvbXBpbGF0aW9uKiBtX2NvbXBpbGF0aW9uOwogICAgICAgICBXZWFrUmFuZG9tIG1fcmFuZG9t
R2VuZXJhdG9yOwogICAgICAgICBzdGF0aWMgQ29kZVJlZiBzdHJpbmdHZXRCeVZhbFN0dWJHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dp
dGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NywxOCArNDgsMTAgQEAgSklURGlz
YXNzZW1ibGVyOjp+SklURGlzYXNzZW1ibGVyKCkKIAogdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKLSAgICBvdXQu
cHJpbnQoIkdlbmVyYXRlZCBCYXNlbGluZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJ
VFR5cGUobV9jb2RlQmxvY2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSwgIiwgaW5zdHJ1Y3Rpb24g
Y291bnQgPSAiLCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKLSAgICBv
dXQucHJpbnQoIiAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5kZWJ1Z0FkZHJl
c3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVi
dWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7CisgICAgZHVt
cEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtC
dWZmZXIsIG1fc3RhcnRPZkNvZGUsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFsw
XSk7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZpcnN0U2xvd0xhYmVsOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1Bh
dGguc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5T
bG93UGF0aFtpXS5pc1NldCgpKSB7Ci0gICAgICAgICAgICBmaXJzdFNsb3dMYWJlbCA9IG1fbGFi
ZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aFtpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGR1bXBGb3JJbnN0cnVjdGlvbnMob3V0LCBsaW5rQnVmZmVyLCAi
ICAgICIsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aCwgZmlyc3RTbG93TGFiZWwu
aXNTZXQoKSA/IGZpcnN0U2xvd0xhYmVsIDogbV9lbmRPZlNsb3dQYXRoKTsKKyAgICBkdW1wRm9y
SW5zdHJ1Y3Rpb25zKG91dCwgbGlua0J1ZmZlciwgIiAgICAiLCBtX2xhYmVsRm9yQnl0ZWNvZGVJ
bmRleEluTWFpblBhdGgsIGZpcnN0U2xvd0xhYmVsKCkpOwogICAgIG91dC5wcmludCgiICAgIChF
bmQgT2YgTWFpbiBQYXRoKVxuIik7CiAgICAgZHVtcEZvckluc3RydWN0aW9ucyhvdXQsIGxpbmtC
dWZmZXIsICIgICAgKFMpICIsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aCwgbV9l
bmRPZlNsb3dQYXRoKTsKICAgICBvdXQucHJpbnQoIiAgICAoRW5kIE9mIFNsb3cgUGF0aClcbiIp
OwpAQCAtNzEsMjcgKzY0LDk0IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wKExpbmtCdWZm
ZXImIGwKICAgICBkdW1wKFdURjo6ZGF0YUZpbGUoKSwgbGlua0J1ZmZlcik7CiB9CiAKLXZvaWQg
SklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKFByaW50U3RyZWFtJiBvdXQsIExp
bmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVsKQor
dm9pZCBKSVREaXNhc3NlbWJsZXI6OnJlcG9ydFRvUHJvZmlsZXIoUEJQOjpDb21waWxhdGlvbiog
Y29tcGlsYXRpb24sIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgU3RyaW5nUHJpbnRT
dHJlYW0gb3V0OworICAgIAorICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKKyAgICBj
b21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oUEJQOjpDb21waWxlZEJ5dGVjb2RlKFBCUDo6T3Jp
Z2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygpKSk7CisgICAgb3V0LnJlc2V0KCk7CisgICAgZHVt
cERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckJ5
dGVjb2RlSW5kZXhJbk1haW5QYXRoWzBdKTsKKyAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRp
b24oUEJQOjpDb21waWxlZEJ5dGVjb2RlKFBCUDo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmlu
ZygpKSk7CisgICAgCisgICAgcmVwb3J0SW5zdHJ1Y3Rpb25zKGNvbXBpbGF0aW9uLCBsaW5rQnVm
ZmVyLCAiICAgICIsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aCwgZmlyc3RTbG93
TGFiZWwoKSk7CisgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBCUDo6Q29tcGlsZWRC
eXRlY29kZShQQlA6Ok9yaWdpblN0YWNrKCksICIgICAgKEVuZCBPZiBNYWluIFBhdGgpXG4iKSk7
CisgICAgcmVwb3J0SW5zdHJ1Y3Rpb25zKGNvbXBpbGF0aW9uLCBsaW5rQnVmZmVyLCAiICAgIChT
KSAiLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGgsIG1fZW5kT2ZTbG93UGF0aCk7
CisgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBCUDo6Q29tcGlsZWRCeXRlY29kZShQ
QlA6Ok9yaWdpblN0YWNrKCksICIgICAgKEVuZCBPZiBTbG93IFBhdGgpXG4iKSk7CisgICAgb3V0
LnJlc2V0KCk7CisgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbV9lbmRPZlNs
b3dQYXRoLCBtX2VuZE9mQ29kZSk7CisgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBC
UDo6Q29tcGlsZWRCeXRlY29kZShQQlA6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSkp
OworfQorCit2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcEhlYWRlcihQcmludFN0cmVhbSYgb3V0
LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQoreworICAgIG91dC5wcmludCgiR2VuZXJhdGVkIEJh
c2VsaW5lIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywg
SklUQ29kZTo6QmFzZWxpbmVKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICJcbiIpOworICAgIG91dC5wcmludCgiICAgQ29kZSBh
dCBbIiwgUmF3UG9pbnRlcihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSwgIiwgIiwgUmF3UG9p
bnRlcihzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5r
QnVmZmVyLmRlYnVnU2l6ZSgpKSwgIik6XG4iKTsKK30KKworTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IEpJVERpc2Fzc2VtYmxlcjo6Zmlyc3RTbG93TGFiZWwoKQogewotICAgIGZvciAodW5zaWduZWQg
aSA9IDAgOyBpIDwgbGFiZWxzLnNpemUoKTspIHsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
Zmlyc3RTbG93TGFiZWw7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGFiZWxGb3JC
eXRlY29kZUluZGV4SW5TbG93UGF0aC5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sYWJl
bEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoW2ldLmlzU2V0KCkpIHsKKyAgICAgICAgICAgIGZp
cnN0U2xvd0xhYmVsID0gbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoW2ldOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZpcnN0U2xvd0xh
YmVsLmlzU2V0KCkgPyBmaXJzdFNsb3dMYWJlbCA6IG1fZW5kT2ZTbG93UGF0aDsKK30KKworVmVj
dG9yPEpJVERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IEpJVERpc2Fzc2VtYmxlcjo6ZHVtcFZlY3Rv
ckZvckluc3RydWN0aW9ucyhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBjb25zdCBjaGFyKiBwcmVm
aXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBlbmRMYWJlbCkKK3sKKyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgVmVj
dG9yPER1bXBlZE9wPiByZXN1bHQ7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxhYmVscy5zaXplKCk7KSB7CiAgICAgICAgIGlmICghbGFiZWxzW2ldLmlzU2V0KCkpIHsKICAg
ICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisgICAgICAg
IG91dC5yZXNldCgpOworICAgICAgICByZXN1bHQuYXBwZW5kKER1bXBlZE9wKCkpOworICAgICAg
ICByZXN1bHQubGFzdCgpLmluZGV4ID0gaTsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7Ci0g
ICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoaSk7CisgICAgICAgIG1fY29kZUJsb2Nr
LT5kdW1wQnl0ZWNvZGUob3V0LCBpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBuZXh0SW5kZXgg
PSBpICsgMTsgOyBuZXh0SW5kZXgrKykgewogICAgICAgICAgICAgaWYgKG5leHRJbmRleCA+PSBs
YWJlbHMuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlu
a0J1ZmZlciwgbGFiZWxzW2ldLCBlbmRMYWJlbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0KCkuZGlzYXNzZW1ibHkgPSBvdXQudG9DU3RyaW5n
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChsYWJlbHNbbmV4dEluZGV4XS5pc1NldCgpKSB7CiAgICAgICAgICAgICAgICAg
ZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbGFiZWxzW2ldLCBsYWJlbHNbbmV4dElu
ZGV4XSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lmxhc3QoKS5kaXNhc3NlbWJseSA9IG91dC50
b0NTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBpID0gbmV4dEluZGV4OwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rp
b25zKFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIq
IHByZWZpeCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIGVuZExhYmVsKQoreworICAgIFZlY3RvcjxEdW1wZWRPcD4gZHVtcGVkT3Bz
ID0gZHVtcFZlY3RvckZvckluc3RydWN0aW9ucyhsaW5rQnVmZmVyLCBwcmVmaXgsIGxhYmVscywg
ZW5kTGFiZWwpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1wZWRPcHMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChkdW1wZWRPcHNbaV0uZGlzYXNzZW1ibHkp
OworfQorCit2b2lkIEpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0SW5zdHJ1Y3Rpb25zKFBCUDo6Q29t
cGlsYXRpb24qIGNvbXBpbGF0aW9uLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBjb25zdCBjaGFy
KiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCkKK3sKKyAgICBWZWN0b3I8RHVtcGVkT3A+IGR1bXBlZE9w
cyA9IGR1bXBWZWN0b3JGb3JJbnN0cnVjdGlvbnMobGlua0J1ZmZlciwgcHJlZml4LCBsYWJlbHMs
IGVuZExhYmVsKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtcGVkT3Bz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbigKKyAg
ICAgICAgICAgIFBCUDo6Q29tcGlsZWRCeXRlY29kZSgKKyAgICAgICAgICAgICAgICBQQlA6Ok9y
aWdpblN0YWNrKFBCUDo6T3JpZ2luKGNvbXBpbGF0aW9uLT5ieXRlY29kZXMoKSwgZHVtcGVkT3Bz
W2ldLmluZGV4KSksCisgICAgICAgICAgICAgICAgZHVtcGVkT3BzW2ldLmRpc2Fzc2VtYmx5KSk7
CisgICAgfQogfQogCiB2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByaW50
U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBmcm9tLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgdG8pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlBCUERhdGFiYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU4LDkgKzU5LDIxIEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGR1bXAoTGlua0J1ZmZlciYpOwogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIHJlcG9ydFRvUHJvZmlsZXIoUEJQOjpDb21waWxh
dGlvbiosIExpbmtCdWZmZXImKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGR1bXBIZWFkZXIoUHJp
bnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZpcnN0
U2xvd0xhYmVsKCk7CisgICAgCisgICAgc3RydWN0IER1bXBlZE9wIHsKKyAgICAgICAgdW5zaWdu
ZWQgaW5kZXg7CisgICAgICAgIENTdHJpbmcgZGlzYXNzZW1ibHk7CisgICAgfTsKKyAgICBWZWN0
b3I8RHVtcGVkT3A+IGR1bXBWZWN0b3JGb3JJbnN0cnVjdGlvbnMoTGlua0J1ZmZlciYsIGNvbnN0
IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVsKTsKKyAgICAgICAgCiAgICAgdm9pZCBkdW1wRm9y
SW5zdHJ1Y3Rpb25zKFByaW50U3RyZWFtJiwgTGlua0J1ZmZlciYsIGNvbnN0IGNoYXIqIHByZWZp
eCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGVuZExhYmVsKTsKKyAgICB2b2lkIHJlcG9ydEluc3RydWN0aW9ucyhQQlA6OkNvbXBp
bGF0aW9uKiwgTGlua0J1ZmZlciYsIGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVsKTsK
KyAgICAKICAgICB2b2lkIGR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYsIExpbmtCdWZmZXIm
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZnJvbSwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHRvKTsK
ICAgICAKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGUuaCIKKwor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
UEJQIHsKKworSlNWYWx1ZSBCeXRlY29kZTo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7
CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAg
IHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmJ5dGVjb2RlSW5kZXgsIGpzTnVtYmVyKG1fYnl0ZWNvZGVJbmRleCkpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRl
c2NyaXB0aW9uLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KG1fZGVzY3JpcHRpb24p
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29k
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQQnl0ZWNvZGVfaAorI2RlZmluZSBQ
QlBCeXRlY29kZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5
dGVjb2RlIHsKK3B1YmxpYzoKKyAgICBCeXRlY29kZSgpCisgICAgICAgIDogbV9ieXRlY29kZUlu
ZGV4KFVJTlRfTUFYKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQnl0ZWNvZGUodW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgY29uc3QgQ1N0cmluZyYgZGVzY3JpcHRpb24pCisgICAgICAgIDogbV9i
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICwgbV9kZXNjcmlwdGlvbihkZXNj
cmlwdGlvbikKKyAgICB7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7IH0KKyAgICBjb25zdCBDU3RyaW5nJiBk
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KKyAgICAKKyAgICBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7Citwcml2YXRlOgorICAgIHVuc2lnbmVkIG1f
Ynl0ZWNvZGVJbmRleDsKKyAgICBDU3RyaW5nIG1fZGVzY3JpcHRpb247Cit9OworCitpbmxpbmUg
dW5zaWduZWQgZ2V0Qnl0ZWNvZGVJbmRleEZvckJ5dGVjb2RlKEJ5dGVjb2RlKiBieXRlY29kZSkg
eyByZXR1cm4gYnl0ZWNvZGUtPmJ5dGVjb2RlSW5kZXgoKTsgfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBCeXRlY29kZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2Rl
cy5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitCeXRl
Y29kZXM6OkJ5dGVjb2RlcyhzaXplX3QgaWQsIENvZGVCbG9ja0hhc2ggaGFzaCkKKyAgICA6IG1f
aWQoaWQpCisgICAgLCBtX2hhc2goaGFzaCkKK3sKK30KKworQnl0ZWNvZGVzOjp+Qnl0ZWNvZGVz
KCkgeyB9CisKK3Vuc2lnbmVkIEJ5dGVjb2Rlczo6aW5kZXhGb3JCeXRlY29kZUluZGV4KHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxCeXRl
Y29kZSwgdW5zaWduZWQsIGdldEJ5dGVjb2RlSW5kZXhGb3JCeXRlY29kZT4oY29uc3RfY2FzdDxC
eXRlY29kZSo+KG1fYnl0ZWNvZGUuYmVnaW4oKSksIG1fYnl0ZWNvZGUuc2l6ZSgpLCBieXRlY29k
ZUluZGV4KSAtIG1fYnl0ZWNvZGUuYmVnaW4oKTsKK30KKworY29uc3QgQnl0ZWNvZGUmIEJ5dGVj
b2Rlczo6Zm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdAorewor
ICAgIHJldHVybiBhdChpbmRleEZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpOworfQor
Cit2b2lkIEJ5dGVjb2Rlczo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91
dC5wcmludCgiIyIsIG1faGFzaCwgIigiLCBtX2lkLCAiKSIpOworfQorCitKU1ZhbHVlIEJ5dGVj
b2Rlczo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVjb2Rlc0lE
LCBqc051bWJlcihtX2lkKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzaCwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpm
cm9tVVRGOCh0b0NTdHJpbmcobV9oYXNoKSkpKTsKKyAgICAKKyAgICBKU0FycmF5KiBzdHJlYW0g
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2J5dGVjb2RlLnNpemUoKTsgKytpKQorICAgICAgICBzdHJlYW0tPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGksIG1fYnl0ZWNvZGVbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGUs
IHN0cmVhbSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0
ZWNvZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UEJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUEJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQQnl0ZWNv
ZGVzX2gKKyNkZWZpbmUgUEJQQnl0ZWNvZGVzX2gKKworI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2gu
aCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGUuaCIKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAg
eworCitjbGFzcyBCeXRlY29kZXMgeworcHVibGljOgorICAgIEJ5dGVjb2RlcyhzaXplX3QgaWQs
IENvZGVCbG9ja0hhc2ggaGFzaCk7CisgICAgfkJ5dGVjb2RlcygpOworICAgIAorICAgIHZvaWQg
YXBwZW5kKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSkgeyBtX2J5dGVjb2RlLmFwcGVuZChieXRl
Y29kZSk7IH0KKyAgICAKKyAgICBzaXplX3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Cisg
ICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisgICAgCisg
ICAgLy8gTm90ZSB0aGF0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgbm90IGluZGV4ZWQgYnkgYnl0
ZWNvZGUgaW5kZXguCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNv
ZGUuc2l6ZSgpOyB9CisgICAgY29uc3QgQnl0ZWNvZGUmIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsg
cmV0dXJuIG1fYnl0ZWNvZGVbaV07IH0KKyAgICAKKyAgICB1bnNpZ25lZCBpbmRleEZvckJ5dGVj
b2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3Q7CisgICAgY29uc3QgQnl0ZWNv
ZGUmIGZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3Q7CisgICAg
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCisgICAgSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzaXplX3QgbV9pZDsK
KyAgICBDb2RlQmxvY2tIYXNoIG1faGFzaDsKKyAgICBWZWN0b3I8Qnl0ZWNvZGU+IG1fYnl0ZWNv
ZGU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBCeXRl
Y29kZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGls
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBDb21waWxhdGlvbi5oIgorCisjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitDb21waWxhdGlvbjo6Q29tcGlsYXRpb24o
Qnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBpbGF0aW9uS2luZCBraW5kKQorICAgIDogbV9ieXRl
Y29kZXMoYnl0ZWNvZGVzKQorICAgICwgbV9raW5kKGtpbmQpCit7Cit9CisKK0NvbXBpbGF0aW9u
Ojp+Q29tcGlsYXRpb24oKSB7IH0KKwordm9pZCBDb21waWxhdGlvbjo6YWRkRGVzY3JpcHRpb24o
Y29uc3QgQ29tcGlsZWRCeXRlY29kZSYgY29tcGlsZWRCeXRlY29kZSkKK3sKKyAgICBtX2Rlc2Ny
aXB0aW9ucy5hcHBlbmQoY29tcGlsZWRCeXRlY29kZSk7Cit9CisKK0V4ZWN1dGlvbkNvdW50ZXIq
IENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJiBvcmln
aW4pCit7CisgICAgSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+
ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NvdW50ZXJzLmZpbmQob3JpZ2luKTsKKyAgICBpZiAoaXRl
ciAhPSBtX2NvdW50ZXJzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXRlci0+dmFsdWUuZ2V0KCk7
CisgICAgCisgICAgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+IGNvdW50ZXIgPSBhZG9wdFB0cihu
ZXcgRXhlY3V0aW9uQ291bnRlcigpKTsKKyAgICBFeGVjdXRpb25Db3VudGVyKiByZXN1bHQgPSBj
b3VudGVyLmdldCgpOworICAgIG1fY291bnRlcnMuYWRkKG9yaWdpbiwgY291bnRlci5yZWxlYXNl
KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWUgQ29tcGlsYXRpb246OnRvSlMo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZXNJRCwganNOdW1iZXIo
bV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxhdGlvbktpbmQsIGpzU3RyaW5nKGV4
ZWMsIFN0cmluZzo6ZnJvbVVURjgodG9DU3RyaW5nKG1fa2luZCkpKSk7CisgICAgCisgICAgSlNB
cnJheSogZGVzY3JpcHRpb25zID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kZXNjcmlwdGlvbnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIGRlc2NyaXB0aW9ucy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9kZXNjcmlwdGlvbnNb
aV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVzY3JpcHRpb25zLCBkZXNjcmlwdGlvbnMpOworICAg
IAorICAgIEpTQXJyYXkqIGNvdW50ZXJzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsK
KyAgICBIYXNoTWFwPE9yaWdpblN0YWNrLCBPd25QdHI8RXhlY3V0aW9uQ291bnRlcj4gPjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9jb3VudGVycy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8T3Jp
Z2luU3RhY2ssIE93blB0cjxFeGVjdXRpb25Db3VudGVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gbV9jb3VudGVycy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIEpT
T2JqZWN0KiBjb3VudGVyRW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAg
ICAgY291bnRlckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkub3JpZ2luLCBpdGVyLT5rZXkudG9KUyhleGVjKSk7CisgICAgICAgIGNvdW50
ZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmV4ZWN1dGlvbkNvdW50LCBqc051bWJlcihpdGVyLT52YWx1ZS0+Y291bnQoKSkpOworICAg
ICAgICBjb3VudGVycy0+cHVzaChleGVjLCBjb3VudGVyRW50cnkpOworICAgIH0KKyAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b3VudGVycywgY291bnRlcnMpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUENvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFBCUENvbXBpbGF0aW9uX2gKKyNkZWZpbmUgUEJQQ29tcGlsYXRpb25faAorCisjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGF0aW9uS2luZC5oIgorI2luY2x1
ZGUgIlBCUENvbXBpbGVkQnl0ZWNvZGUuaCIKKyNpbmNsdWRlICJQQlBFeGVjdXRpb25Db3VudGVy
LmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luU3RhY2suaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlczsKKworLy8gUmVwcmVzZW50cyB0aGUg
YWN0IG9mIGV4ZWN1dGluZyBzb21lIGJ5dGVjb2RlcyBpbiBzb21lIGVuZ2luZSwgYW5kIGRvZXMK
Ky8vIGFsbCBvZiB0aGUgY291bnRpbmcgZm9yIHRob3NlIGV4ZWN1dGlvbnMuCisKK2NsYXNzIENv
bXBpbGF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ29tcGlsYXRpb24pOworcHVibGljOgorICAgIENvbXBpbGF0aW9uKEJ5dGVjb2Rlcyos
IENvbXBpbGF0aW9uS2luZCk7CisgICAgfkNvbXBpbGF0aW9uKCk7CisgICAgCisgICAgQnl0ZWNv
ZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQorICAgIENvbXBp
bGF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgCisgICAgdm9p
ZCBhZGREZXNjcmlwdGlvbihjb25zdCBDb21waWxlZEJ5dGVjb2RlJik7CisgICAgRXhlY3V0aW9u
Q291bnRlciogZXhlY3V0aW9uQ291bnRlckZvcihjb25zdCBPcmlnaW5TdGFjayYpOworICAgIAor
ICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAg
Qnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKKyAgICBDb21waWxhdGlvbktpbmQgbV9raW5kOworICAg
IFZlY3RvcjxDb21waWxlZEJ5dGVjb2RlPiBtX2Rlc2NyaXB0aW9uczsKKyAgICBIYXNoTWFwPE9y
aWdpblN0YWNrLCBPd25QdHI8RXhlY3V0aW9uQ291bnRlcj4gPiBtX2NvdW50ZXJzOworfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYgLy8gUEJQQ29tcGlsYXRpb25faAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29t
cGlsYXRpb25LaW5kLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBDb21waWxhdGlvbktpbmQuaCIKKworI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UEJQOjpDb21waWxhdGlvbktpbmQga2luZCkK
K3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEpTQzo6UEJQOjpMTEludDoKKyAgICAg
ICAgb3V0LnByaW50KCJMTEludCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBC
UDo6QmFzZWxpbmU6CisgICAgICAgIG91dC5wcmludCgiQmFzZWxpbmUiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgSlNDOjpQQlA6OkRGRzoKKyAgICAgICAgb3V0LnByaW50KCJERkciKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIENSQVNIKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0
aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQQ29tcGlsYXRpb25LaW5k
X2gKKyNkZWZpbmUgUEJQQ29tcGlsYXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBQQlAgeworCitlbnVtIENvbXBpbGF0aW9uS2luZCB7IExMSW50LCBCYXNlbGluZSwgREZH
IH07CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworbmFtZXNwYWNlIFdURiB7CisKK2Ns
YXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQ
QlA6OkNvbXBpbGF0aW9uS2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
UEJQQ29tcGlsYXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQ29t
cGlsZWRCeXRlY29kZS5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitDb21waWxlZEJ5dGVjb2RlOjpDb21waWxlZEJ5
dGVjb2RlKGNvbnN0IE9yaWdpblN0YWNrJiBvcmlnaW4sIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0
aW9uKQorICAgIDogbV9vcmlnaW4ob3JpZ2luKQorICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlw
dGlvbikKK3sKK30KKworQ29tcGlsZWRCeXRlY29kZTo6fkNvbXBpbGVkQnl0ZWNvZGUoKQorewor
fQorCitKU1ZhbHVlIENvbXBpbGVkQnl0ZWNvZGU6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAoreworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
KyAgICAKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5vcmlnaW4sIG1fb3JpZ2luLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlc2Ny
aXB0aW9uLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KG1fZGVzY3JpcHRpb24pKSk7
CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBC
UAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRl
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBD
b21waWxlZEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgUEJQQ29tcGlsZWRCeXRlY29kZV9oCisjZGVmaW5lIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAor
CisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBCUE9yaWdpblN0YWNrLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBC
UCB7CisKK2NsYXNzIENvbXBpbGVkQnl0ZWNvZGUgeworcHVibGljOgorICAgIC8vIEl0J3MgdmFs
aWQgdG8gaGF2ZSBhbiBlbXB0eSBPcmlnaW5TdGFjaywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhp
cyBpcyBzb21lCisgICAgLy8gc29ydCBvZiBub24tYnl0ZWNvZGUtcmVsYXRlZCBtYWNoaW5lIGNv
ZGUuCisgICAgQ29tcGlsZWRCeXRlY29kZShjb25zdCBPcmlnaW5TdGFjayYsIGNvbnN0IENTdHJp
bmcmIGRlc2NyaXB0aW9uKTsKKyAgICB+Q29tcGlsZWRCeXRlY29kZSgpOworICAgIAorICAgIGNv
bnN0IE9yaWdpblN0YWNrJiBvcmlnaW5TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9
CisgICAgY29uc3QgQ1N0cmluZyYgZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2Ny
aXB0aW9uOyB9CisgICAgCisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAg
IAorcHJpdmF0ZToKKyAgICBPcmlnaW5TdGFjayBtX29yaWdpbjsKKyAgICBDU3RyaW5nIG1fZGVz
Y3JpcHRpb247Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQ
QlBDb21waWxlZEJ5dGVjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUERhdGFiYXNlLmgiCisKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1N0cmlu
Z1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworRGF0
YWJhc2U6OkRhdGFiYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICA6IG1fZ2xvYmFs
RGF0YShnbG9iYWxEYXRhKQoreworfQorCitEYXRhYmFzZTo6fkRhdGFiYXNlKCkKK3sKK30KKwor
Qnl0ZWNvZGVzKiBEYXRhYmFzZTo6YWRkQnl0ZWNvZGVzKENvZGVCbG9ja0hhc2ggaGFzaCkKK3sK
KyAgICBtX2J5dGVjb2Rlcy5hcHBlbmQoQnl0ZWNvZGVzKG1fYnl0ZWNvZGVzLnNpemUoKSwgaGFz
aCkpOworICAgIHJldHVybiAmbV9ieXRlY29kZXMubGFzdCgpOworfQorCitCeXRlY29kZXMqIERh
dGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAg
U3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgIAorICAgIGNvZGVCbG9jayA9IGNvZGVCbG9jay0+
YmFzZWxpbmVWZXJzaW9uKCk7CisgICAgCisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29k
ZXMqPjo6aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVzTWFwLmZpbmQoY29kZUJsb2NrKTsKKyAg
ICBpZiAoaXRlciAhPSBtX2J5dGVjb2Rlc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXIt
PnZhbHVlOworICAgIAorICAgIEJ5dGVjb2RlcyogcmVzdWx0ID0gYWRkQnl0ZWNvZGVzKGNvZGVC
bG9jay0+aGFzaCgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSAw
OyBieXRlY29kZUluZGV4IDwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7KSB7Cisg
ICAgICAgIG91dC5yZXNldCgpOworICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQs
IGJ5dGVjb2RlSW5kZXgpOworICAgICAgICByZXN1bHQtPmFwcGVuZChCeXRlY29kZShieXRlY29k
ZUluZGV4LCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICAgICAgCisgICAgICAgIGJ5dGVjb2RlSW5k
ZXggKz0gb3Bjb2RlTGVuZ3RoKAorICAgICAgICAgICAgbV9nbG9iYWxEYXRhLmludGVycHJldGVy
LT5nZXRPcGNvZGVJRCgKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
W2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKSk7CisgICAgfQorICAgIAorICAgIG1fYnl0ZWNvZGVz
TWFwLmFkZChjb2RlQmxvY2ssIHJlc3VsdCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Cit7CisgICAgbV9ieXRlY29kZXNNYXAucmVtb3ZlKGNvZGVCbG9jayk7Cit9CisKK0NvbXBpbGF0
aW9uKiBEYXRhYmFzZTo6bmV3Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBp
bGF0aW9uS2luZCBraW5kKQoreworICAgIE93blB0cjxDb21waWxhdGlvbj4gY29tcGlsYXRpb24g
PSBhZG9wdFB0cihuZXcgQ29tcGlsYXRpb24oYnl0ZWNvZGVzLCBraW5kKSk7CisgICAgQ29tcGls
YXRpb24qIHJlc3VsdCA9IGNvbXBpbGF0aW9uLmdldCgpOworICAgIG1fY29tcGlsYXRpb25zLmFw
cGVuZChjb21waWxhdGlvbi5yZWxlYXNlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Nv
bXBpbGF0aW9uKiBEYXRhYmFzZTo6bmV3Q29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvbXBpbGF0aW9uS2luZCBraW5kKQoreworICAgIHJldHVybiBuZXdDb21waWxhdGlvbihlbnN1
cmVCeXRlY29kZXNGb3IoY29kZUJsb2NrKSwga2luZCk7Cit9CisKK0pTVmFsdWUgRGF0YWJhc2U6
OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICBKU0FycmF5KiBieXRlY29kZXMg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2J5dGVjb2Rlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYnl0ZWNvZGVzLT5wdXREaXJl
Y3RJbmRleChleGVjLCBpLCBtX2J5dGVjb2Rlc1tpXS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRl
Y29kZXMsIGJ5dGVjb2Rlcyk7CisgICAgCisgICAgSlNBcnJheSogY29tcGlsYXRpb25zID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9jb21waWxhdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNvbXBpbGF0aW9ucy0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgaSwgbV9jb21waWxhdGlvbnNbaV0tPnRvSlMoZXhlYykpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNvbXBpbGF0aW9ucywgY29tcGlsYXRpb25zKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitTdHJpbmcgRGF0YWJhc2U6OnRvSlNPTigpIGNvbnN0Cit7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoCisgICAgICAgIG1fZ2xv
YmFsRGF0YSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShtX2dsb2JhbERhdGEsIGpz
TnVsbCgpKSk7CisgICAgCisgICAgcmV0dXJuIEpTT05TdHJpbmdpZnkoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIHRvSlMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLCAwKTsKK30KKwor
Ym9vbCBEYXRhYmFzZTo6c2F2ZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgY29uc3QKK3sKKyAgICBP
d25QdHI8RmlsZVByaW50U3RyZWFtPiBvdXQgPSBGaWxlUHJpbnRTdHJlYW06Om9wZW4oZmlsZW5h
bWUsICJ3Iik7CisgICAgaWYgKCFvdXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBvdXQtPnByaW50KHRvSlNPTigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UEJQRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQRGF0YWJhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9QQlBEYXRhYmFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQRGF0
YWJhc2VfaAorI2RlZmluZSBQQlBEYXRhYmFzZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiUEJQQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiUEJQQ29tcGlsYXRpb25LaW5kLmgi
CisjaW5jbHVkZSAiUEJQQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNz
IERhdGFiYXNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRGF0YWJhc2UpOworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIERhdGFiYXNl
KEpTR2xvYmFsRGF0YSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5EYXRhYmFzZSgpOworICAg
IAorICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayopOworICAgIHZv
aWQgbm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKik7CisgICAgCisgICAgQ29tcGlsYXRpb24q
IG5ld0NvbXBpbGF0aW9uKENvZGVCbG9jayosIENvbXBpbGF0aW9uS2luZCk7CisgICAgQ29tcGls
YXRpb24qIG5ld0NvbXBpbGF0aW9uKEJ5dGVjb2RlcyosIENvbXBpbGF0aW9uS2luZCk7CisgICAg
CisgICAgLy8gQ29udmVydHMgdGhlIGRhdGFiYXNlIHRvIGEgSmF2YVNjcmlwdCBvYmplY3QgdGhh
dCBpcyBzdWl0YWJsZSBmb3IgSlNPTiBzdHJpbmdpZmljYXRpb24uCisgICAgLy8gTm90ZSB0aGF0
IGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXNlIGFuIEV4ZWNTdGF0ZSogYXNzb2NpYXRl
ZCB3aXRoIGEgZ2xvYmFsCisgICAgLy8gb2JqZWN0IHRoYXQgaXMgImNsZWFuIiAtIGkuZS4gYXJy
YXkgYW5kIG9iamVjdCBwcm90b3R5cGVzIGhhdmVuJ3QgaGFkIHN0cmFuZ2UgdGhpbmdzCisgICAg
Ly8gZG9uZSB0byB0aGVtLiBBbmQgeWVzLCBpdCBzaG91bGQgYmUgYXBwcm9wcmlhdGUgdG8ganVz
dCB1c2UgYSBnbG9iYWxFeGVjIGhlcmUuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhYmFz
ZSB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHVzaW5nIGEgcHJpdmF0ZSB0ZW1wb3JhcnkgZ2xvYmFs
IG9iamVjdCwKKyAgICAvLyBhbmQgdGhlbiByZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9u
IG9mIHRoYXQgb2JqZWN0LgorICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b0pTT04oKSBj
b25zdDsKKyAgICAKKyAgICAvLyBTYXZlcyB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiAoZnJvbSB0
b0pTT04oKSkgdG8gdGhlIGdpdmVuIGZpbGUuIFJldHVybnMgZmFsc2UgaWYgdGhlCisgICAgLy8g
c2F2ZSBmYWlsZWQuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzYXZlKGNvbnN0IGNoYXIq
IGZpbGVuYW1lKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBCeXRlY29kZXMqIGFkZEJ5dGVjb2Rl
cyhDb2RlQmxvY2tIYXNoKTsKKyAgICAKKyAgICBKU0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsK
KyAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBtX2J5dGVjb2RlczsKKyAgICBIYXNoTWFw
PENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNvZGVzTWFwOworICAgIFZlY3RvcjxPd25Q
dHI8Q29tcGlsYXRpb24+ID4gbV9jb21waWxhdGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBEYXRhYmFzZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBFeGVjdXRpb25D
b3VudGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBFeGVjdXRpb25Db3VudGVy
X2gKKyNkZWZpbmUgUEJQRXhlY3V0aW9uQ291bnRlcl9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdEFs
bG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEV4ZWN1dGlvbkNvdW50ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOyBXVEZfTUFLRV9OT05DT1BZQUJMRShFeGVjdXRpb25Db3VudGVy
KTsKK3B1YmxpYzoKKyAgICBFeGVjdXRpb25Db3VudGVyKCkgOiBtX2NvdW50ZXIoMCkgeyB9Cisg
ICAgCisgICAgdWludDY0X3QqIGFkZHJlc3MoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9CisgICAg
CisgICAgdWludDY0X3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXI7IH0KKworcHJp
dmF0ZToKKyAgICB1aW50NjRfdCBtX2NvdW50ZXI7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6UEJQCisKKyNlbmRpZiAvLyBQQlBFeGVjdXRpb25Db3VudGVyX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luLmgiCisK
KyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2Rlcy5oIgor
I2luY2x1ZGUgIlBCUERhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQ
IHsKKworT3JpZ2luOjpPcmlnaW4oRGF0YWJhc2UmIGRhdGFiYXNlLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICA6IG1fYnl0ZWNvZGVzKGRhdGFiYXNl
LmVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2spKQorICAgICwgbV9ieXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpCit7Cit9CisKK3ZvaWQgT3JpZ2luOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCptX2J5dGVjb2RlcywgIjpiYyMiLCBtX2J5dGVjb2Rl
SW5kZXgpOworfQorCitKU1ZhbHVlIE9yaWdpbjo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Cit7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmJ5dGVjb2Rlc0lELCBqc051bWJlcihtX2J5dGVjb2Rlcy0+aWQoKSkpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmJ5dGVjb2RlSW5kZXgsIGpzTnVtYmVyKG1fYnl0ZWNvZGVJbmRleCkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBQQlBPcmlnaW5faAorI2RlZmluZSBQQlBPcmlnaW5faAorCisjaW5jbHVkZSAi
Q29kZUJsb2NrSGFzaC5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQ29kZUJsb2NrOworCituYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNvZGVz
OworY2xhc3MgRGF0YWJhc2U7CisKK2NsYXNzIE9yaWdpbiB7CitwdWJsaWM6CisgICAgT3JpZ2lu
KCkKKyAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoVUlOVF9NQVgpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBPcmlnaW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6
IG1fYnl0ZWNvZGVJbmRleChVSU5UX01BWCAtIDEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBP
cmlnaW4oQnl0ZWNvZGVzKiBieXRlY29kZXMsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAg
ICAgIDogbV9ieXRlY29kZXMoYnl0ZWNvZGVzKQorICAgICAgICAsIG1fYnl0ZWNvZGVJbmRleChi
eXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCA8IFVJ
TlRfTUFYIC0gMSk7CisgICAgfQorICAgIAorICAgIE9yaWdpbihEYXRhYmFzZSYsIENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gbV9ieXRlY29kZUluZGV4ID09IFVJTlRfTUFYOyB9CisgICAgCisgICAg
Qnl0ZWNvZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQorICAg
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7
IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3JpZ2luJikgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IE9yaWdpbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIAorICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKKyAgICB1bnNpZ25lZCBt
X2J5dGVjb2RlSW5kZXg7Cit9OworCitpbmxpbmUgYm9vbCBPcmlnaW46Om9wZXJhdG9yPT0oY29u
c3QgT3JpZ2luJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ieXRlY29kZXMgPT0gb3Ro
ZXIubV9ieXRlY29kZXMKKyAgICAgICAgJiYgbV9ieXRlY29kZUluZGV4ID09IG90aGVyLm1fYnl0
ZWNvZGVJbmRleDsKK30KKworaW5saW5lIHVuc2lnbmVkIE9yaWdpbjo6aGFzaCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdURjo6UHRySGFzaDxCeXRlY29kZXMqPjo6aGFzaChtX2J5dGVjb2Rlcykg
KyBtX2J5dGVjb2RlSW5kZXg7Cit9CisKK2lubGluZSBib29sIE9yaWdpbjo6aXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2J5dGVjb2RlSW5kZXggPT0gVUlO
VF9NQVggLSAxOworfQorCitzdHJ1Y3QgT3JpZ2luSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgT3JpZ2luJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBPcmlnaW4mIGEsIGNvbnN0IE9yaWdpbiYgYikgeyByZXR1cm4g
YSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQQlA6Ok9yaWdpbj4geworICAgIHR5cGVk
ZWYgSlNDOjpQQlA6Ok9yaWdpbkhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlBC
UDo6T3JpZ2luPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlBCUDo6T3JpZ2luPiB7IH07
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUEJQT3JpZ2luX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdp
blN0YWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBCUE9yaWdpblN0YWNrLmgiCisKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFzZS5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCit7CisgICAgbV9zdGFjay5hcHBlbmQoT3Jp
Z2luKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7Cit9CisKK09yaWdpblN0YWNrOjpPcmln
aW5TdGFjayhjb25zdCBPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChvcmln
aW4pOworfQorCitPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2soRGF0YWJhc2UmIGRhdGFiYXNlLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAg
ICBWZWN0b3I8Q29kZU9yaWdpbj4gc3RhY2sgPSBjb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7Cisg
ICAgCisgICAgYXBwZW5kKE9yaWdpbihkYXRhYmFzZSwgY29kZUJsb2NrLCBzdGFja1swXS5ieXRl
Y29kZUluZGV4KSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHN0YWNrLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGFwcGVuZChPcmlnaW4oCisgICAgICAgICAgICBkYXRhYmFz
ZS5lbnN1cmVCeXRlY29kZXNGb3Ioc3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNv
ZGVCbG9jaygpKSwKKyAgICAgICAgICAgIHN0YWNrW2ldLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICB9
Cit9CisKK09yaWdpblN0YWNrOjp+T3JpZ2luU3RhY2soKSB7IH0KKwordm9pZCBPcmlnaW5TdGFj
azo6YXBwZW5kKGNvbnN0IE9yaWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RhY2suYXBwZW5kKG9y
aWdpbik7Cit9CisKK2Jvb2wgT3JpZ2luU3RhY2s6Om9wZXJhdG9yPT0oY29uc3QgT3JpZ2luU3Rh
Y2smIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3N0YWNrLnNpemUoKSAhPSBvdGhlci5tX3N0
YWNrLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fc3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX3N0YWNrW2ldICE9
IG90aGVyLm1fc3RhY2tbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAorICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBPcmlnaW5TdGFjazo6aGFzaCgpIGNv
bnN0Cit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9zdGFjay5zaXplKCk7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9zdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgcmVzdWx0
ICo9IDM7CisgICAgICAgIHJlc3VsdCArPSBtX3N0YWNrW2ldLmhhc2goKTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBPcmlnaW5TdGFjazo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0YWNr
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgb3V0LnByaW50KCIg
LS0+ICIpOworICAgICAgICBvdXQucHJpbnQobV9zdGFja1tpXSk7CisgICAgfQorfQorCitKU1Zh
bHVlIE9yaWdpblN0YWNrOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU0Fy
cmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0YWNrLnNpemUoKTsgKytpKQorICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG1fc3RhY2tbaV0udG9KUyhleGVjKSk7CisgICAg
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2su
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmln
aW5TdGFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUE9yaWdpblN0YWNrX2gK
KyNkZWZpbmUgUEJQT3JpZ2luU3RhY2tfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIlBCUE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQ29kZUJsb2NrOworc3RydWN0IENvZGVPcmlnaW47CisKK25hbWVzcGFjZSBQ
QlAgeworCitjbGFzcyBEYXRhYmFzZTsKKworY2xhc3MgT3JpZ2luU3RhY2sgeworcHVibGljOgor
ICAgIE9yaWdpblN0YWNrKCkgeyB9CisgICAgCisgICAgT3JpZ2luU3RhY2soV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKTsKKyAgICAKKyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhjb25z
dCBPcmlnaW4mIG9yaWdpbik7CisgICAgCisgICAgZXhwbGljaXQgT3JpZ2luU3RhY2soRGF0YWJh
c2UmLCBDb2RlQmxvY2sqLCBjb25zdCBDb2RlT3JpZ2luJik7CisgICAgCisgICAgfk9yaWdpblN0
YWNrKCk7CisgICAgCisgICAgdm9pZCBhcHBlbmQoY29uc3QgT3JpZ2luJiBvcmlnaW4pOworICAg
IAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCk7
IH0KKyAgICAKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5zaXpl
KCk7IH0KKyAgICBjb25zdCBPcmlnaW4mIGZyb21Cb3R0b20odW5zaWduZWQgaSkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFja1tpXTsgfQorICAgIGNvbnN0IE9yaWdpbiYgZnJvbVRvcCh1bnNpZ25lZCBp
KSBjb25zdCB7IHJldHVybiBtX3N0YWNrW21fc3RhY2suc2l6ZSgpIC0gaSAtIDFdOyB9CisgICAg
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9yaWdpblN0YWNrJikgY29uc3Q7CisgICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAg
ICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFZl
Y3RvcjxPcmlnaW4sIDE+IG1fc3RhY2s7Cit9OworCitpbmxpbmUgYm9vbCBPcmlnaW5TdGFjazo6
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YWNrLnNp
emUoKSA9PSAxICYmIG1fc3RhY2tbMF0uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKwor
c3RydWN0IE9yaWdpblN0YWNrSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
T3JpZ2luU3RhY2smIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IE9yaWdpblN0YWNrJiBhLCBjb25zdCBPcmlnaW5TdGFjayYgYikgeyByZXR1
cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSB0cnVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQQlA6Ok9yaWdpblN0YWNrPiB7Cisg
ICAgdHlwZWRlZiBKU0M6OlBCUDo6T3JpZ2luU3RhY2tIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8SlNDOjpQQlA6Ok9yaWdpblN0YWNrPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6
OlBCUDo6T3JpZ2luU3RhY2s+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBQQlBPcmlnaW5TdGFja19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTkgKzMxLDMwIEBACiAgICAgbWFjcm8oYXJndW1lbnRzKSBcCiAgICAgbWFjcm8o
QXJyYXkpIFwKICAgICBtYWNybyhiaW5kKSBcCisgICAgbWFjcm8oYnl0ZWNvZGUpIFwKKyAgICBt
YWNybyhieXRlY29kZUluZGV4KSBcCisgICAgbWFjcm8oYnl0ZWNvZGVzKSBcCisgICAgbWFjcm8o
Ynl0ZWNvZGVzSUQpIFwKICAgICBtYWNybyhjYWxsKSBcCiAgICAgbWFjcm8oY2FsbGVlKSBcCiAg
ICAgbWFjcm8oY2FsbGVyKSBcCisgICAgbWFjcm8oY29tcGlsYXRpb25LaW5kKSBcCisgICAgbWFj
cm8oY29tcGlsYXRpb25zKSBcCiAgICAgbWFjcm8oY29tcGlsZSkgXAogICAgIG1hY3JvKGNvbmZp
Z3VyYWJsZSkgXAogICAgIG1hY3JvKGNvbnN0cnVjdG9yKSBcCisgICAgbWFjcm8oY291bnRlcnMp
IFwKKyAgICBtYWNybyhkZXNjcmlwdGlvbikgXAorICAgIG1hY3JvKGRlc2NyaXB0aW9ucykgXAog
ICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhldmFsKSBcCiAgICAgbWFjcm8oZXhl
YykgXAorICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZnJvbUNoYXJDb2Rl
KSBcCiAgICAgbWFjcm8oZ2xvYmFsKSBcCiAgICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oaGFz
T3duUHJvcGVydHkpIFwKKyAgICBtYWNybyhoYXNoKSBcCiAgICAgbWFjcm8oaWdub3JlQ2FzZSkg
XAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8oaW5wdXQpIFwKQEAgLTU2LDYgKzY3LDcg
QEAKICAgICBtYWNybyhuYW1lKSBcCiAgICAgbWFjcm8obm93KSBcCiAgICAgbWFjcm8oT2JqZWN0
KSBcCisgICAgbWFjcm8ob3JpZ2luKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhw
cm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2
aXNpb24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIGlubGluZSBib29sIHBy
ZXBhcmVGb3JFeGVjdXRpb24oRXhlY1N0YXQKICAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBs
b3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCiAgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKICAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAg
ICAgaWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCisgICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRl
Y29kZXNGb3IoY29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKQEAgLTU2LDYgKzU4LDggQEAgaW5saW5lIGJvb2wgcHJl
cGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKAogICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxv
dyBsZXZlbCBpbnRlcnByZXRlci4KICAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2lu
dChleGVjLT5nbG9iYWxEYXRhKCksIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVj
ayk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFy
aXR5Q2hlY2spOworICAgICAgICBpZiAoZXhlYy0+Z2xvYmFsRGF0YSgpLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlcikKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPmVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2suZ2V0KCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDUsMTAgKzI0NSwxNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
CiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKICAgICAKICAgICBMTEludDo6RGF0
YTo6cGVyZm9ybUFzc2VydGlvbnMoKnRoaXMpOworICAgIAorICAgIGlmIChPcHRpb25zOjplbmFi
bGVQQlAoKSkKKyAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gYWRvcHRQdHIobmV3IFBC
UDo6RGF0YWJhc2UoKnRoaXMpKTsKIH0KIAogSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkK
IHsKKyAgICAvLyBDbGVhciB0aGlzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IG5vYm9keSB0cmllcyB0
byByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIGl0LgorICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlci5j
bGVhcigpOworICAgIAogICAgIEFTU0VSVCghbV9hcGlMb2NrLmN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdMb2NrKCkpOwogICAgIGhlYXAuZGlkU3RhcnRWTVNodXRkb3duKCk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMzYy
NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgorI2luY2x1ZGUg
IlBCUERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJTbWFs
bFN0cmluZ3MuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKQEAgLTM1Miw2ICszNTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgZG91YmxlIGNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKIAogICAg
ICAgICBQcm9maWxlciogbV9lbmFibGVkUHJvZmlsZXI7CisgICAgICAgIE93blB0cjxQQlA6OkRh
dGFiYXNlPiBtX3BlckJ5dGVjb2RlUHJvZmlsZXI7CiAgICAgICAgIFJlZ0V4cENhY2hlKiBtX3Jl
Z0V4cENhY2hlOwogICAgICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFsbG9jYXRv
cjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNp
b24gMTM2Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHYoYm9v
bCwgc2hvd0RGR0Rpc2Fzc2VtYmx5LCBmYWxzZSkgXAogICAgIHYoYm9vbCwgc2hvd0FsbERGR05v
ZGVzLCBmYWxzZSkgXAogICAgIFwKKyAgICB2KGJvb2wsIGVuYWJsZVBCUCwgZmFsc2UpIFwKKyAg
ICBcCiAgICAgdih1bnNpZ25lZCwgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0
aW9uQ291bnQsIDEwMDAwKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1GdW5jdGlv
bkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxODApIFwKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzYzMTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM3IEBACisyMDEyLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhYmxlIHRvIHJlcG9ydCBwcm9maWxpbmcgZGF0
YSBhc3NvY2lhdGVkIHdpdGggdGhlIElSIGR1bXBzIGFuZCBkaXNhc3NlbWJseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBzb21lIG1pbm9yIGNo
YW5nZXMgdG8gc3VwcG9ydCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBGaWxlT3V0
cHV0U3RyZWFtCisgICAgICAgIG5vdyBoYXMgYW4gb3BlbigpIG1ldGhvZCwgYW5kIERhdGFMb2cg
dXNlcyBpdC4gU3RyaW5nUHJpbnRTdHJlYW0gaGFzIGEgcmVzZXQoKSBtZXRob2QsCisgICAgICAg
IHdoaWNoIGFsbG93cyB5b3UgdG8gcmV1c2UgdGhlIHNhbWUgU3RyaW5nUHJpbnRTdHJlYW0gZm9y
IGNyZWF0aW5nIG11bHRpcGxlIHN0cmluZ3MuCisgICAgICAgIFNlZ21lbnRlZFZlY3RvciBub3cg
aGFzIGEgY29uc3Qgb3BlcmF0b3JbXS4gQW5kLCBXVEZTdHJpbmcgbm93IGNhbiBkbyBmcm9tVVRG
OCgpIG9uCisgICAgICAgIGEgQ1N0cmluZyBkaXJlY3RseS4KKworICAgICAgICAqIHd0Zi9EYXRh
TG9nLmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKToKKyAgICAgICAg
KiB3dGYvRmlsZVByaW50U3RyZWFtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFt
OjpvcGVuKToKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5o
OgorICAgICAgICAqIHd0Zi9TZWdtZW50ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6U2VnbWVu
dGVkVmVjdG9yOjphdCk6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3IpOgorICAgICAgICAoV1RG
OjpTZWdtZW50ZWRWZWN0b3I6Om9wZXJhdG9yW10pOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjpyZXNldCk6Cisg
ICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oOgorICAgICAg
ICAoU3RyaW5nUHJpbnRTdHJlYW0pOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZzo6ZnJvbVVURjgpOgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmluZyk6CisKIDIwMTItMTEt
MzAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPiwgUGllcnJlIFJv
c3NpICA8cGllcnJlLnJvc3NpQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFNlcGFyYXRlIFF0
IFdlYktpdCBpbnRvIFF0IFdlYktpdCBhbmQgUXQgV2ViS2l0IFdpZGdldHMKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0RhdGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFM
b2cuY3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTAgKzczLDggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxv
Z0ZpbGVPbmNlKCkKICNlbmRpZgogCiAgICAgaWYgKGZpbGVuYW1lKSB7Ci0gICAgICAgIEZJTEUq
IHJhd0ZpbGUgPSBmb3BlbihhY3R1YWxGaWxlbmFtZSwgInciKTsKLSAgICAgICAgaWYgKHJhd0Zp
bGUpCi0gICAgICAgICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShyYXdGaWxlKTsKLSAg
ICAgICAgZWxzZQorICAgICAgICBmaWxlID0gRmlsZVByaW50U3RyZWFtOjpvcGVuKGFjdHVhbEZp
bGVuYW1lLCAidyIpLmxlYWtQdHIoKTsKKyAgICAgICAgaWYgKCFmaWxlKQogICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSAlcyBmb3Ig
d3JpdGluZy5cbiIsIGFjdHVhbEZpbGVuYW1lKTsKICAgICB9CiAjZW5kaWYgLy8gREFUQV9MT0df
VE9fRklMRQpJbmRleDogU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAxMzYy
NzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw2ICs0MSwxNSBAQCBGaWxlUHJpbnRTdHJlYW06On5GaWxlUHJpbnRTdHJlYW0oKQog
ICAgIGZjbG9zZShtX2ZpbGUpOwogfQogCitQYXNzT3duUHRyPEZpbGVQcmludFN0cmVhbT4gRmls
ZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb25zdCBjaGFyKiBtb2Rl
KQoreworICAgIEZJTEUqIGZpbGUgPSBmb3BlbihmaWxlbmFtZSwgbW9kZSk7CisgICAgaWYgKCFm
aWxlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZp
bGVQcmludFN0cmVhbShmaWxlKSk7Cit9CisKIHZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRm
KGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQogewogICAgIHZmcHJpbnRmKG1f
ZmlsZSwgZm9ybWF0LCBhcmdMaXN0KTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCShy
ZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBGaWxlUHJpbnRTdHJlYW1faAog
CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQxLDYgKzQyLDgg
QEAgcHVibGljOgogICAgIEZpbGVQcmludFN0cmVhbShGSUxFKiwgQWRvcHRpb25Nb2RlID0gQWRv
cHQpOwogICAgIHZpcnR1YWwgfkZpbGVQcmludFN0cmVhbSgpOwogICAgIAorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEZpbGVQcmludFN0cmVhbT4gb3Blbihjb25zdCBjaGFyKiBmaWxlbmFtZSwgY29u
c3QgY2hhciogbW9kZSk7CisgICAgCiAgICAgRklMRSogZmlsZSgpIHsgcmV0dXJuIG1fZmlsZTsg
fQogICAgIAogICAgIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdU
Rl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApOwpJbmRleDogU291cmNlL1dURi93dGYvU2VnbWVudGVk
VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJ
KHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjgsMTEgKzEyOCwyMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgICAgIHJldHVybiBzZWdtZW50Rm9yKGluZGV4KS0+YXQoc3Vic2NyaXB0Rm9yKGluZGV4KSk7
CiAgICAgICAgIH0KIAorICAgICAgICBjb25zdCBUJiBhdChzaXplX3QgaW5kZXgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNlZ21lbnRlZFZlY3RvcjxU
LCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+Kj4odGhpcyktPmF0KGluZGV4KTsKKyAgICAg
ICAgfQorCiAgICAgICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwogICAgICAgICB9CiAKKyAgICAgICAgY29uc3Qg
VCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhdChpbmRleCk7CisgICAgICAgIH0KKwogICAgICAgICBUJiBsYXN0KCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGF0KHNpemUoKSAtIDEpOwpJbmRleDogU291cmNlL1dU
Ri93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmNwcAkocmV2aXNpb24gMTM2Mjc2KQorKysgU291cmNlL1dURi93
dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxMiBA
QCBDU3RyaW5nIFN0cmluZ1ByaW50U3RyZWFtOjp0b0NTdHJpbmcoKQogICAgIHJldHVybiBDU3Ry
aW5nKG1fYnVmZmVyLCBtX25leHQpOwogfQogCit2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjpyZXNl
dCgpCit7CisgICAgbV9uZXh0ID0gMDsKKyAgICBtX2J1ZmZlclswXSA9IDA7Cit9CisKIHZvaWQg
U3RyaW5nUHJpbnRTdHJlYW06OmluY3JlYXNlU2l6ZShzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBB
U1NFUlQobmV3U2l6ZSA+IG1fc2l6ZSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFt
LmgJKHJldmlzaW9uIDEzNjI3NikKKysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9Q
UklOVEYoMiwgMCk7CiAgICAgCiAgICAgQ1N0cmluZyB0b0NTdHJpbmcoKTsKKyAgICB2b2lkIHJl
c2V0KCk7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVhc2VTaXplKHNpemVfdCk7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxMiw2ICs5
MTIsMTEgQEAgU3RyaW5nIFN0cmluZzo6ZnJvbVVURjgoY29uc3QgTENoYXIqIHN0cgogICAgIHJl
dHVybiBmcm9tVVRGOChzdHJpbmcsIHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihzdHJpbmcpKSk7CiB9CiAKK1N0cmluZyBTdHJpbmc6OmZyb21VVEY4KGNvbnN0IENTdHJpbmcm
IHMpCit7CisgICAgcmV0dXJuIGZyb21VVEY4KHMuZGF0YSgpKTsKK30KKwogU3RyaW5nIFN0cmlu
Zzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgTENoYXIqIHN0cmluZywgc2l6ZV90
IHNpemUpCiB7CiAgICAgU3RyaW5nIHV0ZjggPSBmcm9tVVRGOChzdHJpbmcsIHNpemUpOwpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAxMzYyNzYpCisrKyBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsNiArNDQwLDcgQEAg
cHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4
KGNvbnN0IExDaGFyKik7CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBz
LCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4ocyksIGxlbmd0aCk7IH07CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25z
dCBjaGFyKiBzKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocykpOyB9OworICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgQ1N0cmluZyYgcyk7
CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04
LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxp
ZCBVVEYtOC4KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzYzMTMp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBz
aG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRo
ZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdG9vbCB0aGF0IGFsbG93cyB5b3UgdG8gZ3JvayB0
aGUgb3V0cHV0IGZyb20gSlNDJ3MgbmV3IFBCUCAoUGVyIEJ5dGVjb2RlCisgICAgICAgIFByb2Zp
bGVyKS4gQ3VycmVudGx5LCB0aGlzIHN0aWxsIGdldHMgY29uZnVzZWQgYSBiaXQgYWJvdXQgdGhl
IGV4ZWN1dGlvbiBjb3VudHMKKyAgICAgICAgb2YgYSBtZXRob2QgcnVubmluZyBzdGFuZGFsb25l
IHZlcnN1cyBhIG1ldGhvZCBydW5uaW5nIGlubGluZWQsIGJ1dCBvdGhlciB0aGFuCisgICAgICAg
IHRoYXQsIGl0J3MgcHJldHR5IGNvb2wuIFNlZSB0aGUgYXR0YWNoZWQgInNhbXBsaW5nIHByb2Zp
bGluZyBzZXNzaW9uIiBhdHRhY2hlZCB0bworICAgICAgICB0aGUgYnVnIHRvIHNlZSBpdCBpbiBh
Y3Rpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dDogQWRkZWQuCisK
IDIwMTItMTItMDEgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAg
ICAgICBbR1RLXSBBMTF5IHRlc3RzIGluIFdLMiByZXBvcnQgYmFkbHktZm9ybWF0dGVkIEFYIHJv
bGVzCkluZGV4OiBUb29scy9TY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dAkocmV2aXNpb24gMCkKKysrIFRvb2xz
L1NjcmlwdHMvZGlzcGxheS1wYnAtb3V0cHV0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwMiBA
QAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICdydWJ5Z2VtcycKKworcmVxdWlyZSAnanNvbicKK3JlcXVpcmUgJ3Jl
YWRsaW5lJworCitjbGFzcyBCeXRlY29kZQorICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2RlSW5k
ZXgsIDpkZXNjcmlwdGlvbiwgOnRvcENvdW50cworICAgIAorICAgIGRlZiBpbml0aWFsaXplKGJ5
dGVjb2RlSW5kZXgsIGRlc2NyaXB0aW9uKQorICAgICAgICBAYnl0ZWNvZGVJbmRleCA9IGJ5dGVj
b2RlSW5kZXgKKyAgICAgICAgQGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgQHRv
cENvdW50cyA9IFtdCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZFRvcENvdW50KGNvdW50KQor
ICAgICAgICBAdG9wQ291bnRzIDw8IGNvdW50CisgICAgZW5kCisgICAgCisgICAgZGVmIHRvdGFs
RXhlY3V0aW9uQ291bnQKKyAgICAgICAgc3VtID0gMAorICAgICAgICBAdG9wQ291bnRzLmVhY2gg
eworICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICBzdW0gKz0gdmFsdWUuY291bnQK
KyAgICAgICAgfQorICAgICAgICBzdW0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZXhlY3V0aW9u
Q291bnQoZW5naW5lKQorICAgICAgICBzdW0gPSAwCisgICAgICAgIEB0b3BDb3VudHMuZWFjaCB7
CisgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAgIGlmIHZhbHVlLmVuZ2luZSA9PSBl
bmdpbmUKKyAgICAgICAgICAgICAgICBzdW0gKz0gdmFsdWUuY291bnQKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICB9CisgICAgICAgIHN1bQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJ5dGVjb2Rl
cworICAgIGF0dHJfYWNjZXNzb3IgOmhhc2gKKyAgICBpbmNsdWRlIEVudW1lcmFibGUKKyAgICAK
KyAgICBkZWYgaW5pdGlhbGl6ZShqc29uKQorICAgICAgICBAaGFzaCA9IGpzb25bImhhc2giXS50
b19zCisgICAgICAgIEBieXRlY29kZSA9IHt9CisgICAgICAgIGpzb25bImJ5dGVjb2RlIl0uZWFj
aCB7CisgICAgICAgICAgICB8IHN1Ykpzb24gfAorICAgICAgICAgICAgaW5kZXggPSBzdWJKc29u
WyJieXRlY29kZUluZGV4Il0udG9faQorICAgICAgICAgICAgQGJ5dGVjb2RlW2luZGV4XSA9IEJ5
dGVjb2RlLm5ldyhpbmRleCwgc3ViSnNvblsiZGVzY3JpcHRpb24iXS50b19zKQorICAgICAgICB9
CisgICAgZW5kCisgICAgCisgICAgZGVmIGVhY2gKKyAgICAgICAgQGJ5dGVjb2RlLnZhbHVlcy5z
b3J0e3xhLCBifCBhLmJ5dGVjb2RlSW5kZXggPD0+IGIuYnl0ZWNvZGVJbmRleH0uZWFjaCB7Cisg
ICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgIH0K
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgYnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAg
QGJ5dGVjb2RlW2J5dGVjb2RlSW5kZXhdCisgICAgZW5kCisgICAgCisgICAgZGVmIHRvdGFsTWF4
RXhlY3V0aW9uQ291bnQKKyAgICAgICAgbWF4ID0gMAorICAgICAgICBAYnl0ZWNvZGUuZWFjaF92
YWx1ZSB7CisgICAgICAgICAgICB8IGJ5dGVjb2RlIHwKKyAgICAgICAgICAgIG1heCA9IFttYXgs
IGJ5dGVjb2RlLnRvdGFsRXhlY3V0aW9uQ291bnRdLm1heAorICAgICAgICB9CisgICAgICAgIG1h
eAorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXhFeGVjdXRpb25Db3VudChlbmdpbmUpCisgICAg
ICAgIG1heCA9IDAKKyAgICAgICAgQGJ5dGVjb2RlLmVhY2hfdmFsdWUgeworICAgICAgICAgICAg
fCBieXRlY29kZSB8CisgICAgICAgICAgICBtYXggPSBbbWF4LCBieXRlY29kZS5leGVjdXRpb25D
b3VudChlbmdpbmUpXS5tYXgKKyAgICAgICAgfQorICAgICAgICBtYXgKKyAgICBlbmQKK2VuZAor
CitkZWYgb3JpZ2luU3RhY2tGcm9tSlNPTihqc29uKQorICAgIGpzb24ubWFwIHsKKyAgICAgICAg
fCBzdWJKc29uIHwKKyAgICAgICAgJGJ5dGVjb2Rlc1tzdWJKc29uWyJieXRlY29kZXNJRCJdLnRv
X2ldLmJ5dGVjb2RlKHN1Ykpzb25bImJ5dGVjb2RlSW5kZXgiXS50b19pKQorICAgIH0KK2VuZAor
CitjbGFzcyBDb21waWxlZEJ5dGVjb2RlCisgICAgYXR0cl9hY2Nlc3NvciA6b3JpZ2luLCA6ZGVz
Y3JpcHRpb24KKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShqc29uKQorICAgICAgICBAb3JpZ2lu
ID0gb3JpZ2luU3RhY2tGcm9tSlNPTihqc29uWyJvcmlnaW4iXSkKKyAgICAgICAgQGRlc2NyaXB0
aW9uID0ganNvblsiZGVzY3JpcHRpb24iXS50b19zCisgICAgZW5kCitlbmQKKworY2xhc3MgRXhl
Y3V0aW9uQ291bnRlcgorICAgIGF0dHJfYWNjZXNzb3IgOm9yaWdpbiwgOmVuZ2luZSwgOmNvdW50
CisgICAgCisgICAgZGVmIGluaXRpYWxpemUob3JpZ2luLCBlbmdpbmUsIGNvdW50KQorICAgICAg
ICBAb3JpZ2luID0gb3JpZ2luCisgICAgICAgIEBlbmdpbmUgPSBlbmdpbmUKKyAgICAgICAgQGNv
dW50ID0gY291bnQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBDb21waWxhdGlvbgorICAgIGF0dHJf
YWNjZXNzb3IgOmJ5dGVjb2RlLCA6ZW5naW5lLCA6ZGVzY3JpcHRpb25zLCA6Y291bnRlcnMKKyAg
ICAKKyAgICBkZWYgaW5pdGlhbGl6ZShqc29uKQorICAgICAgICBAYnl0ZWNvZGUgPSAkYnl0ZWNv
ZGVzW2pzb25bImJ5dGVjb2Rlc0lEIl0udG9faV0KKyAgICAgICAgQGVuZ2luZSA9IGpzb25bImNv
bXBpbGF0aW9uS2luZCJdCisgICAgICAgIEBkZXNjcmlwdGlvbnMgPSBqc29uWyJkZXNjcmlwdGlv
bnMiXS5tYXAgeworICAgICAgICAgICAgfCBzdWJKc29uIHwKKyAgICAgICAgICAgIENvbXBpbGVk
Qnl0ZWNvZGUubmV3KHN1Ykpzb24pCisgICAgICAgIH0KKyAgICAgICAgQGNvdW50ZXJzID0ge30K
KyAgICAgICAganNvblsiY291bnRlcnMiXS5lYWNoIHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8
CisgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW5TdGFja0Zyb21KU09OKHN1Ykpzb25bIm9yaWdp
biJdKQorICAgICAgICAgICAgY291bnRlciA9IEV4ZWN1dGlvbkNvdW50ZXIubmV3KG9yaWdpbiwg
QGVuZ2luZSwgc3ViSnNvblsiZXhlY3V0aW9uQ291bnQiXS50b19pKQorICAgICAgICAgICAgQGNv
dW50ZXJzW29yaWdpbl0gPSBjb3VudGVyCisgICAgICAgICAgICBvcmlnaW5bLTFdLmFkZFRvcENv
dW50KGNvdW50ZXIpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCiskanNvbiA9IEpTT046OnBh
cnNlKElPOjpyZWFkKEFSR1ZbMF0pKQorJGJ5dGVjb2RlcyA9ICRqc29uWyJieXRlY29kZXMiXS5t
YXAgeworICAgIHwgc3ViSnNvbiB8CisgICAgQnl0ZWNvZGVzLm5ldyhzdWJKc29uKQorfQorJGNv
bXBpbGF0aW9ucyA9ICRqc29uWyJjb21waWxhdGlvbnMiXS5tYXAgeworICAgIHwgc3ViSnNvbiB8
CisgICAgQ29tcGlsYXRpb24ubmV3KHN1Ykpzb24pCit9CiskZW5naW5lcyA9IFsiQmFzZWxpbmUi
LCAiREZHIl0KKworZGVmIGxwYWQoc3RyLGNoYXJzKQorICBpZiBzdHIubGVuZ3RoPmNoYXJzCisg
ICAgc3RyCisgIGVsc2UKKyAgICAiJSN7Y2hhcnN9cyIlKHN0cikKKyAgZW5kCitlbmQKKworZGVm
IHJwYWQoc3RyLCBjaGFycykKKyAgICB3aGlsZSBzdHIubGVuZ3RoIDwgY2hhcnMKKyAgICAgICAg
c3RyICs9ICIgIgorICAgIGVuZAorICAgIHN0cgorZW5kCisKK2RlZiBjZW50ZXIoc3RyLCBjaGFy
cykKKyAgICB3aGlsZSBzdHIubGVuZ3RoIDwgY2hhcnMKKyAgICAgICAgc3RyICs9ICIgIgorICAg
ICAgICBpZiBzdHIubGVuZ3RoIDwgY2hhcnMKKyAgICAgICAgICAgIHN0ciA9ICIgIiArIHN0cgor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBzdHIKK2VuZAorCitkZWYgbWF5QmVIYXNoKGhhc2gp
CisgICAgaGFzaCA9fiAvXiMvIG9yIGhhc2guc2l6ZSA9PSA2CitlbmQKKworZGVmIGdldEhhc2go
aGFzaCkKKyAgICBpZiBoYXNoID1+IC9eIy8KKyAgICAgICAgJH4ucG9zdF9tYXRjaAorICAgIGVs
c2UKKyAgICAgICAgaGFzaAorICAgIGVuZAorZW5kCisKK21vZHVsZSBDb21tYW5kcworICAgIGRl
ZiBzZWxmLkNNRF9oZWxwCisgICAgICAgIHB1dHMgInN1bW1hcnkgICAgIFByaW50IGEgc3VtbWFy
eSBvZiBjb2RlIGJsb2NrIGV4ZWN1dGlvbiByYXRlcy4iCisgICAgICAgIHB1dHMgImRpc3BsYXkg
ICAgIERpc3BsYXkgZGV0YWlscyBmb3IgYSBjb2RlIGJsb2NrLiIKKyAgICAgICAgcHV0cyAiaGVs
cCAgICAgICAgUHJpbnQgdGhpcyBtZXNzYWdlLiIKKyAgICAgICAgcHV0cyAicXVpdCAgICAgICAg
UXVpdC4iCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYuQ01EX3F1aXQKKyAgICAgICAgZXhp
dCAwCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYuQ01EX3N1bW1hcnkKKyAgICAgICAgaGFz
aENvbHMgPSAxNAorICAgICAgICBjb3VudENvbHMgPSAxMCAqICRlbmdpbmVzLnNpemUKKyAgICAg
ICAgCisgICAgICAgIHB1dHMocnBhZCgiQ29kZUJsb2NrIiwgaGFzaENvbHMpICsgIiAiICsgcnBh
ZCgkZW5naW5lcy5qb2luKCIvIikgKyAiIENvdW50cyIsIGNvdW50Q29scykpCisgICAgICAgICRi
eXRlY29kZXMuc29ydCB7CisgICAgICAgICAgICB8IGEsIGIgfAorICAgICAgICAgICAgYi50b3Rh
bE1heEV4ZWN1dGlvbkNvdW50IDw9PiBhLnRvdGFsTWF4RXhlY3V0aW9uQ291bnQKKyAgICAgICAg
fS5lYWNoIHsKKyAgICAgICAgICAgIHwgYnl0ZWNvZGUgfAorICAgICAgICAgICAgcHV0cyhjZW50
ZXIoIiMiICsgYnl0ZWNvZGUuaGFzaCwgaGFzaENvbHMpICsgIiAiICsKKyAgICAgICAgICAgICAg
ICAgY2VudGVyKCRlbmdpbmVzLm1hcCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBl
bmdpbmUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlLm1heEV4ZWN1dGlv
bkNvdW50KGVuZ2luZSkudG9fcworICAgICAgICAgICAgICAgICAgICAgICAgfS5qb2luKCIvIiks
IGNvdW50Q29scykpCisgICAgICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5DTURf
ZGlzcGxheSgqYXJncykKKyAgICAgICAgY2FzZSBhcmdzLmxlbmd0aAorICAgICAgICB3aGVuIDEK
KyAgICAgICAgICAgIGhhc2ggPSBhcmdzWzBdCisgICAgICAgICAgICBlbmdpbmUgPSAiQmFzZWxp
bmUiCisgICAgICAgICAgICAkY29tcGlsYXRpb25zLmVhY2ggeworICAgICAgICAgICAgICAgIHwg
Y29tcGlsYXRpb24gfAorICAgICAgICAgICAgICAgIG5leHQgaWYgY29tcGlsYXRpb24uYnl0ZWNv
ZGUuaGFzaCAhPSBoYXNoCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgY29t
cGlsYXRpb24uZW5naW5lID09ICJERkciCisgICAgICAgICAgICAgICAgICAgIGVuZ2luZSA9ICJE
RkciCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICB9CisgICAgICAgIHdoZW4gMgorICAgICAgICAgICAgaWYgbWF5QmVIYXNoKGFyZ3Nb
MF0pCisgICAgICAgICAgICAgICAgaGFzaCA9IGFyZ3NbMF0KKyAgICAgICAgICAgICAgICBlbmdp
bmUgPSBhcmdzWzFdCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5naW5lID0g
YXJnc1swXQorICAgICAgICAgICAgICAgIGhhc2ggPSBhcmdzWzFdCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHV0cyAiVXNhZ2U6IHN1bW1hcnkgPGNvZGUgYmxv
Y2sgaGFzaD4gPGVuZ2luZT4iCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisgICAg
ICAgIAorICAgICAgICBjb3VudENvbHMgPSAxMCAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgJGNv
bXBpbGF0aW9ucy5lYWNoIHsKKyAgICAgICAgICAgIHwgY29tcGlsYXRpb24gfAorICAgICAgICAg
ICAgbmV4dCBpZiBjb21waWxhdGlvbi5ieXRlY29kZS5oYXNoICE9IGhhc2gKKyAgICAgICAgICAg
IG5leHQgaWYgY29tcGlsYXRpb24uZW5naW5lICE9IGVuZ2luZQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBwdXRzKHJwYWQoJGVuZ2luZXMuam9pbigiLyIpICsgIiBDb3VudHMiLCBjb3VudENv
bHMpICsgIiBEaXNhc3NlbWJseSBmb3IgI3toYXNofSBpbiAje2VuZ2luZX0iKQorICAgICAgICAg
ICAgY29tcGlsYXRpb24uZGVzY3JpcHRpb25zLmVhY2ggeworICAgICAgICAgICAgICAgIHwgZGVz
Y3JpcHRpb24gfAorICAgICAgICAgICAgICAgIG5leHQgaWYgZGVzY3JpcHRpb24uZGVzY3JpcHRp
b24gPX4gL0NvdW50RXhlY3V0aW9uXCgvCisgICAgICAgICAgICAgICAgaWYgZGVzY3JpcHRpb24u
b3JpZ2luLmVtcHR5PworICAgICAgICAgICAgICAgICAgICBjb3VudHNTdHJpbmcgPSAiIgorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY291bnRzU3RyaW5nID0gJGVu
Z2luZXMubWFwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgZW5naW5lIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLm9yaWdpblstMV0uZXhlY3V0aW9uQ291bnQoZW5n
aW5lKQorICAgICAgICAgICAgICAgICAgICB9LmpvaW4oIi8iKQorICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmVh
Y2ggeworICAgICAgICAgICAgICAgICAgICB8IGxpbmUgfAorICAgICAgICAgICAgICAgICAgICBw
dXRzKGNlbnRlcihjb3VudHNTdHJpbmcsIGNvdW50Q29scykgKyAiICIgKyBsaW5lLmNob21wKQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorZW5k
CisKK2RlZiBleGVjdXRlQ29tbWFuZChjb21tYW5kLCBhcmdzKQorICAgIGlmIENvbW1hbmRzLm1l
dGhvZHMuZmluZF9pbmRleCgiQ01EXyN7Y29tbWFuZH0iKQorICAgICAgICBDb21tYW5kcy5zZW5k
KCJDTURfI3tjb21tYW5kfSIsICphcmdzKQorICAgIGVsc2UKKyAgICAgICAgcHV0cyAiSW52YWxp
ZCBjb21tYW5kOiAje2NvbW1hbmR9IgorICAgIGVuZAorZW5kCisKK2V4ZWN1dGVDb21tYW5kKCJz
dW1tYXJ5IiwgW10pCisKK3doaWxlIGNvbW1hbmRMaW5lID0gUmVhZGxpbmUucmVhZGxpbmUoIj4g
IiwgdHJ1ZSkKKyAgICBjb21tYW5kQXJyYXkgPSBjb21tYW5kTGluZS5zcGxpdAorICAgIGV4ZWN1
dGVDb21tYW5kKGNvbW1hbmRBcnJheVswXSwgY29tbWFuZEFycmF5WzEuLi0xXSkKK2VuZAorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9TY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCg==
</data>
<flag name="commit-queue"
          id="193128"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177134</attachid>
            <date>2012-12-02 01:09:20 -0800</date>
            <delta_ts>2012-12-02 01:11:00 -0800</delta_ts>
            <desc>WRONG PATCH</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>84804</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxMzYzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE2ICsxMTIsMTYgQEAgc3RhdGljIENTdHJp
bmcgaWROYW1lKGludCBpZDAsIGNvbnN0IElkZQogICAgIHJldHVybiBtYWtlU3RyaW5nKGlkZW50
LnN0cmluZygpLCAiKEBpZCIsIFN0cmluZzo6bnVtYmVyKGlkMCksICIpIikudXRmOCgpOwogfQog
Ci12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoaW50IGxvY2F0
aW9uKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKFByaW50
U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbikKIHsKICNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVO
VFMpCiAgICAgY29uc3QgY2hhciogY29tbWVudCA9IGNvbW1lbnRGb3JCeXRlY29kZU9mZnNldChs
b2NhdGlvbik7CiAgICAgaWYgKGNvbW1lbnQpCi0gICAgICAgIGRhdGFMb2dGKCJcdFx0IDsgJXMi
LCBjb21tZW50KTsKKyAgICAgICAgb3V0LnByaW50ZigiXHRcdCA7ICVzIiwgY29tbWVudCk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CiAjZW5kaWYKLSAgICBkYXRhTG9nRigi
XG4iKTsKKyAgICBvdXQucHJpbnQoIlxuIik7CiB9CiAKIENTdHJpbmcgQ29kZUJsb2NrOjpyZWdp
c3Rlck5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgcikgY29uc3QKQEAgLTE4MiwzMyArMTgyLDMz
IEBAIE5FVkVSX0lOTElORSBzdGF0aWMgY29uc3QgY2hhciogZGVidWdIb28KICAgICByZXR1cm4g
IiI7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludFVuYXJ5T3AoRXhlY1N0YXRlKiBleGVjLCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQordm9p
ZCBDb2RlQmxvY2s6OnByaW50VW5hcnlPcChQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4
ZWMsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3Ap
CiB7CiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdFx0ICVzLCAlcyIsIGxvY2F0
aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpKTsKLSAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNcdFx0ICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
IH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50QmluYXJ5T3AoRXhlY1N0YXRlKiBleGVjLCBpbnQg
bG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQordm9pZCBD
b2RlQmxvY2s6OnByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQog
ewogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2dG
KCJbJTRkXSAlc1x0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjIpLmRhdGEoKSk7Ci0gICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOworICAgIG91dC5wcmludGYoIlslNGRdICVzXHRcdCAlcywgJXMsICVzIiwgbG9j
YXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKIH0KIAotdm9pZCBDb2Rl
QmxvY2s6OnByaW50Q29uZGl0aW9uYWxKdW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1
Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIq
IG9wKQordm9pZCBDb2RlQmxvY2s6OnByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBv
dXQsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKQogewogICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICBkYXRhTG9nRigiWyU0ZF0gJXNcdFx0ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvcCwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICBvdXQucHJp
bnRmKCJbJTRkXSAlc1x0XHQgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiB9CiAKLXZvaWQgQ29k
ZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiBpdCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChQcmlu
dFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiBpdCkKIHsKICAgICBjb25zdCBjaGFyKiBvcDsKICAgICBzd2l0Y2ggKGV4ZWMtPmlu
dGVycHJldGVyKCktPmdldE9wY29kZUlEKGl0LT51Lm9wY29kZSkpIHsKQEAgLTI2MSwyOCArMjYx
LDI4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZ0YoIlslNGRdICVz
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNcdCAlcywgJXMsICVz
IiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpKTsKICAgICBpdCArPSA1OwogfQogCiAjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5U
KSAvLyB1bnVzZWQgaW4gc29tZSBjb25maWd1cmF0aW9ucwotc3RhdGljIHZvaWQgZHVtcFN0cnVj
dHVyZShjb25zdCBjaGFyKiBuYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIGR1bXBTdHJ1Y3R1cmUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgY2hhciogbmFtZSwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBkYXRhTG9nRigiJXMgPSAlcCIsIG5hbWUsIHN0cnVj
dHVyZSk7CisgICAgb3V0LnByaW50ZigiJXMgPSAlcCIsIG5hbWUsIHN0cnVjdHVyZSk7CiAgICAg
CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7CiAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQotICAgICAg
ICBkYXRhTG9nRigiIChvZmZzZXQgPSAlZCkiLCBvZmZzZXQpOworICAgICAgICBvdXQucHJpbnRm
KCIgKG9mZnNldCA9ICVkKSIsIG9mZnNldCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShKSVQp
IC8vIHVudXNlZCB3aGVuIG5vdCBFTkFCTEUoSklUKSwgbGVhZGluZyB0byBzaWxseSB3YXJuaW5n
cwotc3RhdGljIHZvaWQgZHVtcENoYWluKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIGR1bXBDaGFpbihQcmludFN0
cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgSWRlbnRp
ZmllciYgaWRlbnQpCiB7Ci0gICAgZGF0YUxvZ0YoImNoYWluID0gJXA6IFsiLCBjaGFpbik7Cisg
ICAgb3V0LnByaW50ZigiY2hhaW4gPSAlcDogWyIsIGNoYWluKTsKICAgICBib29sIGZpcnN0ID0g
dHJ1ZTsKICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBjdXJyZW50U3RydWN0dXJl
ID0gY2hhaW4tPmhlYWQoKTsKICAgICAgICAgICpjdXJyZW50U3RydWN0dXJlOwpAQCAtMjkxLDEz
ICsyOTEsMTMgQEAgc3RhdGljIHZvaWQgZHVtcENoYWluKEV4ZWNTdGF0ZSogZXhlYywgUwogICAg
ICAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGF0YUxv
Z0YoIiwgIik7Ci0gICAgICAgIGR1bXBTdHJ1Y3R1cmUoInN0cnVjdCIsIGV4ZWMsIGN1cnJlbnRT
dHJ1Y3R1cmUtPmdldCgpLCBpZGVudCk7CisgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3Ry
dWN0IiwgZXhlYywgY3VycmVudFN0cnVjdHVyZS0+Z2V0KCksIGlkZW50KTsKICAgICB9Ci0gICAg
ZGF0YUxvZ0YoIl0iKTsKKyAgICBvdXQucHJpbnRmKCJdIik7CiB9CiAjZW5kaWYKIAotdm9pZCBD
b2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxv
Y2F0aW9uKQordm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uKQogewogICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBsb2NhdGlvbjsKIApA
QCAtMzA3LDIxICszMDcsMjEgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKAogICAgIAogI2lmIEVOQUJMRShMTElOVCkKICAgICBpZiAoZXhlYy0+aW50ZXJwcmV0ZXIo
KS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX2dldF9hcnJheV9s
ZW5ndGgpCi0gICAgICAgIGRhdGFMb2dGKCIgbGxpbnQoYXJyYXlfbGVuZ3RoKSIpOworICAgICAg
ICBvdXQucHJpbnRmKCIgbGxpbnQoYXJyYXlfbGVuZ3RoKSIpOwogICAgIGVsc2UgewogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
OwotICAgICAgICBkYXRhTG9nRigiIGxsaW50KCIpOwotICAgICAgICBkdW1wU3RydWN0dXJlKCJz
dHJ1Y3QiLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50KTsKLSAgICAgICAgZGF0YUxvZ0YoIikiKTsK
KyAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KCIpOworICAgICAgICBkdW1wU3RydWN0dXJlKG91
dCwgInN0cnVjdCIsIGV4ZWMsIHN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICBvdXQucHJpbnRm
KCIpIik7CiAgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChudW1iZXJP
ZlN0cnVjdHVyZVN0dWJJbmZvcygpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCIgaml0KCIpOworICAg
ICAgICBvdXQucHJpbnRmKCIgaml0KCIpOwogICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8gPSBnZXRTdHViSW5mbyhsb2NhdGlvbik7CiAgICAgICAgIGlmICghc3R1YkluZm8uc2Vl
bikKLSAgICAgICAgICAgIGRhdGFMb2dGKCJub3Qgc2VlbiIpOworICAgICAgICAgICAgb3V0LnBy
aW50Zigibm90IHNlZW4iKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUq
IGJhc2VTdHJ1Y3R1cmUgPSAwOwogICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1
Y3R1cmUgPSAwOwpAQCAtMzMxLDQwICszMzEsNDAgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZENhY2hlU3RhdHVzKAogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHN0dWJJ
bmZvLmFjY2Vzc1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxm
OgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJzZWxmIik7CisgICAgICAgICAgICAgICAgb3V0
LnByaW50Zigic2VsZiIpOwogICAgICAgICAgICAgICAgIGJhc2VTdHJ1Y3R1cmUgPSBzdHViSW5m
by51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG86Ci0gICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoInByb3RvIik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50
ZigicHJvdG8iKTsKICAgICAgICAgICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5n
ZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgICAgICBw
cm90b3R5cGVTdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1
Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFj
Y2Vzc19nZXRfYnlfaWRfY2hhaW46Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoImNoYWluIik7
CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2hhaW4iKTsKICAgICAgICAgICAgICAgICBi
YXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVy
ZS5nZXQoKTsKICAgICAgICAgICAgICAgICBjaGFpbiA9IHN0dWJJbmZvLnUuZ2V0QnlJZENoYWlu
LmNoYWluLmdldCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBh
Y2Nlc3NfZ2V0X2J5X2lkX3NlbGZfbGlzdDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigic2Vs
Zl9saXN0Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50Zigic2VsZl9saXN0Iik7CiAgICAg
ICAgICAgICAgICAgc3RydWN0dXJlTGlzdCA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0LnN0
cnVjdHVyZUxpc3Q7CiAgICAgICAgICAgICAgICAgbGlzdFNpemUgPSBzdHViSW5mby51LmdldEJ5
SWRTZWxmTGlzdC5saXN0U2l6ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OgotICAgICAgICAgICAgICAgIGRhdGFM
b2dGKCJwcm90b19saXN0Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigicHJvdG9fbGlz
dCIpOwogICAgICAgICAgICAgICAgIHN0cnVjdHVyZUxpc3QgPSBzdHViSW5mby51LmdldEJ5SWRQ
cm90b0xpc3Quc3RydWN0dXJlTGlzdDsKICAgICAgICAgICAgICAgICBsaXN0U2l6ZSA9IHN0dWJJ
bmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCJ1bnNldCIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoInVuc2V0Iik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfZ2VuZXJp
YzoKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiZ2VuZXJpYyIpOworICAgICAgICAgICAgICAg
IG91dC5wcmludGYoImdlbmVyaWMiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgYWNjZXNzX2dldF9hcnJheV9sZW5ndGg6Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0YoImFycmF5X2xlbmd0aCIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoImFycmF5X2xl
bmd0aCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X3N0cmluZ19sZW5ndGg6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoInN0cmluZ19sZW5n
dGgiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJzdHJpbmdfbGVuZ3RoIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzcyLDEyNSArMzcyLDEyNiBAQCB2b2lkIENvZGVC
bG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChiYXNlU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgZGF0
YUxvZ0YoIiwgIik7Ci0gICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZSgic3RydWN0IiwgZXhl
YywgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwg
Iik7CisgICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBleGVjLCBi
YXNlU3RydWN0dXJlLCBpZGVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChwcm90b3R5cGVTdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiLCAiKTsKLSAgICAgICAgICAgICAgICBkdW1wU3RydWN0dXJlKCJwcm90b3R5cGVTdHJ1Y3Qi
LCBleGVjLCBiYXNlU3RydWN0dXJlLCBpZGVudCk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50
ZigiLCAiKTsKKyAgICAgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInByb3RvdHlwZVN0
cnVjdCIsIGV4ZWMsIGJhc2VTdHJ1Y3R1cmUsIGlkZW50KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKGNoYWluKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0YoIiwgIik7Ci0gICAgICAgICAgICAgICAgZHVtcENoYWluKGV4ZWMsIGNoYWluLCBpZGVudCk7
CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAgICAgICBkdW1w
Q2hhaW4ob3V0LCBleGVjLCBjaGFpbiwgaWRlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlTGlzdCkgewotICAgICAgICAgICAgICAgIGRh
dGFMb2dGKCIsIGxpc3QgPSAlcDogWyIsIHN0cnVjdHVyZUxpc3QpOworICAgICAgICAgICAgICAg
IG91dC5wcmludGYoIiwgbGlzdCA9ICVwOiBbIiwgc3RydWN0dXJlTGlzdCk7CiAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIoIik7Ci0gICAgICAgICAgICAgICAgICAgIGR1
bXBTdHJ1Y3R1cmUoImJhc2UiLCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0W2ldLmJhc2UuZ2V0
KCksIGlkZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7Cisg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIigiKTsKKyAgICAgICAgICAgICAgICAgICAg
ZHVtcFN0cnVjdHVyZShvdXQsICJiYXNlIiwgZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS5i
YXNlLmdldCgpLCBpZGVudCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVMaXN0
LT5saXN0W2ldLmlzQ2hhaW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1
cmVMaXN0LT5saXN0W2ldLnUuY2hhaW4uZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wQ2hh
aW4oZXhlYywgc3RydWN0dXJlTGlzdC0+bGlzdFtpXS51LmNoYWluLmdldCgpLCBpZGVudCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkdW1wQ2hhaW4ob3V0LCBleGVjLCBzdHJ1Y3R1cmVMaXN0LT5saXN0
W2ldLnUuY2hhaW4uZ2V0KCksIGlkZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmVMaXN0LT5saXN0W2ldLnUucHJvdG8uZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
dW1wU3RydWN0dXJlKCJwcm90byIsIGV4ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0udS5wcm90
by5nZXQoKSwgaWRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYo
IiwgIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJw
cm90byIsIGV4ZWMsIHN0cnVjdHVyZUxpc3QtPmxpc3RbaV0udS5wcm90by5nZXQoKSwgaWRlbnQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIpIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGYoIikiKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
Il0iKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgZGF0YUxvZ0YoIikiKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIp
OwogICAgIH0KICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6cHJpbnRDYWxsT3AoRXhlY1N0
YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNo
YXIqIG9wLCBDYWNoZUR1bXBNb2RlIGNhY2hlRHVtcE1vZGUpCit2b2lkIENvZGVCbG9jazo6cHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24s
IGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlIGNh
Y2hlRHVtcE1vZGUpCiB7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBp
bnQgYXJnQ291bnQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nRigiWyU0ZF0gJXNcdCAlcywgJWQsICVk
IiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuYykuZGF0YSgpLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQpOworICAgIG91dC5wcmludGYoIlslNGRdICVzXHQgJXMsICVkLCAl
ZCIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmMpLmRhdGEoKSwgYXJnQ291
bnQsIHJlZ2lzdGVyT2Zmc2V0KTsKICAgICBpZiAoY2FjaGVEdW1wTW9kZSA9PSBEdW1wQ2FjaGVz
KSB7CiAjaWYgRU5BQkxFKExMSU5UKQogICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaXRbMV0udS5jYWxsTGlua0luZm87CiAgICAgICAgIGlmIChjYWxsTGlua0luZm8t
Pmxhc3RTZWVuQ2FsbGVlKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiIGxsaW50KCVwLCBleGVj
ICVwKSIsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUu
Z2V0KCksCi0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUt
PmV4ZWN1dGFibGUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKAorICAgICAgICAgICAgICAg
ICIgbGxpbnQoJXAsIGV4ZWMgJXApIiwKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxh
c3RTZWVuQ2FsbGVlLmdldCgpLAorICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNl
ZW5DYWxsZWUtPmV4ZWN1dGFibGUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZGF0
YUxvZ0YoIiBsbGludChub3Qgc2V0KSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50
KG5vdCBzZXQpIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAobnVtYmVy
T2ZDYWxsTGlua0luZm9zKCkpIHsKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGdl
dENhbGxMaW5rSW5mbyhsb2NhdGlvbikubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgICAgICAg
ICBpZiAodGFyZ2V0KQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgaml0KCVwLCBleGVjICVw
KSIsIHRhcmdldCwgdGFyZ2V0LT5leGVjdXRhYmxlKCkpOworICAgICAgICAgICAgICAgIG91dC5w
cmludGYoIiBqaXQoJXAsIGV4ZWMgJXApIiwgdGFyZ2V0LCB0YXJnZXQtPmV4ZWN1dGFibGUoKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiBqaXQobm90IHNl
dCkiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KG5vdCBzZXQpIik7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlv
bik7CiAgICAgaXQgKz0gMjsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnByaW50UHV0QnlJZE9wKEV4
ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25z
dCBjaGFyKiBvcCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYg
b3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBp
dCwgY29uc3QgY2hhciogb3ApCiB7CiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgIGRhdGFMb2dGKCJbJTRkXSAlc1x0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwg
b3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICBvdXQucHJpbnRmKCJb
JTRkXSAlc1x0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKG91dCwgbG9jYXRpb24pOwogICAgIGl0ICs9IDU7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpw
cmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBp
bnQgb3BlcmFuZCkKK3ZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZShQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBpbnQgb3BlcmFu
ZCkKIHsKICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9IHZQQyAtIGluc3RydWN0aW9u
cygpLmJlZ2luKCk7Ci0gICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgbmFtZSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1tvcGVyYW5kXS51LnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAgb3V0LnByaW50ZigiICBbJTRkXSAlczogJXNcbiIs
IGluc3RydWN0aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDW29wZXJh
bmRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnBy
aW50U3RydWN0dXJlcyhjb25zdCBJbnN0cnVjdGlvbiogdlBDKQordm9pZCBDb2RlQmxvY2s6OnBy
aW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogdlBDKQog
ewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0
ZXI7CiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQgPSB2UEMgLSBpbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwogCiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX2dldF9ieV9pZCkpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1cmUoImdldF9ieV9p
ZCIsIHZQQywgNCk7CisgICAgICAgIHByaW50U3RydWN0dXJlKG91dCwgImdldF9ieV9pZCIsIHZQ
QywgNCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKSkgewotICAgICAgICBw
cmludFN0cnVjdHVyZSgiZ2V0X2J5X2lkX3NlbGYiLCB2UEMsIDQpOworICAgICAgICBwcmludFN0
cnVjdHVyZShvdXQsICJnZXRfYnlfaWRfc2VsZiIsIHZQQywgNCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX2dldF9ieV9pZF9wcm90bykpIHsKLSAgICAgICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVz
LCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfcHJvdG8iLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
b3V0LnByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdl
dF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bikpIHsKLSAgICAgICAgZGF0YUxvZ0YoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcodlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBvdXQu
cHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVj
dHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lk
X2NoYWluKSkgewotICAgICAgICBkYXRhTG9nRigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0
cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2
UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2
UENbNV0udS5zdHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG91dC5wcmlu
dGYoIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRf
Y2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCku
ZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4pLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5v
cGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpKSB7Ci0gICAgICAg
IHByaW50U3RydWN0dXJlKCJwdXRfYnlfaWQiLCB2UEMsIDQpOworICAgICAgICBwcmludFN0cnVj
dHVyZShvdXQsICJwdXRfYnlfaWQiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRf
YnlfaWRfcmVwbGFjZSkpIHsKLSAgICAgICAgcHJpbnRTdHJ1Y3R1cmUoInB1dF9ieV9pZF9yZXBs
YWNlIiwgdlBDLCA0KTsKKyAgICAgICAgcHJpbnRTdHJ1Y3R1cmUob3V0LCAicHV0X2J5X2lkX3Jl
cGxhY2UiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00OTgsNyArNDk5
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyhjb25zdCBJbgogICAgIEFTU0VS
VCh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRf
Z2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
cHV0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX2NhbGwpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX2NhbGxfZXZhbCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfY29uc3RydWN0KSk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewogICAg
IC8vIFdlIG9ubHkgdXNlIHRoZSBFeGVjU3RhdGUqIGZvciB0aGluZ3MgdGhhdCBkb24ndCBhY3R1
YWxseSBsZWFkIHRvIEpTIGV4ZWN1dGlvbiwKICAgICAvLyBsaWtlIGNvbnZlcnRpbmcgYSBKU1N0
cmluZyB0byBhIFN0cmluZy4gSGVuY2UgdGhlIGdsb2JhbEV4ZWMgaXMgYXBwcm9wcmlhdGUuCkBA
IC01MDksOTIgKzUxMCw5MiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVM
ZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ld
LnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIGRhdGFMb2co
KnRoaXMpOwotICAgIGRhdGFMb2dGKAorICAgIG91dC5wcmludCgqdGhpcyk7CisgICAgb3V0LnBy
aW50ZigKICAgICAgICAgIjogJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXM7ICVkIHBhcmFt
ZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKSIsCiAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSksCiAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNp
emVvZihJbnN0cnVjdGlvbikpLAogICAgICAgICBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVl
UmVnaXN0ZXJzLCBtX251bVZhcnMpOwogICAgIGlmIChzeW1ib2xUYWJsZSgpICYmIHN5bWJvbFRh
YmxlKCktPmNhcHR1cmVDb3VudCgpKQotICAgICAgICBkYXRhTG9nRigiOyAlZCBjYXB0dXJlZCB2
YXIocykiLCBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlQ291bnQoKSk7CisgICAgICAgIG91dC5wcmlu
dGYoIjsgJWQgY2FwdHVyZWQgdmFyKHMpIiwgc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCkp
OwogICAgIGlmICh1c2VzQXJndW1lbnRzKCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoCisgICAgICAg
IG91dC5wcmludGYoCiAgICAgICAgICAgICAiOyB1c2VzIGFyZ3VtZW50cywgaW4gciVkLCByJWQi
LAogICAgICAgICAgICAgYXJndW1lbnRzUmVnaXN0ZXIoKSwKICAgICAgICAgICAgIHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcigpKSk7CiAgICAgfQogICAgIGlm
IChuZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCi0g
ICAgICAgIGRhdGFMb2dGKCI7IGFjdGl2YXRpb24gaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVy
KCkpOwotICAgIGRhdGFMb2dGKCJcblxuIik7CisgICAgICAgIG91dC5wcmludGYoIjsgYWN0aXZh
dGlvbiBpbiByJWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKSk7CisgICAgb3V0LnByaW50ZigiXG5c
biIpOwogCiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKTsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7
CiAgICAgZm9yIChjb25zdCBJbnN0cnVjdGlvbiogaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICBkdW1wQnl0ZWNvZGUoZXhlYywgYmVnaW4sIGl0KTsKKyAgICAgICAgZHVtcEJ5
dGVjb2RlKG91dCwgZXhlYywgYmVnaW4sIGl0KTsKIAogICAgIGlmICghbV9pZGVudGlmaWVycy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuSWRlbnRpZmllcnM6XG4iKTsKKyAgICAg
ICAgb3V0LnByaW50ZigiXG5JZGVudGlmaWVyczpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7
CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgIGlkJXUgPSAlc1xuIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICBpZCV1ID0gJXNcbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpKSwgbV9pZGVudGlmaWVyc1tpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSAhPSBtX2lkZW50aWZpZXJz
LnNpemUoKSk7CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnN0YW50UmVnaXN0ZXJzLmlzRW1wdHko
KSkgewotICAgICAgICBkYXRhTG9nRigiXG5Db25zdGFudHM6XG4iKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiXG5Db25zdGFudHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAgICBk
byB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAgayV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBtX2NvbnN0YW50UmVnaXN0ZXJz
W2ldLmdldCgpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgIGsl
dSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHZhbHVlVG9Tb3VyY2VTdHJpbmco
ZXhlYywgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX2NvbnN0YW50UmVnaXN0ZXJzLnNp
emUoKSk7CiAgICAgfQogCiAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlLT5u
dW1iZXJPZlJlZ0V4cHMoKSkgewotICAgICAgICBkYXRhTG9nRigiXG5tX3JlZ2V4cHM6XG4iKTsK
KyAgICAgICAgb3V0LnByaW50ZigiXG5tX3JlZ2V4cHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkg
PSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICByZSV1ID0gJXNcbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV91bmxpbmtl
ZENvZGUtPnJlZ2V4cChpKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIgIHJlJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCByZWdleHBUb1NvdXJj
ZVN0cmluZyhtX3VubGlua2VkQ29kZS0+cmVnZXhwKGkpKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKICAgICB9CiAKICNpZiBF
TkFCTEUoSklUKQogICAgIGlmICghbV9zdHJ1Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAg
ICAgICBkYXRhTG9nRigiXG5TdHJ1Y3R1cmVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxu
U3RydWN0dXJlczpcbiIpOwogI2VuZGlmCiAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJl
RGF0YS0+bV9leGNlcHRpb25IYW5kbGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGF0YUxvZ0Yo
IlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIlxuRXhjZXB0
aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7
Ci0gICAgICAgICAgICBkYXRhTG9nRigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0g
dGFyZ2V0OiBbJTRkXSB9XG4iLCBpICsgMSwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVy
c1tpXS5zdGFydCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5lbmQsIG1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0udGFyZ2V0KTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlx0ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6IFslNGRdIHRhcmdldDogWyU0ZF0gfVxu
IiwgaSArIDEsIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uc3RhcnQsIG1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5kLCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlv
bkhhbmRsZXJzW2ldLnRhcmdldCk7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUg
KGkgPCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKSk7CiAgICAgfQogICAg
IAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1
bXBUYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJJbW1lZGlhdGUgU3dpdGNo
IEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIG91dC5wcmludGYoIkltbWVkaWF0ZSBTd2l0Y2gg
SnVtcCBUYWJsZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGRvIHsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCIgICUxZCA9IHtcbiIsIGkpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9IDA7CiAg
ICAgICAgICAgICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFyZURh
dGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVuZCgpOwog
ICAgICAgICAgICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBt
X3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5i
ZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CiAgICAgICAgICAgICAgICAg
aWYgKCEqaXRlcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoIlx0XHQlNGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBtX3JhcmVEYXRhLT5tX2lt
bWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0ubWluLCAqaXRlcik7CisgICAgICAgICAgICAgICAg
b3V0LnByaW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRyeSArIG1fcmFyZURhdGEtPm1faW1t
ZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5taW4sICppdGVyKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGRhdGFMb2dGKCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9y
YXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogICAg
IAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1
bXBUYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJcbkNoYXJhY3RlciBTd2l0
Y2ggSnVtcCBUYWJsZXM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5DaGFyYWN0ZXIgU3dp
dGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBk
byB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBpbnQgZW50cnkgPSAw
OwogICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jh
cmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQo
KTsKICAgICAgICAgICAgIGZvciAoVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNl
dHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytlbnRyeSkgewpAQCAtNjAyLDk2ICs2
MDMsOTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsgbV9yYXJlRGF0YS0+
bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZGKSk7CiAgICAgICAg
ICAgICAgICAgVUNoYXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkgKyBtX3JhcmVEYXRh
LT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAgICAgICAgICAgICBk
YXRhTG9nRigiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0
YSgpLCAqaXRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICB9XG4i
KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFN0
cmluZygmY2gsIDEpLnV0ZjgoKS5kYXRhKCksICppdGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAg
ICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLnNp
emUoKSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJc
blN0cmluZyBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiXG5T
dHJpbmcgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwog
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAlMWQgPSB7XG4iLCBpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBTdHJp
bmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuZW5kKCk7CiAg
ICAgICAgICAgICBmb3IgKFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0u
b2Zmc2V0VGFibGUuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoaXRlci0+a2V5KS51dGY4
KCkuZGF0YSgpLCBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIiAgICAgIH1cbiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHRcIiVzXCIg
PT4gJTA0ZFxuIiwgU3RyaW5nKGl0ZXItPmtleSkudXRmOCgpLmRhdGEoKSwgaXRlci0+dmFsdWUu
YnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAg
ICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgZGF0YUxvZ0YoIlxuIik7Cisg
ICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCkKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQpCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAgICBzd2l0Y2gg
KGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGl0LT51Lm9wY29kZSkpIHsKICAgICAg
ICAgY2FzZSBvcF9lbnRlcjogewotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGVudGVyIiwg
bG9jYXRpb24pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZW50ZXIiLCBsb2NhdGlvbik7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRl
X2FjdGl2YXRpb246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRz
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gY3JlYXRlX2FyZ3VtZW50c1x0ICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbml0
X2xhenlfcmVnXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkp
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBv
cF9nZXRfY2FsbGVlICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gb3BfZ2V0X2NhbGxlZSAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgICsr
aXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0
ZV90aGlzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0Yo
IlslNGRdIGNyZWF0ZV90aGlzICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gY3JlYXRlX3RoaXMgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlz
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjb252ZXJ0
X3RoaXNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
ICAgICAgICAgICAgICsraXQ7IC8vIFNraXAgdmFsdWUgcHJvZmlsZS4KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0
ZF0gbmV3X29iamVjdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19vYmplY3RcdCAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAgICBp
bnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGFyZ3YpLmRhdGEoKSwgYXJnYyk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfYXJy
YXlcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3YpLmRhdGEoKSwgYXJnYyk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
ICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOiB7CiAg
ICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
bGVuZ3RoID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0g
bmV3X2FycmF5X3dpdGhfc2l6ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBsZW5ndGgpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfYXJyYXlfd2l0aF9zaXplXHQgJXMsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGxlbmd0aCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxv
Y2F0aW9uIHByb2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjk5LDE0
OSArNzAwLDE0OSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAg
ICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
YXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBuZXdfYXJyYXlfYnVmZmVy
XHQgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCks
IGFyZ3YsIGFyZ2MpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2FycmF5X2J1ZmZl
clx0ICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgp
LCBhcmd2LCBhcmdjKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0
aW9uIHByb2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX25ld19yZWdleHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZ0YoIlslNGRdIG5ld19yZWdleHBcdCAlcywgIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19y
ZWdleHBcdCAlcywgIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGlmIChyMCA+PTAgJiYgcjAgPCAoaW50KW1fdW5saW5rZWRDb2RlLT5udW1i
ZXJPZlJlZ0V4cHMoKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXMiLCByZWdleHBOYW1l
KHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMiLCByZWdleHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoImJhZF9yZWdleHAoJWQpIiwgcmUwKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgICAgICBvdXQucHJpbnRmKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbW92OiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG1vdlx0XHQgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBtb3ZcdFx0ICVz
LCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX25vdDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5vdCIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAibm90Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2VxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgImVxIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAiZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgImVxX251bGwiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgImVxX251bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfbmVxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgIm5lcSIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgIm5lcSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9uZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgIm5lcV9udWxsIik7CisgICAgICAgICAgICBwcmludFVuYXJ5T3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXFfbnVsbCIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zdHJpY3RlcTogewotICAgICAgICAgICAgcHJp
bnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJzdHJpY3RlcSIpOworICAgICAgICAgICAg
cHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInN0cmljdGVxIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25zdHJpY3RlcTogewot
ICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJuc3RyaWN0ZXEi
KTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJu
c3RyaWN0ZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfbGVzczogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQs
ICJsZXNzIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAibGVzcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9sZXNzZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24s
IGl0LCAibGVzc2VxIik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAibGVzc2VxIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2dyZWF0ZXI6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywg
bG9jYXRpb24sIGl0LCAiZ3JlYXRlciIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXIiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOiB7Ci0gICAgICAgICAgICBwcmludEJp
bmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOworICAgICAgICAgICAgcHJp
bnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcmVfaW5jOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJbJTRkXSBwcmVfaW5jXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwcmVfaW5jXHRcdCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2RlYzogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0g
cHJlX2RlY1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkp
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHJlX2RlY1x0XHQgJXMiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3Bvc3RfaW5jOiB7Ci0gICAgICAgICAgICBwcmludFVu
YXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicG9zdF9pbmMiKTsKKyAgICAgICAgICAgIHByaW50
VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfaW5jIik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Bvc3RfZGVjOiB7Ci0gICAgICAg
ICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicG9zdF9kZWMiKTsKKyAgICAg
ICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfZGVjIik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RvX2pzbnVt
YmVyOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAidG9f
anNudW1iZXIiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInRvX2pzbnVtYmVyIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX25lZ2F0ZTogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5lZ2F0ZSIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibmVnYXRlIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2FkZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJhZGQiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJhZGQiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX211bDogewotICAgICAgICAgICAg
cHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKKyAgICAgICAgICAgIHBy
aW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKICAgICAgICAgICAg
ICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Rp
djogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJkaXYi
KTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJk
aXYiKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX21vZDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBs
b2NhdGlvbiwgaXQsICJtb2QiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJtb2QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3Bfc3ViOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInN1YiIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInN1YiIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbHNoaWZ0OiB7Ci0gICAgICAgICAgICBw
cmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxzaGlmdCIpOworICAgICAgICAgICAg
cHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxzaGlmdCIpOwogICAgICAg
ICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yc2hp
ZnQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicnNo
aWZ0Iik7CisgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAicnNoaWZ0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3Vyc2hpZnQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9jYXRpb24s
IGl0LCAidXJzaGlmdCIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInVyc2hpZnQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfYml0YW5kOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgImJpdGFuZCIpOworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdGFuZCIpOwogICAgICAgICAgICAgKytpdDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYml0eG9yOiB7Ci0gICAg
ICAgICAgICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIpOworICAg
ICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIp
OwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfYml0b3I6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3AoZXhlYywgbG9j
YXRpb24sIGl0LCAiYml0b3IiKTsKKyAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJiaXRvciIpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC04NTAsNDggKzg1MSw0OCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIlslNGRdIGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXMsICVzLCAlcywgJWQoLT4lZCkiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjaGVja19oYXNfaW5z
dGFuY2VcdFx0ICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBpbnN0YW5jZW9mXHRcdCAlcywg
JXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90eXBlb2Y6IHsKLSAgICAgICAg
ICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJ0eXBlb2YiKTsKKyAgICAgICAg
ICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInR5cGVvZiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6
IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc191bmRl
ZmluZWQiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImlzX3VuZGVmaW5lZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9pc19ib29sZWFuOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywg
bG9jYXRpb24sIGl0LCAiaXNfYm9vbGVhbiIpOworICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfYm9vbGVhbiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc19udW1iZXI6IHsKLSAgICAgICAgICAgIHBy
aW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKKyAgICAgICAgICAg
IHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX251bWJlciIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pc19zdHJpbmc6IHsK
LSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpc19zdHJpbmci
KTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlz
X3N0cmluZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9pc19vYmplY3Q6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJpc19vYmplY3QiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImlzX29iamVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9pc19mdW5jdGlvbjogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9w
KGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX2Z1bmN0aW9uIik7CisgICAgICAgICAgICBwcmludFVu
YXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbjogewotICAgICAgICAgICAg
cHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOworICAgICAgICAgICAgcHJp
bnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImluIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF90b19iYXNlX3ZhcmlhYmxlOgpA
QCAtOTAwLDggKzkwMSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRl
KiAKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCB2YWx1ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHJlc29sdmVJ
bmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHV0
X3RvX2Jhc2VcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
YmFzZSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHZhbHVlKS5kYXRhKCksIHJlc29sdmVJbmZvKTsKLSAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIHB1dF90b19iYXNlXHQgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVy
c1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB2YWx1ZSkuZGF0YSgpLCByZXNvbHZl
SW5mbyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxv
Y2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cmVzb2x2ZToKQEAgLTkxMywxNCArOTE0LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHJlc29sdmVJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigi
WyU0ZF0gcmVzb2x2ZVx0XHQgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJl
c29sdmVJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVcdFx0ICVzLCAl
cywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShp
ZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X2luaXRfZ2xvYmFsX2NvbnN0X25vcDogewotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGlu
aXRfZ2xvYmFsX2NvbnN0X25vcFx0IiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gaW5pdF9nbG9iYWxfY29uc3Rfbm9wXHQiLCBsb2NhdGlvbik7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGl0Kys7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKQEAgLTkzMCw4ICs5
MzEsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAg
IGNhc2Ugb3BfaW5pdF9nbG9iYWxfY29uc3Q6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
Z0YoIlslNGRdIGluaXRfZ2xvYmFsX2NvbnN0XHQgZyVkKCVwKSwgJXMiLCBsb2NhdGlvbiwgbV9n
bG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVy
UG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gaW5pdF9nbG9iYWxfY29uc3RcdCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBt
X2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0
ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGl0Kys7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05MzksOCAr
OTQwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAg
ICBjYXNlIG9wX2luaXRfZ2xvYmFsX2NvbnN0X2NoZWNrOiB7CiAgICAgICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50
ZXI7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJbJTRkXSBpbml0X2dsb2JhbF9jb25zdF9jaGVja1x0IGclZCglcCksICVzIiwg
bG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50
ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIGluaXRfZ2xvYmFsX2NvbnN0X2NoZWNrXHQgZyVkKCVw
KSwgJXMiLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lz
dGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2Nh
dGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtOTU1LDE2ICs5NTYsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IGlzU3RyaWN0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcmVzb2x2ZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBwdXRUb0Jhc2VJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nRigiWyU0ZF0gcmVzb2x2ZV9iYXNlJXNcdCAlcywgJXMsICVkLCAlZCIsIGxv
Y2F0aW9uLCBpc1N0cmljdCA/ICJfc3RyaWN0IiA6ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJ
bmZvLCBwdXRUb0Jhc2VJbmZvKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHJlc29sdmVf
YmFzZSVzXHQgJXMsICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIg
OiAiIiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbywgcHV0VG9CYXNlSW5mbyk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAlcywg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRd
IGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNv
bHZlX3dpdGhfYmFzZTogewpAQCAtOTczLDggKzk3NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByZXNvbHZlSW5mbyA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IHB1dFRvQmFzZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywgJXMsICVzLCAlZCwg
JWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEo
KSwgcmVzb2x2ZUluZm8sIHB1dFRvQmFzZUluZm8pOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlcywgJWQsICVkIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBwdXRU
b0Jhc2VJbmZvKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91
dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC05ODMsOCArOTg0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShF
eGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmVz
b2x2ZUluZm8gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRk
XSByZXNvbHZlX3dpdGhfdGhpcyAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFt
ZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNvbHZlSW5mbyk7Ci0gICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfdGhpcyAlcywgJXMsICVzLCAlZCIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZXNv
bHZlSW5mbyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQs
IGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMTAwMiw1MCArMTAwMyw1MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KEV4ZWNTdGF0ZSogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICAgICAgY2FzZSBvcF9nZXRfc3RyaW5nX2xl
bmd0aDogewotICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0KTsK
LSAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKGV4ZWMsIGxvY2F0aW9uKTsKLSAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIHByaW50R2V0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0KTsKKyAgICAgICAg
ICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgZXhlYywgbG9jYXRpb24pOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudHNf
bGVuZ3RoOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
Z2V0X2FyZ3VtZW50c19sZW5ndGgiKTsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9hcmd1bWVudHNfbGVuZ3RoIik7CiAgICAgICAgICAgICBp
dCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6IHsKLSAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZCIpOworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOiB7Ci0gICAgICAgICAgICBwcmlu
dFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfb3V0X29mX2xpbmUiKTsK
KyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkX291dF9vZl9saW5lIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOworICAgICAgICAg
ICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVw
bGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbjogewotICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24i
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZTogewotICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lIik7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9v
dXRfb2ZfbGluZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKLSAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIp
OworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJw
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9s
aW5lOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJw
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsX291dF9vZl9saW5lIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7Ci0gICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
Z2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9wdXRfZ2V0dGVyX3NldHRlcjogewpAQCAtMTA1MywyNCArMTA1NCwyNCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgaWQwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0
YUxvZ0YoIlslNGRdIHB1dF9nZXR0ZXJfc2V0dGVyXHQgJXMsICVzLCAlcywgJXMiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmll
cnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHV0X2dl
dHRlcl9zZXR0ZXJcdCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVs
X2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGRlbF9ieV9p
ZFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJz
W2lkMF0pLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBkZWxfYnlfaWRcdCAl
cywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBd
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBn
ZXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9ieV92YWxcdCAl
cywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlv
bik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTA3OSw4ICsxMDgwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShF
eGVjU3RhdGUqIAogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGdldF9hcmd1
bWVudF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZ2V0X2FyZ3VtZW50
X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShv
dXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICArK2l0OwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMDkyLDE2ICsxMDkzLDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgcjUgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJb
JTRkXSBnZXRfYnlfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMyku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjQpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHI1KS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gZ2V0X2J5X3BuYW1lXHQg
JXMsICVzLCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAl
cywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAg
KytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTA5LDIwOCArMTExMCwy
MDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIAogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG4wID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwdXRfYnlfaW5kZXhcdCAlcywgJXUsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHV0X2J5X2luZGV4
XHQgJXMsICV1LCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
bjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbXA6IHsKICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbXBc
dFx0ICVkKC0+JWQpIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiWyU0ZF0gam1wXHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9sb29wOiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcFx0XHQgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBsb29wXHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9qdHJ1ZTogewotICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoZXhlYywg
YmVnaW4sIGl0LCBsb2NhdGlvbiwgImp0cnVlIik7CisgICAgICAgICAgICBwcmludENvbmRpdGlv
bmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqdHJ1ZSIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX3RydWU6IHsK
LSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRp
b24sICJsb29wX2lmX3RydWUiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91
dCwgZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImxvb3BfaWZfdHJ1ZSIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2ZhbHNlOiB7Ci0g
ICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9u
LCAibG9vcF9pZl9mYWxzZSIpOworICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0
LCBleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9pZl9mYWxzZSIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZmFsc2U6IHsKLSAgICAgICAg
ICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZmFs
c2UiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywgYmVnaW4s
IGl0LCBsb2NhdGlvbiwgImpmYWxzZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRDb25kaXRpb25h
bEp1bXAoZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImplcV9udWxsIik7CisgICAgICAgICAg
ICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJq
ZXFfbnVsbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9qbmVxX251bGw6IHsKLSAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKGV4ZWMsIGJl
Z2luLCBpdCwgbG9jYXRpb24sICJqbmVxX251bGwiKTsKKyAgICAgICAgICAgIHByaW50Q29uZGl0
aW9uYWxKdW1wKG91dCwgZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImpuZXFfbnVsbCIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBT
cGVjaWFsOjpQb2ludGVyIHBvaW50ZXIgPSAoKytpdCktPnUuc3BlY2lhbFBvaW50ZXI7CiAgICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiWyU0ZF0gam5lcV9wdHJcdFx0ICVzLCAlZCAoJXApLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcG9pbnRlciwgbV9nbG9iYWxPYmplY3Qt
PmFjdHVhbFBvaW50ZXJGb3IocG9pbnRlciksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gam5lcV9wdHJcdFx0ICVzLCAlZCAoJXApLCAlZCgt
PiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcG9pbnRlciwg
bV9nbG9iYWxPYmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9pbnRlciksIG9mZnNldCwgbG9jYXRp
b24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
b3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2psZXNzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IGpsZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMs
ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2psZXNz
ZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gamxlc3NlcVx0
XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBv
ZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpncmVhdGVyXHRcdCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgt
PiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gamdyZWF0ZXJlcVx0XHQg
JXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gamdyZWF0ZXJlcVx0XHQgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVzczogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAl
cywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
LSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGpubGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVzc2VxOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQo
LT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIlslNGRdIGpuZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMs
ICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0g
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVk
KSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzczogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAl
cywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNz
ZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9pZl9s
ZXNzZXFcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NlcVx0
ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9s
b29wX2lmX2dyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0
ZF0gbG9vcF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbG9v
cF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKSIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9oaW50OiB7Ci0gICAgICAgICAg
ICBkYXRhTG9nRigiWyU0ZF0gbG9vcF9oaW50IiwgbG9jYXRpb24pOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gbG9vcF9oaW50IiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06IHsKICAgICAgICAgICAgIGlu
dCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVs
dFRhcmdldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJl
Z2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0g
c3dpdGNoX2ltbVx0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVm
YXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywg
c2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBz
d2l0Y2hfaW1tXHQgJWQsICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZh
dWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBz
Y3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewogICAgICAgICAgICAgaW50IHRhYmxl
SW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzd2l0Y2hf
Y2hhclx0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRh
cmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRp
bmVlUmVnaXN0ZXIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBzd2l0Y2hf
Y2hhclx0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRh
cmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRp
bmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewogICAgICAgICAgICAgaW50IHRhYmxlSW5k
ZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzd2l0Y2hfc3Ry
aW5nXHQgJWQsICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFy
Z2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGlu
ZWVSZWdpc3RlcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHN3aXRjaF9z
dHJpbmdcdCAlZCwgJWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRU
YXJnZXQsIGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0
aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX25ld19mdW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHNob3VsZENoZWNrID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nRigiWyU0ZF0gbmV3X2Z1bmNcdFx0ICVzLCBmJWQsICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hvdWxkQ2hlY2sgPyAiPENoZWNrZWQ+
IiA6ICI8VW5jaGVja2VkPiIpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X2Z1bmNc
dFx0ICVzLCBmJWQsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCBmMCwgc2hvdWxkQ2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5jaGVja2VkPiIpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBu
ZXdfZnVuY19leHBcdCAlcywgZiVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBmMCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAl
cywgZiVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewot
ICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBD
YWNoZXMpOworICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJjYWxsIiwgRHVtcENhY2hlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMpOworICAgICAgICAgICAg
cHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVt
cENhY2hlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X2NhbGxfdmFyYXJnczogewpAQCAtMTMxOCw2MCArMTMxOSw2MCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBpbnQgdGhpc1ZhbHVlID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRzID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjYWxsX3ZhcmFyZ3NcdCAlcywgJXMs
ICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFy
Z3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCJbJTRkXSBjYWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVS
ZWdpc3Rlcik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQs
IGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbjogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gdGVhcl9vZmZfYWN0aXZhdGlv
blx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHRlYXJfb2ZmX2Fy
Z3VtZW50cyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlsl
NGRdIHRlYXJfb2ZmX2FyZ3VtZW50cyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlsl
NGRdIHJldFx0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkp
OwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcmV0XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBjYWxs
X3B1dF9yZXN1bHRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGNhbGxfcHV0X3Jlc3VsdFx0XHQgJXMi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9y
ZXRfb2JqZWN0X29yX3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nRigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewotICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcyk7CisgICAgICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNvbnN0cnVjdCIsIER1bXBDYWNoZXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zdHJjYXQ6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgY291bnQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBzdHJjYXRcdFx0ICVz
LCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBjb3VudCk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJb
JTRkXSBzdHJjYXRcdFx0ICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBjb3VudCk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZl
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRd
IHRvX3ByaW1pdGl2ZVx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BuYW1lczog
ewpAQCAtMTM4MCw4ICsxMzgxLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVj
U3RhdGUqIAogICAgICAgICAgICAgaW50IHIyID0gaXRbM10udS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIzID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0
WzVdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBnZXRfcG5hbWVzXHQg
JXMsICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9wbmFtZXNc
dCAlcywgJXMsICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9w
X2dldF9wbmFtZXMpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzky
LDU0ICsxMzkzLDU0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAK
ICAgICAgICAgICAgIGludCBzaXplID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IGl0ZXIgPSBpdFs1XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXRbNl0u
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIG5leHRfcG5hbWVcdCAlcywg
JXMsICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBk
ZXN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCBpKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCBpdGVyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAl
cywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRlc3QpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGkpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNpemUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGl0ZXIpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfbmV4dF9wbmFtZSkgLSAxOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZ0Yo
IlslNGRdIHB1c2hfd2l0aF9zY29wZVx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1c2hfd2l0aF9zY29w
ZVx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6IHsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwb3Bfc2NvcGUiLCBsb2NhdGlvbik7Ci0gICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJbJTRkXSBwb3Bfc2NvcGUiLCBsb2NhdGlvbik7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOiB7
CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRkXSBwdXNo
X25hbWVfc2NvcGUgXHQlcywgJXMsICV1IiwgbG9jYXRpb24sIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgYXR0cmli
dXRlcyk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwdXNoX25hbWVfc2NvcGUgXHQlcywg
JXMsICV1IiwgbG9jYXRpb24sIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgYXR0cmlidXRlcyk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wX3Njb3BlczogewogICAg
ICAgICAgICAgaW50IHNjb3BlRGVsdGEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJb
JTRkXSBqbXBfc2NvcGVzXHReJWQsICVkKC0+JWQpIiwgbG9jYXRpb24sIHNjb3BlRGVsdGEsIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gam1w
X3Njb3Blc1x0XiVkLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9jYXRjaDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gY2F0Y2hcdFx0ICVzIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlsl
NGRdIGNhdGNoXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShvdXQsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGhy
b3c6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlslNGRdIHRocm93XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSB0aHJvd1x0XHQg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJv
cjogewogICAgICAgICAgICAgaW50IGswID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgazEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJbJTRk
XSB0aHJvd19zdGF0aWNfZXJyb3JcdCAlcywgJXMiLCBsb2NhdGlvbiwgY29uc3RhbnROYW1lKGV4
ZWMsIGswLCBnZXRDb25zdGFudChrMCkpLmRhdGEoKSwgazEgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
LSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHRocm93X3N0YXRpY19lcnJvclx0ICVzLCAlcyIs
IGxvY2F0aW9uLCBjb25zdGFudE5hbWUoZXhlYywgazAsIGdldENvbnN0YW50KGswKSkuZGF0YSgp
LCBrMSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2RlYnVnOiB7CkBAIC0xNDQ3LDI2ICsxNDQ4LDI2IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGludCBmaXJz
dExpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGNvbHVtbiA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIGRlYnVnXHRcdCAlcywgJWQsICVkLCAl
ZCIsIGxvY2F0aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0
TGluZSwgY29sdW1uKTsKLSAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGRlYnVnXHRcdCAlcywg
JWQsICVkLCAlZCIsIGxvY2F0aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RM
aW5lLCBsYXN0TGluZSwgY29sdW1uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDogewogICAgICAgICAgICAgaW50IGZ1
bmN0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0g
cHJvZmlsZV93aWxsX2NhbGwgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0
aW9uKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHJvZmlsZV93aWxsX2Nh
bGwgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVf
ZGlkX2NhbGw6IHsKICAgICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIlslNGRdIHByb2ZpbGVfZGlkX2NhbGxcdCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBwcm9maWxlX2RpZF9jYWxsXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2VuZDogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nRigiWyU0ZF0gZW5kXHRcdCAlcyIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJbJTRkXSBlbmRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91
dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQpAQCAtMTQ3NiwxMSArMTQ3NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKEV4ZWNTdGF0ZSogCiAgICAgfQogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIGNvbnN0
IEluc3RydWN0aW9uKiBpdCA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZU9mZnNl
dDsKLSAgICBkdW1wQnl0ZWNvZGUoZXhlYywgaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgaXQpOwor
ICAgIGR1bXBCeXRlY29kZShvdXQsIGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsK
IH0KIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMzYzMTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDcgQEAKIAogLy8gU2V0IEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyB0byAxIHRv
IGVuYWJsZSByZWNvcmRpbmcgYnl0ZWNvZGUgZ2VuZXJhdG9yCiAvLyBjb21tZW50cyBmb3IgdGhl
IGJ5dGVjb2RlcyB0aGF0IGl0IGdlbmVyYXRlcy4gVGhpcyB3aWxsIGFsbG93Ci0vLyBDb2RlQmxv
Y2s6OmR1bXAoKSB0byBwcm92aWRlIHNvbWUgY29udGV4dHVhbCBpbmZvIGFib3V0IHRoZSBieXRl
Y29kZXMuCisvLyBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpIHRvIHByb3ZpZGUgc29tZSBjb250
ZXh0dWFsIGluZm8gYWJvdXQgdGhlIGJ5dGVjb2Rlcy4KIC8vCiAvLyBUaGUgd2F5IHRoaXMgY29t
bWVudCBzeXN0ZW0gd29ya3MgaXMgYXMgZm9sbG93czoKIC8vIDEuIFRoZSBCeXRlY29kZUdlbmVy
YXRvciBjYWxscyBwcmVwZW5kQ29tbWVudCgpIHdpdGggYSBjb25zdGFudCBjb21tZW50CkBAIC04
OSw3ICs4OSw3IEBACiAvLyAgICBwcmVwZW5kZWQgY29tbWVudCB3aWxsIGJlIHJlY29yZGVkIHdp
dGggdGhlIFBDIG9mIHRoZSBvcGNvZGUgYmVpbmcKIC8vICAgIGVtaXR0ZWQuIFRoaXMgY29tbWVu
dCBpcyBiZWluZyByZWNvcmRlZCBpbiB0aGUgQ29kZUJsb2NrJ3MKIC8vICAgIG1fYnl0ZWNvZGVD
b21tZW50cy4KLS8vIDMuIFdoZW4gQ29kZUJsb2NrOjpkdW1wKCkgaXMgY2FsbGVkLCBpdCB3aWxs
IHBhaXIgdXAgdGhlIGNvbW1lbnRzIHdpdGgKKy8vIDMuIFdoZW4gQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoKSBpcyBjYWxsZWQsIGl0IHdpbGwgcGFpciB1cCB0aGUgY29tbWVudHMgd2l0aAogLy8g
ICAgdGhlaXIgY29ycmVzcG9uZGluZyBieXRlY29kZXMgYmFzZWQgb24gdGhlIGJ5dGVjb2RlIGFu
ZCBjb21tZW50J3MKIC8vICAgIFBDLiBJZiBhIG1hdGNoaW5nIHBhaXIgaXMgZm91bmQsIHRoZSBj
b21tZW50IHdpbGwgYmUgcHJpbnRlZCBhZnRlcgogLy8gICAgdGhlIGJ5dGVjb2RlLiBJZiBub3Qs
IG5vIGNvbW1lbnQgaXMgcHJpbnRlZC4KQEAgLTE2MCwxNiArMTYwLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+
Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAj
ZW5kaWYKIAogICAgICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICB2b2lkIGR1bXBC
eXRlY29kZSgpOwotICAgICAgICB2b2lkIGR1bXBCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5z
dHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCk7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50
U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICB2b2lkIHByaW50
U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJ
bnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE4OSwxMCArMTk0LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
aW50IGxvY2F0aW9uKTsKKyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShQcmludFN0cmVhbSYsIGludCBsb2NhdGlvbik7CiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1F
TlRTKQotICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICB2b2lkIGR1bXBCeXRlY29kZUNvbW1lbnRzKCk7
CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnRGb3JCeXRlY29kZU9mZnNldChQcmludFN0cmVh
bSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGVD
b21tZW50cyhQcmludFN0cmVhbSYpOwogI2VuZGlmCiAKICAgICAgICAgSGFuZGxlckluZm8qIGhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC0xMjE1
LDE3ICsxMjIwLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaV0uc2V0KCptX2dsb2JhbERhdGEsIG93bmVyRXhlY3V0YWJsZSgpLCBjb25z
dGFudHNbaV0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUo
RXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiom
KTsKKyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBj
b25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYpOwogCiAgICAgICAg
IENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSosIGludCByKSBjb25zdDsKLSAgICAgICAg
dm9pZCBwcmludFVuYXJ5T3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVj
dGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgICAgIHZvaWQgcHJpbnRCaW5hcnlPcChFeGVj
U3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9w
KTsKLSAgICAgICAgdm9pZCBwcmludENvbmRpdGlvbmFsSnVtcChFeGVjU3RhdGUqLCBjb25zdCBJ
bnN0cnVjdGlvbiosIGNvbnN0IEluc3RydWN0aW9uKiYsIGludCBsb2NhdGlvbiwgY29uc3QgY2hh
ciogb3ApOwotICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2Nh
dGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7Ci0gICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2Fj
aGVTdGF0dXMoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uKTsKKyAgICAgICAgdm9pZCBwcmludFVu
YXJ5T3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3Ry
dWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICAgICAgdm9pZCBwcmludEJpbmFyeU9wKFBy
aW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiom
LCBjb25zdCBjaGFyKiBvcCk7CisgICAgICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1bXAoUHJp
bnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IEluc3RydWN0
aW9uKiYsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApOworICAgICAgICB2b2lkIHByaW50
R2V0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJ
bnN0cnVjdGlvbiomKTsKKyAgICAgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmlu
dFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbik7CiAgICAgICAgIGVudW0gQ2FjaGVE
dW1wTW9kZSB7IER1bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07Ci0gICAgICAgIHZvaWQgcHJp
bnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBj
b25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSk7Ci0gICAgICAgIHZvaWQgcHJpbnRQdXRCeUlk
T3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBj
aGFyKiBvcCk7CisgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3Rh
dGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wLCBD
YWNoZUR1bXBNb2RlKTsKKyAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYs
IEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hh
ciogb3ApOwogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3Ry
dWN0aW9uKiB2UEMpOwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177135</attachid>
            <date>2012-12-02 01:11:00 -0800</date>
            <delta_ts>2012-12-02 01:33:35 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>132145</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzOSBA
QAorMjAxMi0xMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHByb2ZpbGluZyB0byBKU0MsIGNh
bGxlZCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBUaGlzIHdpbGwgY291bnQKKyAg
ICAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgYnl0ZWNvZGUgZXhlY3V0ZXMgaW4gdmFy
aW91cyBlbmdpbmVzLCBhbmQgd2lsbCByZWNvcmQgYm90aAorICAgICAgICB0aGUgY291bnRzIGFu
ZCBhbGwgZGlzYXNzZW1ibHkgYW5kIGJ5dGVjb2RlIGR1bXBzLCBpbnRvIGEgZGF0YWJhc2UgdGhh
dCBjYW4gYmUgYXQgYW55CisgICAgICAgIHRpbWUgdHVybmVkIGludG8gZWl0aGVyIGEgSlMgb2Jq
ZWN0IHVzaW5nIGFueSBnbG9iYWwgb2JqZWN0IG9yIGdsb2JhbCBkYXRhIG9mIHlvdXIKKyAgICAg
ICAgY2hvaWNlLCBvciBjYW4gYmUgdHVybmVkIGludG8gYSBKU09OIHN0cmluZywgb3Igc2F2ZWQg
dG8gYSBmaWxlLgorICAgICAgICAKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHVzZSBvZiB0
aGlzIGlzIHRoZSBuZXcgJy1wIDxmaWxlPicgZmxhZyB0byB0aGUganNjIGNvbW1hbmQtbGluZS4K
KyAgICAgICAgCisgICAgICAgIFRoZSBQQlAgaXMgYWx3YXlzIGNvbXBpbGVkIGluIGFuZCBub3Jt
YWxseSBpbmN1cnMgbm8gZXhlY3V0aW9uIHRpbWUgY29zdCwgYnV0IGlzIG9ubHkKKyAgICAgICAg
YWN0aXZhdGVkIHdoZW4geW91IGNyZWF0ZSBhIFBCUDo6RGF0YWJhc2UgYW5kIGluc3RhbGwgaXQg
aW4KKyAgICAgICAgSlNHbG9iYWxEYXRhOjptX3BlckJ5dGVjb2RlUHJvZmlsZXIuIEZyb20gdGhh
dCBwb2ludCBvbiwgYWxsIGNvZGUgYmxvY2tzIHdpbGwgYmUKKyAgICAgICAgY29tcGlsZWQgYWxv
bmcgd2l0aCBkaXNhc3NlbWJseSBhbmQgYnl0ZWNvZGUgZHVtcHMgc3RvcmVkIGludG8gdGhlIFBC
UDo6RGF0YWJhc2UsIGFuZAorICAgICAgICBhbGwgY29kZSBibG9ja3Mgd2lsbCBoYXZlIGV4ZWN1
dGlvbiBjb3VudHMsIHdoaWNoIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuCisgICAg
ICAgIFRoZSBkYXRhYmFzZSB3aWxsIGNvbnRpbnVlIHRvIGtlZXAgaW5mb3JtYXRpb24gYWJvdXQg
Y29kZSBibG9ja3MgYWxpdmUgZXZlbiBhZnRlciB0aGV5CisgICAgICAgIGFyZSBvdGhlcndpc2Ug
R0MnZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY3VycmVudGx5IHN0aWxsIGhhcyBzb21lIGds
aXRjaGVzLCBsaWtlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBjb3VudHMgZXhlY3V0aW9ucworICAg
ICAgICBpbiB0aGUgSklUcy4gRG9pbmcgZXhlY3V0aW9uIGNvdW50aW5nIGluIHRoZSBMTEludCBt
aWdodCByZXF1aXJlIGEgYml0IG9mIGEgcmV0aGluaworICAgICAgICBhYm91dCBob3cgdGhlIGNv
dW50aW5nIGlzIGV4cHJlc3NlZCAtIGN1cnJlbnRseSBpdCBpcyBpbXBsaWNpdCBpbiBieXRlY29k
ZSwgc28gdGhlcmUKKyAgICAgICAgaXMgbm8gZWFzeSB3YXkgdG8gInR1cm4gaXQgb24iIGluIHRo
ZSBMTEludC4gQWxzbywgcmlnaHQgbm93IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uCisgICAgICAg
IHJlY29yZGVkIGFib3V0IE9TUiBleGl0cyBvciBvdXQtb2YtbGluZSBzdHVicy4gQnV0LCBldmVu
IHNvLCBpdCdzIHF1aXRlIGNvb2wsIGFuZAorICAgICAgICBnaXZlcyB5b3UgYSBwZWVrIGludG8g
d2hhdCBKU0MgaXMgZG9pbmcgdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGJlIHBvc3NpYmxlLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmJhc2VsaW5l
Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oOgorICAgICAgICAoSW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wKToKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpyZXBvcnRUb1Byb2Zp
bGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpEaXNhc3NlbWJsZXI6OmNyZWF0ZUR1bXBMaXN0KToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNz
ZW1ibGVyLmg6CisgICAgICAgIChEaXNhc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkRp
c2Fzc2VtYmxlcjo6RHVtcGVkT3A6OkR1bXBlZE9wKToKKyAgICAgICAgKER1bXBlZE9wKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFw
aCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoTm9k
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRXhlY3V0aW9uQ291bnRlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6ZXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OkpJVCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxl
ci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcCk6CisgICAgICAgIChK
U0M6OkpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcik6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6OmR1bXBIZWFkZXIpOgorICAgICAgICAoSlND
OjpKSVREaXNhc3NlbWJsZXI6OmZpcnN0U2xvd0xhYmVsKToKKyAgICAgICAgKEpTQzo6SklURGlz
YXNzZW1ibGVyOjpkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SklU
RGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SklURGlz
YXNzZW1ibGVyOjpyZXBvcnRJbnN0cnVjdGlvbnMpOgorICAgICAgICAqIGppdC9KSVREaXNhc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpJVERpc2Fzc2VtYmxlcik6CisgICAgICAgIChEdW1wZWRPcCk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGluZSk6
CisgICAgICAgIChDb21tYW5kTGluZSk6CisgICAgICAgIChwcmludFVzYWdlU3RhdGVtZW50KToK
KyAgICAgICAgKENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChqc2NtYWlu
KToKKyAgICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZS5jcHA6IEFkZGVkLgorICAgICAgICAo
UEJQKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZTo6dG9KUyk6CisgICAgICAgICogcHJv
ZmlsZXIvUEJQQnl0ZWNvZGUuaDogQWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoQnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2RlOjpCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlBCUDo6Qnl0ZWNvZGU6OmJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpQQlA6
OkJ5dGVjb2RlOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OlBCUDo6Z2V0Qnl0ZWNvZGVJ
bmRleEZvckJ5dGVjb2RlKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjpCeXRl
Y29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6fkJ5dGVjb2Rlcyk6CisgICAg
ICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjppbmRleEZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAg
ICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6Zm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6
OlBCUDo6Qnl0ZWNvZGVzOjpkdW1wKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OnRv
SlMpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oOiBBZGRlZC4KKyAgICAgICAg
KFBCUCk6CisgICAgICAgIChCeXRlY29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rl
czo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OmlkKToKKyAgICAgICAg
KEpTQzo6UEJQOjpCeXRlY29kZXM6Omhhc2gpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rl
czo6c2l6ZSk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjphdCk6CisgICAgICAgICog
cHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAg
ICAgIChKU0M6OlBCUDo6Q29tcGlsYXRpb246OkNvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6
UEJQOjpDb21waWxhdGlvbjo6fkNvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21w
aWxhdGlvbjo6YWRkRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGF0aW9u
OjpleGVjdXRpb25Db3VudGVyRm9yKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxhdGlvbjo6
dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChQQlApOgorICAgICAgICAoQ29tcGlsYXRpb24pOgorICAgICAgICAoSlNDOjpQQlA6OkNv
bXBpbGF0aW9uOjpieXRlY29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGF0aW9uOjpr
aW5kKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6Cisg
ICAgICAgIChXVEYpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRl
Y29kZTo6Q29tcGlsZWRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRl
Y29kZTo6fkNvbXBpbGVkQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGVkQnl0
ZWNvZGU6OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaDog
QWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoQ29tcGlsZWRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRlY29kZTo6b3JpZ2luU3RhY2spOgorICAgICAgICAo
SlNDOjpQQlA6OkNvbXBpbGVkQnl0ZWNvZGU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwcm9m
aWxlci9QQlBEYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEpT
Qzo6UEJQOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNl
Ojp+RGF0YWJhc2UpOgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjphZGRCeXRlY29kZXMp
OgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAg
ICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbik6CisgICAgICAgIChK
U0M6OlBCUDo6RGF0YWJhc2U6Om5ld0NvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpE
YXRhYmFzZTo6dG9KUyk6CisgICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OnRvSlNPTik6Cisg
ICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OnNhdmUpOgorICAgICAgICAqIHByb2ZpbGVyL1BC
UERhdGFiYXNlLmg6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKERhdGFiYXNlKToK
KyAgICAgICAgKiBwcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmg6IEFkZGVkLgorICAgICAg
ICAoUEJQKToKKyAgICAgICAgKEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpQQlA6
OkV4ZWN1dGlvbkNvdW50ZXI6OkV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpQQlA6
OkV4ZWN1dGlvbkNvdW50ZXI6OmFkZHJlc3MpOgorICAgICAgICAoSlNDOjpQQlA6OkV4ZWN1dGlv
bkNvdW50ZXI6OmNvdW50KToKKyAgICAgICAgKiBwcm9maWxlci9QQlBPcmlnaW4uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpPcmlnaW4pOgor
ICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6ZHVtcCk6CisgICAgICAgIChKU0M6OlBCUDo6T3Jp
Z2luOjp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBPcmlnaW4uaDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoUEJQKToKKyAgICAgICAgKE9yaWdpbik6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luOjpPcmlnaW4pOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6b3Bl
cmF0b3IhKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46OmJ5dGVjb2Rlcyk6CisgICAgICAg
IChKU0M6OlBCUDo6T3JpZ2luOjpieXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW46Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQ
OjpPcmlnaW46OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5IYXNoOjplcXVhbCk6
CisgICAgICAgIChPcmlnaW5IYXNoKToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcHJvZmls
ZXIvUEJQT3JpZ2luU3RhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luU3RhY2s6Ok9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5TdGFjazo6fk9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFj
azo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6Omhhc2gpOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6
dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoUEJQKToKKyAgICAgICAgKE9yaWdpblN0YWNrKToKKyAgICAg
ICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2spOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0
YWNrOjpzaXplKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6ZnJvbUJvdHRvbSk6
CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OmZyb21Ub3ApOgorICAgICAgICAoSlND
OjpQQlA6Ok9yaWdpblN0YWNrOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luU3RhY2tIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmln
aW5TdGFja0hhc2g6OmVxdWFsKToKKyAgICAgICAgKE9yaWdpblN0YWNrSGFzaCk6CisgICAgICAg
IChXVEYpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4
ZWN1dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6fkpTR2xv
YmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0Mp
OgorCiAyMDEyLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29kZUJsb2NrIHNob3VsZCBiZSBhYmxlIHRvIGR1bXAgYnl0ZWNvZGUgdG8gc29tZXRoaW5n
IG90aGVyIHRoYW4gV1RGOjpkYXRhRmlsZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMjMgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwCiAgICAgcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwCiAKKyAgICBwcm9maWxlci9QQlBCeXRlY29kZS5jcHAK
KyAgICBwcm9maWxlci9QQlBCeXRlY29kZS5oCisgICAgcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNw
cAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRp
b24uY3BwCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAorICAgIHByb2ZpbGVyL1BCUENv
bXBpbGF0aW9uS2luZC5jcHAKKyAgICBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAorICAg
IHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwCisgICAgcHJvZmlsZXIvUEJQQ29tcGls
ZWRCeXRlY29kZS5oCisgICAgcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCisgICAgcHJvZmlsZXIv
UEJQRGF0YWJhc2UuaAorICAgIHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAorICAgIHBy
b2ZpbGVyL1BCUE9yaWdpbi5jcHAKKyAgICBwcm9maWxlci9QQlBPcmlnaW4uaAorICAgIHByb2Zp
bGVyL1BCUE9yaWdpblN0YWNrLmNwcAorICAgIHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmgKICAg
ICBwcm9maWxlci9Qcm9maWxlLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3Bw
CiAgICAgcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0
NzEsMjMgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL0NhbGxJZGVudGlmaWVyLmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQQnl0ZWNvZGUuY3BwIFwKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBCeXRlY29kZXMuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBDb21waWxhdGlvbi5jcHAgXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwIFwKKyAgICAgICAgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oIFwKKyAgICAgICAg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwIFwK
KyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNv
ZGUuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFz
ZS5jcHAgXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJh
c2UuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBFeGVjdXRp
b25Db3VudGVyLmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
T3JpZ2luLmNwcCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBP
cmlnaW4uaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmln
aW5TdGFjay5jcHAgXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
T3JpZ2luU3RhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiAr
MTgyLDIzIEBAIFNPVVJDRVMgKz0gXAogICAgIHBhcnNlci9QYXJzZXJBcmVuYS5jcHAgXAogICAg
IHBhcnNlci9QYXJzZXIuY3BwIFwKICAgICBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5jcHAg
XAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQQnl0ZWNv
ZGUuaCBcCisgICAgcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQ
Qnl0ZWNvZGVzLmggXAorICAgIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcCBcCisgICAgcHJv
ZmlsZXIvUEJQQ29tcGlsYXRpb24uaCBcCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5k
LmNwcCBcCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmggXAorICAgIHByb2ZpbGVy
L1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwIFwKKyAgICBwcm9maWxlci9QQlBDb21waWxlZEJ5dGVj
b2RlLmggXAorICAgIHByb2ZpbGVyL1BCUERhdGFiYXNlLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQ
RGF0YWJhc2UuaCBcCisgICAgcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oIFwKKyAgICBw
cm9maWxlci9QQlBPcmlnaW4uY3BwIFwKKyAgICBwcm9maWxlci9QQlBPcmlnaW4uaCBcCisgICAg
cHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwIFwKKyAgICBwcm9maWxlci9QQlBPcmlnaW5TdGFj
ay5oIFwKICAgICBwcm9maWxlci9Qcm9maWxlLmNwcCBcCiAgICAgcHJvZmlsZXIvUHJvZmlsZUdl
bmVyYXRvci5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIDogbV9pbnRlcmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCBtX2R1bXAoZmFsc2UpCiAgICAg
ICAgICwgbV9leGl0Q29kZShmYWxzZSkKKyAgICAgICAgLCBtX3Byb2ZpbGUoZmFsc2UpCiAgICAg
ewogICAgICAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAgICB9CkBAIC0xMzUsNiAr
MTM2LDggQEAgcHVibGljOgogICAgIGJvb2wgbV9leGl0Q29kZTsKICAgICBWZWN0b3I8U2NyaXB0
PiBtX3NjcmlwdHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1bWVudHM7CisgICAgYm9vbCBt
X3Byb2ZpbGU7CisgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAKICAgICB2b2lkIHBhcnNl
QXJndW1lbnRzKGludCwgY2hhcioqKTsKIH07CkBAIC02NDksNiArNjUyLDcgQEAgc3RhdGljIE5P
X1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbgogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAg
ZnByaW50ZihzdGRlcnIsICIgIC1zICAgICAgICAgSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRo
YXQgZXhpdCBvbiBhIGNyYXNoIChVbml4IHBsYXRmb3JtcyBvbmx5KVxuIik7CiAjZW5kaWYKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgIiAgLXAgPGZpbGU+ICBPdXRwdXRzIHByb2ZpbGluZyBkYXRhIHRv
IGEgZmlsZVxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC14ICAgICAgICAgT3V0cHV0IGV4
aXQgY29kZSBiZWZvcmUgdGVybWluYXRpbmdcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiXG4i
KTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1vcHRpb25zICAgICAgICAgICAgICAgICAgRHVt
cHMgYWxsIEpTQyBWTSBvcHRpb25zIGFuZCBleGl0c1xuIik7CkBAIC02ODcsNiArNjkxLDEzIEBA
IHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmcKICAgICAgICAgICAgIG1f
ZHVtcCA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBp
ZiAoIXN0cmNtcChhcmcsICItcCIpKSB7CisgICAgICAgICAgICBpZiAoKytpID09IGFyZ2MpCisg
ICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudCgpOworICAgICAgICAgICAgbV9wcm9m
aWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQgPSBhcmd2W2ldOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAi
LXMiKSkgewogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgICAgICAgICBzaWduYWwoU0lHSUxMLCBf
ZXhpdCk7CkBAIC03NTAsNiArNzYxLDkgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogICAgIEpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbERhdGEuZ2V0KCkpOwogICAgIGludCBy
ZXN1bHQ7CiAKKyAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUpCisgICAgICAgIGdsb2JhbERhdGEt
Pm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IGFkb3B0UHRyKG5ldyBQQlA6OkRhdGFiYXNlKCpnbG9i
YWxEYXRhKSk7CisgICAgCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxP
YmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
Kmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7CiAgICAgYm9vbCBz
dWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLm1fc2NyaXB0cywg
b3B0aW9ucy5tX2R1bXApOwogICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3RpdmUgJiYgc3VjY2Vz
cykKQEAgLTc1OSw2ICs3NzMsMTEgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogCiAgICAgaWYgKG9wdGlvbnMubV9leGl0Q29kZSkKICAgICAgICAgcHJpbnRmKCJqc2MgZXhp
dGluZyAlZFxuIiwgcmVzdWx0KTsKKyAgICAKKyAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUpIHsK
KyAgICAgICAgaWYgKCFnbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPnNhdmUob3B0
aW9ucy5tX3Byb2ZpbGVyT3V0cHV0LnV0ZjgoKS5kYXRhKCkpKQorICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJjb3VsZCBub3Qgc2F2ZSBwcm9maWxlciBvdXRwdXQuXG4iKTsKKyAgICB9CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEzNjMxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTI2LDYgKzE1MjYs
NzQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccHJvZmlsZXJcUEJQQnl0ZWNvZGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBCeXRlY29kZS5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQ
QlBCeXRlY29kZXMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBCeXRlY29kZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQ29tcGlsYXRp
b24uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxwcm9maWxlclxQQlBDb21waWxhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBDb21waWxhdGlvbktpbmQu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
Llxwcm9maWxlclxQQlBDb21waWxhdGlvbktpbmQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQ29tcGlsZWRCeXRlY29k
ZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHByb2ZpbGVyXFBCUENvbXBpbGVkQnl0ZWNvZGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQRGF0YWJhc2UuY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxw
cm9maWxlclxQQlBEYXRhYmFzZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBFeGVjdXRpb25Db3VudGVyLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVy
XFBCUE9yaWdpbi5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUE9yaWdpbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBPcmlnaW5TdGFjay5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XHByb2ZpbGVyXFBCUE9yaWdpblN0YWNrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFByb2ZpbGUuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzYz
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSwyNyBAQAogCQkwRkY0
Mjc3MTE1OTI3NUQ1MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RTE1OTI3NUQyMDA0
Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgKi87IH07CiAJCTBGRjQyNzcyMTU5Mjc1
RDgwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzE2OEEx
NUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QTUxNjZBRDM1MTAwMEY1QkEzIC8q
IFBCUEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlBRDE2NkFEMzVD
MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rl
LmNwcCAqLzsgfTsKKwkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5
NDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCAqLzsgfTsKKwkJMEZGNzI5QUYx
NjZBRDM1QzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTk2MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
QlBDb21waWxhdGlvbi5jcHAgKi87IH07CisJCTBGRjcyOUIwMTY2QUQzNUMwMDBGNUJBMyAvKiBQ
QlBDb21waWxhdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2lu
ZC5jcHAgKi87IH07CisJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5
dGVjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRjcyOTlBMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmNwcCAqLzsg
fTsKKwkJMEZGNzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlDMTY2QUQzNDcw
MDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5jcHAgKi87IH07CisJCTBGRjcyOUIzMTY2QUQzNUMwMDBG
NUJBMyAvKiBQQlBPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgKi87
IH07CisJCTBGRjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMTE2NkFE
MzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovOyB9OworCQkwRkY3MjlCNTE2NkFE
MzVDMDAwRjVCQTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NTc0MkY2MzBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAg
Ki87IH07CisJCTBGRjcyOUI2MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlR2VuZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0
MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJMEZGNzI5
QjcxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzU0MERBNDNCNDQwMEJDODNGMyAvKiBQ
cm9maWxlTm9kZS5jcHAgKi87IH07CisJCTBGRjcyOUI4MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9m
aWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUFCODMyRTBEQTQyQ0FEMDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwICovOyB9OworCQkwRkY3MjlC
OTE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
Qnl0ZWNvZGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZGNzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NzE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCQjE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQ29t
cGlsYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkMx
NjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAv
KiBQQlBDb21waWxlZEJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUERhdGFiYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5
RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyog
UEJQRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyog
UEJQT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZGNzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMjE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5
NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTgx
NEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNTUxLDExICs1NzIsNyBAQAogCQk5MzMwNDAyQzBFNkE3NjQwMDA3ODZFNkEgLyogU21hbGxT
dHJpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMzAzRkU4MEU2QTcyQjUwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwICovOyB9OwogCQk5
MzM1RjI0RDEyRTY3NjVCMDAyQjU1NTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzM0NUE4NzEyRDgz
OEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi87IH07CiAJCTk1MzRB
QUZCMEU1QjdBOTYwMEI4QTQ1QiAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyQzYzQUMwRTQ3NzdENjAwQzEzOTM2
IC8qIEpTUHJvZmlsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJOTU3NDJGNjUwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU3NDJGNjMw
REQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwICovOyB9OwotCQk5NUFCODM0MjBEQTQzMjI1
MDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTVBQjgzMkUwREE0MkNBRDAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCAq
LzsgfTsKLQkJOTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzU0MERBNDNC
NDQwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgKi87IH07Ci0JCTk1Q0Q0NTc2MEUxQzRGREQw
MDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxl
R2VuZXJhdG9yLmNwcCAqLzsgfTsKLQkJOTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFByb2Zp
bGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJOTVDRDQ1NzcwRTFDNEZERDAwODUz
NThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUUzQkMwNDBFMUFFNjgyMDBCMkQx
QzEgLyogQ2FsbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5NUY2RTY5NTBFNUI1Rjk3MDA5MUU4NjAgLyogSlNQcm9maWxlclBy
aXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsK
IAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5
NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CkBAIC0xMDc5LDYgKzEwOTYsMjMgQEAKIAkJMEZGNDI3
NkUxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc29s
dmVHbG9iYWxTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNzE2OEEx
NUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb3BlcnR5T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBCeXRlY29kZS5jcHA7IHBhdGggPSBwcm9m
aWxlci9QQlBCeXRlY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcy
OTkzMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBQQlBCeXRlY29kZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0ZWNvZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTQxNjZBRDM0NzAwMEY1QkEz
IC8qIFBCUEJ5dGVjb2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBQQlBCeXRlY29kZXMuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UEJ5dGVjb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBCeXRlY29k
ZXMuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkY3Mjk5NjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsYXRpb24uY3Bw
OyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGlsYXRpb24uaDsgcGF0aCA9
IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRjcyOTk4MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGlsYXRpb25LaW5kLmNwcDsg
cGF0aCA9IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjcyOTk5MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktp
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGlsYXRpb25LaW5k
Lmg7IHBhdGggPSBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0
ZWNvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGls
ZWRCeXRlY29kZS5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUIxNjZBRDM0NzAwMEY1QkEzIC8q
IFBCUENvbXBpbGVkQnl0ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UEJQQ29tcGlsZWRCeXRlY29kZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVC
QTMgLyogUEJQRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gUEJQRGF0YWJhc2UuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
RGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQRGF0YWJhc2Uu
aDsgcGF0aCA9IHByb2ZpbGVyL1BCUERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBFeGVjdXRpb25Db3VudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUEV4ZWN1dGlvbkNvdW50ZXIuaDsg
cGF0aCA9IHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBPcmlnaW4uY3BwOyBwYXRoID0g
cHJvZmlsZXIvUEJQT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZG
NzI5QTAxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBQQlBPcmlnaW4uaDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyog
UEJQT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UEJQT3JpZ2luU3RhY2suY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyog
UEJQT3JpZ2luU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQT3Jp
Z2luU3RhY2suaDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsg
cGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTE2LDYgKzI1NTAsMjMgQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTVFM0JDMDQwRTFBRTY4MjAw
QjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi8sCisJCQkJMEZGNzI5OTIxNjZBRDM0NzAwMEY1
QkEzIC8qIFBCUEJ5dGVjb2RlLmNwcCAqLywKKwkJCQkwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMg
LyogUEJQQnl0ZWNvZGUuaCAqLywKKwkJCQkwRkY3Mjk5NDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
Qnl0ZWNvZGVzLmNwcCAqLywKKwkJCQkwRkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0
ZWNvZGVzLmggKi8sCisJCQkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0
aW9uLmNwcCAqLywKKwkJCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRp
b24uaCAqLywKKwkJCQkwRkY3Mjk5ODE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25L
aW5kLmNwcCAqLywKKwkJCQkwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRp
b25LaW5kLmggKi8sCisJCQkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVk
Qnl0ZWNvZGUuY3BwICovLAorCQkJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21w
aWxlZEJ5dGVjb2RlLmggKi8sCisJCQkJMEZGNzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERh
dGFiYXNlLmNwcCAqLywKKwkJCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJh
c2UuaCAqLywKKwkJCQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291
bnRlci5oICovLAorCQkJCTBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3Bw
ICovLAorCQkJCTBGRjcyOUEwMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCAqLywKKwkJ
CQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovLAorCQkJ
CTBGRjcyOUEyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oICovLAogCQkJCTk1
NzQyRjYzMEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLywKIAkJCQk5NTc0MkY2NDBE
RDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5oICovLAogCQkJCTk1Q0Q0NTc0MEUxQzRGREQwMDg1
MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLywKQEAgLTMwNzcsNiArMzEyOCwxNSBAQAog
CQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMyMDBENjE5NzEgLyogQ29kZUJs
b2NrSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8q
IENvZGVCbG9ja1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlBNTE2NkFE
MzUxMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUI5
MTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
RjcyOUJBMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGVk
Qnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAv
KiBQQlBEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkUxNjZBRDM2MDAwMEY1
QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJG
MTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcy
OUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0zNTM0LDEwICszNTk0LDYgQEAKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFy
c2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQ
YXJzZXJBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlD
OTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTU3NDJGNjUwREQx
MUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTVDRDQ1NzYw
RTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJOTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0ZCNjBBNDEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlw
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REU3MTA3RUM3RTcwMDY1MDQ0NiAvKiBQ
cm9wZXJ0eU5hbWVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFODEwN0VDN0U3
MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY2NSw2ICsz
NzIxLDE4IEBACiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3Jp
Z2luLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUFEMTY2QUQzNUMwMDBGNUJBMyAvKiBQ
QlBCeXRlY29kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlBRTE2NkFEMzVDMDAwRjVC
QTMgLyogUEJQQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUFGMTY2QUQz
NUMwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3
MjlCMDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUIyMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBE
YXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMzE2NkFEMzVDMDAwRjVCQTMg
LyogUEJQT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUI0MTY2QUQzNUMwMDBG
NUJBMyAvKiBQQlBPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNTE2
NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlC
NjE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkY3MjlCNzE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEZGNzI5QjgxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE3LDYgKzE5MTcsOSBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAKIENvZGVCbG9jazo6fkNv
ZGVCbG9jaygpCiB7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVy
KQorICAgICAgICBtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+bm90aWZ5RGVz
dHJ1Y3Rpb24odGhpcyk7CisgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gUmVtb3Zl
IG15c2VsZiBmcm9tIHRoZSBzZXQgb2YgREZHIGNvZGUgYmxvY2tzLiBOb3RlIHRoYXQgSSBtYXkg
bm90IGJlIGluIHRoaXMgc2V0CiAgICAgLy8gKGJlY2F1c2UgSSdtIG5vdCBhIERGRyBjb2RlIGJs
b2NrKSwgaW4gd2hpY2ggY2FzZSB0aGlzIGlzIGEgbm8tb3AgYW55d2F5LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTM2MzE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjAsNiArMTYwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisjZWxzZQorICAgICAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lVmVyc2lvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlz
OworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RW
aXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVP
cmlnaW4uY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNzMsNiArNzQsMTEgQEAgQ29kZUJsb2NrSGFzaCBJbmxpbmVDYWxsRnJhbWU6Omhhc2goKSBj
bwogICAgIHJldHVybiBleGVjdXRhYmxlLT5oYXNoRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKTsK
IH0KIAorQ29kZUJsb2NrKiBJbmxpbmVDYWxsRnJhbWU6OmJhc2VsaW5lQ29kZUJsb2NrKCkgY29u
c3QKK3sKKyAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUu
Z2V0KCkpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7Cit9CisK
IHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KCIjIiwgaGFzaCgpLCAiOjwiLCBSYXdQb2ludGVyKGV4ZWN1dGFibGUuZ2V0
KCkpLCAiLCBiYyMiLCBjYWxsZXIuYnl0ZWNvZGVJbmRleCwgIiwgIiwgc3BlY2lhbGl6YXRpb25L
aW5kKCksICI+Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsOCBAQCBzdHJ1
Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2goKSBjb25z
dDsKICAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrKCkgY29uc3Q7CisgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEz
NjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MjQsNiArMTcyNCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBJbmxpbmVT
dGFydDoKICAgICBjYXNlIE5vcDoKKyAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgICAgICBu
b2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2
aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMDgsNiArMjEwOCwxMiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbiArIG1fY3VycmVudEluZGV4OwogICAg
ICAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvbjsgLy8gU29tZSBt
ZXRob2RzIHdhbnQgdG8gdXNlIHRoaXMsIGFuZCB3ZSdkIHJhdGhlciBub3QgdGhyZWFkIGl0IHRo
cm91Z2ggY2FsbHMuCiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgICAgICAKKyAgICAg
ICAgaWYgKG1fZ3JhcGgubV9jb21waWxhdGlvbikgeworICAgICAgICAgICAgYWRkVG9HcmFwaChD
b3VudEV4ZWN1dGlvbiwgT3BJbmZvKG1fZ3JhcGgubV9jb21waWxhdGlvbi0+ZXhlY3V0aW9uQ291
bnRlckZvcigKKyAgICAgICAgICAgICAgICBQQlA6Ok9yaWdpblN0YWNrKCptX2dsb2JhbERhdGEt
Pm1fcGVyQnl0ZWNvZGVQcm9maWxlciwgbV9jb2RlQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCkp
KSkpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAK
ICAgICAgICAgLy8gPT09IEZ1bmN0aW9uIGVudHJ5IG9wY29kZXMgPT09CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAxMzYz
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDEwICs0Miw1MyBAQCBEaXNhc3NlbWJsZXI6OkRpc2Fzc2VtYmxl
cihHcmFwaCYgZ3JhcGgpCiAKIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7Ci0gICAgbV9ncmFwaC5tX2RvbWluYXRvcnMu
Y29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOworICAgIFZlY3RvcjxEdW1wZWRPcD4gb3BzID0g
Y3JlYXRlRHVtcExpc3QobGlua0J1ZmZlcik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG9wcy5zaXplKCk7ICsraSkKKyAgICAgICAgb3V0LnByaW50KG9wc1tpXS50ZXh0KTsKK30KKwor
dm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3sKKyAgICBk
dW1wKFdURjo6ZGF0YUZpbGUoKSwgbGlua0J1ZmZlcik7Cit9CisKK3ZvaWQgRGlzYXNzZW1ibGVy
OjpyZXBvcnRUb1Byb2ZpbGVyKFBCUDo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uLCBMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQoreworICAgIFZlY3RvcjxEdW1wZWRPcD4gb3BzID0gY3JlYXRlRHVt
cExpc3QobGlua0J1ZmZlcik7CiAgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9w
cy5zaXplKCk7ICsraSkgeworICAgICAgICBQQlA6Ok9yaWdpblN0YWNrIHN0YWNrOworICAgICAg
ICAKKyAgICAgICAgaWYgKG9wc1tpXS5jb2RlT3JpZ2luLmlzU2V0KCkpCisgICAgICAgICAgICBz
dGFjayA9IFBCUDo6T3JpZ2luU3RhY2soKm1fZ3JhcGgubV9nbG9iYWxEYXRhLm1fcGVyQnl0ZWNv
ZGVQcm9maWxlciwgbV9ncmFwaC5tX2NvZGVCbG9jaywgb3BzW2ldLmNvZGVPcmlnaW4pOworICAg
ICAgICAKKyAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBCUDo6Q29tcGlsZWRC
eXRlY29kZShzdGFjaywgb3BzW2ldLnRleHQpKTsKKyAgICB9Cit9CisKK3ZvaWQgRGlzYXNzZW1i
bGVyOjpkdW1wSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
Cit7CiAgICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgREZHIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxv
Y2tXaXRoSklUVHlwZShtX2dyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpLCAiLCBp
bnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKSwgIjpcbiIpOwogICAgIG91dC5wcmludCgiICAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIo
bGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8
Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUo
KSksICIpOlxuIik7Cit9CisKK3ZvaWQgRGlzYXNzZW1ibGVyOjphcHBlbmQoVmVjdG9yPERpc2Fz
c2VtYmxlcjo6RHVtcGVkT3A+JiByZXN1bHQsIFN0cmluZ1ByaW50U3RyZWFtJiBvdXQsIENvZGVP
cmlnaW4mIHByZXZpb3VzT3JpZ2luKQoreworICAgIHJlc3VsdC5hcHBlbmQoRHVtcGVkT3AocHJl
dmlvdXNPcmlnaW4sIG91dC50b0NTdHJpbmcoKSkpOworICAgIHByZXZpb3VzT3JpZ2luID0gQ29k
ZU9yaWdpbigpOworICAgIG91dC5yZXNldCgpOworfQorCitWZWN0b3I8RGlzYXNzZW1ibGVyOjpE
dW1wZWRPcD4gRGlzYXNzZW1ibGVyOjpjcmVhdGVEdW1wTGlzdChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQoreworICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICBWZWN0b3I8RHVtcGVkT3A+
IHJlc3VsdDsKKyAgICAKKyAgICBDb2RlT3JpZ2luIHByZXZpb3VzT3JpZ2luID0gQ29kZU9yaWdp
bigpOworICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKKyAgICBhcHBlbmQocmVzdWx0
LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKKyAgICAKKyAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy5j
b21wdXRlSWZOZWNlc3NhcnkobV9ncmFwaCk7CiAgICAgCiAgICAgY29uc3QgY2hhciogcHJlZml4
ID0gIiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5UHJlZml4ID0gIiAgICAgICAg
IjsKQEAgLTU3LDcgKzEwMCw5IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBkdW1wRGlzYXNzZW1ibHkob3V0LCBkaXNhc3NlbWJseVByZWZpeCwgbGlua0J1ZmZlciwgcHJl
dmlvdXNMYWJlbCwgbV9sYWJlbEZvckJsb2NrSW5kZXhbYmxvY2tJbmRleF0sIGxhc3ROb2RlSW5k
ZXgpOworICAgICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKICAgICAg
ICAgbV9ncmFwaC5kdW1wQmxvY2tIZWFkZXIob3V0LCBwcmVmaXgsIGJsb2NrSW5kZXgsIEdyYXBo
OjpEdW1wTGl2ZVBoaXNPbmx5KTsKKyAgICAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91
c09yaWdpbik7CiAgICAgICAgIE5vZGVJbmRleCBsYXN0Tm9kZUluZGV4Rm9yRGlzYXNzZW1ibHkg
PSBibG9jay0+YXQoMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnNp
emUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZ3JhcGhbYmxvY2stPmF0KGkpXS53aWxs
SGF2ZUNvZGVHZW5Pck9TUigpICYmICFPcHRpb25zOjpzaG93QWxsREZHTm9kZXMoKSkKQEAgLTc2
LDIwICsxMjEsMjUgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91dAog
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGFiZWwgPSBtX2VuZE9mTWFpblBhdGg7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBkaXNhc3NlbWJseVBy
ZWZpeCwgbGlua0J1ZmZlciwgcHJldmlvdXNMYWJlbCwgY3VycmVudExhYmVsLCBsYXN0Tm9kZUlu
ZGV4Rm9yRGlzYXNzZW1ibHkpOwotICAgICAgICAgICAgbV9ncmFwaC5kdW1wQ29kZU9yaWdpbihv
dXQsIHByZWZpeCwgbGFzdE5vZGVJbmRleCwgYmxvY2stPmF0KGkpKTsKKyAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOworICAgICAgICAgICAgcHJldmlvdXNP
cmlnaW4gPSBtX2dyYXBoW2Jsb2NrLT5hdChpKV0uY29kZU9yaWdpbjsKKyAgICAgICAgICAgIGlm
IChtX2dyYXBoLmR1bXBDb2RlT3JpZ2luKG91dCwgcHJlZml4LCBsYXN0Tm9kZUluZGV4LCBibG9j
ay0+YXQoaSkpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91
c09yaWdpbik7CisgICAgICAgICAgICAgICAgcHJldmlvdXNPcmlnaW4gPSBtX2dyYXBoW2Jsb2Nr
LT5hdChpKV0uY29kZU9yaWdpbjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fZ3JhcGgu
ZHVtcChvdXQsIHByZWZpeCwgYmxvY2stPmF0KGkpKTsKICAgICAgICAgICAgIGxhc3ROb2RlSW5k
ZXggPSBibG9jay0+YXQoaSk7CiAgICAgICAgICAgICBsYXN0Tm9kZUluZGV4Rm9yRGlzYXNzZW1i
bHkgPSBibG9jay0+YXQoaSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZHVtcERpc2Fzc2VtYmx5
KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZpb3VzTGFiZWwsIG1fZW5k
T2ZNYWluUGF0aCwgbGFzdE5vZGVJbmRleCk7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2
aW91c09yaWdpbik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIihFbmQgT2YgTWFpbiBQYXRoKVxu
Iik7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAgICAgZHVtcERp
c2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZpb3VzTGFi
ZWwsIG1fZW5kT2ZDb2RlLCBOb05vZGUpOwotfQotCi12b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQotewotICAgIGR1bXAoV1RGOjpkYXRhRmlsZSgpLCBsaW5r
QnVmZmVyKTsKKyAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKKyAgICAK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2Vt
Ymx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlua0J1ZmZlciYgbGlu
a0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsJiBwcmV2aW91c0xhYmVsLCBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgY3VycmVudExhYmVsLCBOb2RlSW5kZXggY29udGV4dCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuaAkocmV2aXNpb24gMTM2MzE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1
ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUg
PHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtNjQsOCArNjUsMjQgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIExpbmtCdWZmZXImKTsKICAgICB2b2lk
IGR1bXAoTGlua0J1ZmZlciYpOworICAgIHZvaWQgcmVwb3J0VG9Qcm9maWxlcihQQlA6OkNvbXBp
bGF0aW9uKiwgTGlua0J1ZmZlciYpOwogICAgIAogcHJpdmF0ZToKKyAgICB2b2lkIGR1bXBIZWFk
ZXIoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7CisgICAgCisgICAgc3RydWN0IER1bXBlZE9w
IHsKKyAgICAgICAgRHVtcGVkT3AoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDU3RyaW5nIHRleHQp
CisgICAgICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKKyAgICAgICAgICAgICwgdGV4
dCh0ZXh0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENvZGVPcmln
aW4gY29kZU9yaWdpbjsKKyAgICAgICAgQ1N0cmluZyB0ZXh0OworICAgIH07CisgICAgdm9pZCBh
cHBlbmQoVmVjdG9yPER1bXBlZE9wPiYsIFN0cmluZ1ByaW50U3RyZWFtJiwgQ29kZU9yaWdpbiYp
OworICAgIFZlY3RvcjxEdW1wZWRPcD4gY3JlYXRlRHVtcExpc3QoTGlua0J1ZmZlciYpOworICAg
IAogICAgIHZvaWQgZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogcHJl
Zml4LCBMaW5rQnVmZmVyJiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsJiBwcmV2aW91c0xhYmVsLCBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgY3VycmVudExhYmVsLCBOb2RlSW5kZXggY29udGV4dCk7CiAg
ICAgCiAgICAgR3JhcGgmIG1fZ3JhcGg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKIEdyYXBoOjpHcmFwaChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2Rl
SW5kZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFuZGxlVmFsdWVzKQogICAgIDog
bV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisg
ICAgLCBtX2NvbXBpbGF0aW9uKGdsb2JhbERhdGEubV9wZXJCeXRlY29kZVByb2ZpbGVyID8gZ2xv
YmFsRGF0YS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5ld0NvbXBpbGF0aW9uKGNvZGVCbG9jaywg
UEJQOjpERkcpIDogMCkKICAgICAsIG1fcHJvZmlsZWRCbG9jayhjb2RlQmxvY2stPmFsdGVybmF0
aXZlKCkpCiAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkKICAgICAsIG1fb3NyRW50cnlCeXRl
Y29kZUluZGV4KG9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKQEAgLTYzLDE1ICs2NCwxNSBAQCBzdGF0
aWMgdm9pZCBwcmludFdoaXRlU3BhY2UoUHJpbnRTdHJlYW0mCiAgICAgICAgIG91dC5wcmludCgi
ICIpOwogfQogCi12b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBjaGFyKiBwcmVmaXgsIE5vZGVJbmRleCBwcmV2Tm9kZUluZGV4LCBOb2RlSW5kZXggbm9k
ZUluZGV4KQorYm9vbCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgY2hhciogcHJlZml4LCBOb2RlSW5kZXggcHJldk5vZGVJbmRleCwgTm9kZUluZGV4IG5vZGVJ
bmRleCkKIHsKICAgICBpZiAocHJldk5vZGVJbmRleCA9PSBOb05vZGUpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIE5vZGUmIGN1cnJlbnROb2RlID0g
YXQobm9kZUluZGV4KTsKICAgICBOb2RlJiBwcmV2aW91c05vZGUgPSBhdChwcmV2Tm9kZUluZGV4
KTsKICAgICBpZiAocHJldmlvdXNOb2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IGN1
cnJlbnROb2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBWZWN0b3I8Q29kZU9yaWdpbj4gcHJldmlv
dXNJbmxpbmVTdGFjayA9IHByZXZpb3VzTm9kZS5jb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7CiAg
ICAgVmVjdG9yPENvZGVPcmlnaW4+IGN1cnJlbnRJbmxpbmVTdGFjayA9IGN1cnJlbnROb2RlLmNv
ZGVPcmlnaW4uaW5saW5lU3RhY2soKTsKQEAgLTg0LDExICs4NSwxNCBAQCB2b2lkIEdyYXBoOjpk
dW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYgCiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAg
Ym9vbCBoYXNQcmludGVkID0gZmFsc2U7CisgICAgCiAgICAgLy8gUHJpbnQgdGhlIHBvcHMuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gcHJldmlvdXNJbmxpbmVTdGFjay5zaXplKCk7IGktLSA+IGlu
ZGV4T2ZEaXZlcmdlbmNlOykgewogICAgICAgICBvdXQucHJpbnQocHJlZml4KTsKICAgICAgICAg
cHJpbnRXaGl0ZVNwYWNlKG91dCwgaSAqIDIpOwogICAgICAgICBvdXQucHJpbnQoIjwtLSAiLCAq
cHJldmlvdXNJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUsICJcbiIpOworICAgICAgICBo
YXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgLy8gUHJpbnQgdGhlIHB1c2hlcy4K
QEAgLTk2LDcgKzEwMCwxMCBAQCB2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihQcmludFN0cmVh
bSYgCiAgICAgICAgIG91dC5wcmludChwcmVmaXgpOwogICAgICAgICBwcmludFdoaXRlU3BhY2Uo
b3V0LCBpICogMik7CiAgICAgICAgIG91dC5wcmludCgiLS0+ICIsICpjdXJyZW50SW5saW5lU3Rh
Y2tbaV0uaW5saW5lQ2FsbEZyYW1lLCAiXG4iKTsKKyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7
CiAgICAgfQorICAgIAorICAgIHJldHVybiBoYXNQcmludGVkOwogfQogCiBpbnQgR3JhcGg6OmFt
b3VudE9mTm9kZVdoaXRlU3BhY2UoTm9kZSYgbm9kZSkKQEAgLTI1NCw2ICsyNjEsMTMgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBpZiAoaGFzUHJp
bnRlZCkKICAgICAgICAgICAgIG91dC5wcmludCgiLCAiKTsKICAgICAgICAgb3V0LnByaW50KGlu
ZGV4aW5nVHlwZVRvU3RyaW5nKG5vZGUuaW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgaGFzUHJp
bnRlZCA9IHRydWU7CisgICAgfQorICAgIGlmIChub2RlLmhhc0V4ZWN1dGlvbkNvdW50ZXIoKSkg
eworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAgIG91dC5wcmludCgiLCAiKTsK
KyAgICAgICAgb3V0LnByaW50KFJhd1BvaW50ZXIobm9kZS5leGVjdXRpb25Db3VudGVyKCkpKTsK
KyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChvcCA9PSBKU0NvbnN0
YW50KSB7CiAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8gIiwgIiA6ICIiLCAiJCIsIG5v
ZGUuY29uc3RhbnROdW1iZXIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw4ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgcHJpbnROb2RlV2hpdGVTcGFjZShQcmludFN0cmVhbSYsIE5vZGUmKTsKIAogICAg
IC8vIER1bXAgdGhlIGNvZGUgb3JpZ2luIG9mIHRoZSBnaXZlbiBub2RlIGFzIGEgZGlmZiBmcm9t
IHRoZSBjb2RlIG9yaWdpbiBvZiB0aGUKLSAgICAvLyBwcmVjZWRpbmcgbm9kZS4KLSAgICB2b2lk
IGR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogcHJlZml4LCBOb2RlSW5k
ZXgsIE5vZGVJbmRleCk7CisgICAgLy8gcHJlY2VkaW5nIG5vZGUuIFJldHVybnMgdHJ1ZSBpZiBh
bnl0aGluZyB3YXMgcHJpbnRlZC4KKyAgICBib29sIGR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFt
JiwgY29uc3QgY2hhciogcHJlZml4LCBOb2RlSW5kZXgsIE5vZGVJbmRleCk7CiAKICAgICBCbG9j
a0luZGV4IGJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8QmxvY2tJbmRleD4mIGJs
b2NrcywgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbik7CiAKQEAgLTY3MSw2ICs2NzEsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBtX2dsb2JhbERhdGE7CiAgICAgQ29kZUJsb2Nr
KiBtX2NvZGVCbG9jazsKKyAgICBQQlA6OkNvbXBpbGF0aW9uKiBtX2NvbXBpbGF0aW9uOwogICAg
IENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogCiAgICAgVmVjdG9yPCBPd25QdHI8QmFzaWNC
bG9jaz4gLCA4PiBtX2Jsb2NrczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQCBKSVRDb21waWxlcjo6SklUQ29tcGlsZXIoR3JhcGgmIGRmZykKICAgICAsIG1fZ3JhcGgo
ZGZnKQogICAgICwgbV9jdXJyZW50Q29kZU9yaWdpbkluZGV4KDApCiB7Ci0gICAgaWYgKHNob3Vs
ZFNob3dEaXNhc3NlbWJseSgpKQorICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSB8fCBt
X2dyYXBoLm1fZ2xvYmFsRGF0YS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCiAgICAgICAgIG1fZGlz
YXNzZW1ibGVyID0gYWRvcHRQdHIobmV3IERpc2Fzc2VtYmxlcihkZmcpKTsKIH0KIApAQCAtMjM2
LDggKzIzNiwxMCBAQCBib29sIEpJVENvbXBpbGVyOjpjb21waWxlKEpJVENvZGUmIGVudHJ5CiAg
ICAgbGluayhsaW5rQnVmZmVyKTsKICAgICBzcGVjdWxhdGl2ZS5saW5rT1NSRW50cmllcyhsaW5r
QnVmZmVyKTsKIAotICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKKyAgICBpZiAoc2hvdWxkU2hvd0Rp
c2Fzc2VtYmx5KCkpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5kdW1wKGxpbmtCdWZmZXIpOwor
ICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pCisgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5y
ZXBvcnRUb1Byb2ZpbGVyKG1fZ3JhcGgubV9jb21waWxhdGlvbiwgbGlua0J1ZmZlcik7CiAKICAg
ICBlbnRyeSA9IEpJVENvZGUoCiAgICAgICAgIGxpbmtCdWZmZXIuZmluYWxpemVDb2RlV2l0aG91
dERpc2Fzc2VtYmx5KCksCkBAIC0zMjcsOCArMzI5LDEwIEBAIGJvb2wgSklUQ29tcGlsZXI6OmNv
bXBpbGVGdW5jdGlvbihKSVRDb2QKICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbFN0YWNrQ2hlY2ss
IGN0aV9zdGFja19jaGVjayk7CiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGxBcml0eUNoZWNrLCBt
X2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNr
IDogY3RpX29wX2NhbGxfYXJpdHlDaGVjayk7CiAgICAgCi0gICAgaWYgKG1fZGlzYXNzZW1ibGVy
KQorICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKICAgICAgICAgbV9kaXNhc3NlbWJs
ZXItPmR1bXAobGlua0J1ZmZlcik7CisgICAgaWYgKG1fZ3JhcGgubV9jb21waWxhdGlvbikKKyAg
ICAgICAgbV9kaXNhc3NlbWJsZXItPnJlcG9ydFRvUHJvZmlsZXIobV9ncmFwaC5tX2NvbXBpbGF0
aW9uLCBsaW5rQnVmZmVyKTsKIAogICAgIGVudHJ5V2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoYXJpdHlDaGVjayk7CiAgICAgZW50cnkgPSBKSVRDb2RlKApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NTksNiArODU5
LDE2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgQVNTRVJUKGhhc0FyZ3VtZW50UG9zaXRpb25T
dGFydCgpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KKyAgICAKKyAgICBib29s
IGhhc0V4ZWN1dGlvbkNvdW50ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ291
bnRFeGVjdXRpb247CisgICAgfQorICAgIAorICAgIFBCUDo6RXhlY3V0aW9uQ291bnRlciogZXhl
Y3V0aW9uQ291bnRlcigpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFBCUDo6
RXhlY3V0aW9uQ291bnRlcio+KG1fb3BJbmZvKTsKKyAgICB9CiAKICAgICBib29sIHNob3VsZEdl
bmVyYXRlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKEdhcmJhZ2VWYWx1ZSwgTm9kZVJl
c3VsdEpTIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBcCisgICAgLyogQ291bnQgZXhlY3V0
aW9uLiAqL1wKKyAgICBtYWNybyhDb3VudEV4ZWN1dGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKICAgICAvKiBUaGlzIGlzIGEgcHNldWRvLXRlcm1pbmFsLiBJdCBtZWFucyB0aGF0IGV4
ZWN1dGlvbiBzaG91bGQgZmFsbCBvdXQgb2YgREZHIGF0ICovXAogICAgIC8qIHRoaXMgcG9pbnQs
IGJ1dCBleGVjdXRpb24gZG9lcyBjb250aW51ZSBpbiB0aGUgYmFzaWMgYmxvY2sgLSBqdXN0IGlu
IGEgKi9cCiAgICAgLyogZGlmZmVyZW50IGNvbXBpbGVyLiAqL1wKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcx
LDYgKzc3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgY2Fz
ZSBJbmxpbmVTdGFydDoKICAgICAgICAgY2FzZSBOb3A6CisgICAgICAgIGNhc2UgQ291bnRFeGVj
dXRpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExh
c3ROb2RlVHlwZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTA0NCw2ICs1MDQ0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDb3VudEV4ZWN1dGlv
bjoKKyAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6
QWJzb2x1dGVBZGRyZXNzKG5vZGUuZXhlY3V0aW9uQ291bnRlcigpLT5hZGRyZXNzKCkpKTsKKyAg
ICAgICAgYnJlYWs7CisKICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIC8vIFRoaXMgaXMgYSBu
by1vcC4KICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lv
biAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTEyLDYgKzQ5MTIsMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIGNhc2UgTmV3RnVuY3Rpb25FeHByZXNz
aW9uOgogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25FeHByZXNzaW9uKG5vZGUpOwogICAgICAg
ICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKKyAgICAgICAgbV9q
aXQuYWRkNjQoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNz
KG5vZGUuZXhlY3V0aW9uQ291bnRlcigpLT5hZGRyZXNzKCkpKTsKKyAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIEdhcmJhZ2VWYWx1ZToKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCB0
byB0aGUgcG9pbnQgb2YgY29kZSBlbWlzc2lvbiBmb3IgYSBHYXJiYWdlVmFsdWUKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBK
SVQ6OkpJVChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCCiAgICAgLCBtX2xhc3RSZXN1
bHRCeXRlY29kZVJlZ2lzdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiAgICAg
LCBtX2p1bXBUYXJnZXRzUG9zaXRpb24oMCkKICNlbmRpZgorICAgICwgbV9jb21waWxhdGlvbigw
KQogI2lmIFVTRShPU19SQU5ET01ORVNTKQogICAgICwgbV9yYW5kb21HZW5lcmF0b3IoY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkKICNlbHNlCkBAIC0yMzIsNiArMjMzLDEzIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0Up
CiAgICAgICAgIGRhdGFMb2dGKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yIGJjIyV1IGF0IG9m
ZnNldCAweCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwog
I2VuZGlmCisgICAgICAgIAorICAgICAgICBpZiAobV9jb21waWxhdGlvbikgeworICAgICAgICAg
ICAgYWRkNjQoCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKDEpLAorICAgICAgICAgICAg
ICAgIEFic29sdXRlQWRkcmVzcyhtX2NvbXBpbGF0aW9uLT5leGVjdXRpb25Db3VudGVyRm9yKFBC
UDo6T3JpZ2luU3RhY2soUEJQOjpPcmlnaW4oCisgICAgICAgICAgICAgICAgICAgIG1fY29tcGls
YXRpb24tPmJ5dGVjb2RlcygpLCBtX2J5dGVjb2RlT2Zmc2V0KSkpLT5hZGRyZXNzKCkpKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3Vy
cmVudEluc3RydWN0aW9uLT51Lm9wY29kZSkpIHsKICAgICAgICAgREVGSU5FX0JJTkFSWV9PUChv
cF9kZWxfYnlfdmFsKQpAQCAtNjMxLDggKzYzOSwxMCBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNv
bXBpbGUoQ29kZVB0ciogZnVuCiAgICAgfQogI2VuZGlmCiAgICAgCi0gICAgaWYgKE9wdGlvbnM6
OnNob3dEaXNhc3NlbWJseSgpKQorICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSB8
fCBtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgbV9kaXNhc3Nl
bWJsZXIgPSBhZG9wdFB0cihuZXcgSklURGlzYXNzZW1ibGVyKG1fY29kZUJsb2NrKSk7CisgICAg
aWYgKG1fZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICBtX2NvbXBp
bGF0aW9uID0gbV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5ld0NvbXBpbGF0
aW9uKG1fY29kZUJsb2NrLCBQQlA6OkJhc2VsaW5lKTsKICAgICAKICAgICBpZiAobV9kaXNhc3Nl
bWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJlbCgpKTsK
QEAgLTgyMyw4ICs4MzMsMTAgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIq
IGZ1bgogICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYg
ZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiAgICAgICAgICpmdW5jdGlvbkVudHJ5QXJpdHlDaGVj
ayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoYXJpdHlDaGVjayk7CiAKLSAgICBpZiAobV9kaXNh
c3NlbWJsZXIpCisgICAgaWYgKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpKQogICAgICAgICBt
X2Rpc2Fzc2VtYmxlci0+ZHVtcChwYXRjaEJ1ZmZlcik7CisgICAgaWYgKG1fY29tcGlsYXRpb24p
CisgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fY29tcGlsYXRpb24s
IHBhdGNoQnVmZmVyKTsKICAgICAKICAgICBDb2RlUmVmIHJlc3VsdCA9IHBhdGNoQnVmZmVyLmZp
bmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseSgpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NDcsNiArOTQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAjZW5kaWYKICNlbmRpZgogICAgICAgICBPd25QdHI8SklURGlzYXNzZW1ibGVyPiBtX2Rpc2Fz
c2VtYmxlcjsKKyAgICAgICAgUEJQOjpDb21waWxhdGlvbiogbV9jb21waWxhdGlvbjsKICAgICAg
ICAgV2Vha1JhbmRvbSBtX3JhbmRvbUdlbmVyYXRvcjsKICAgICAgICAgc3RhdGljIENvZGVSZWYg
c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAx
MzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NDcsMTggKzQ4LDEwIEBAIEpJVERpc2Fzc2VtYmxlcjo6fkpJVERpc2Fzc2VtYmxlcigpCiAKIHZv
aWQgSklURGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpCiB7Ci0gICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgQmFzZWxpbmUgSklUIGNvZGUg
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
Q291bnQoKSwgIlxuIik7Ci0gICAgb3V0LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVy
KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXpl
KCkpLCAiKTpcbiIpOworICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKICAgICBkdW1w
RGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBtX3N0YXJ0T2ZDb2RlLCBtX2xhYmVsRm9yQnl0
ZWNvZGVJbmRleEluTWFpblBhdGhbMF0pOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBmaXJzdFNsb3dMYWJlbDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sYWJlbEZv
ckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2xh
YmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbaV0uaXNTZXQoKSkgewotICAgICAgICAgICAg
Zmlyc3RTbG93TGFiZWwgPSBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbaV07Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBkdW1wRm9ySW5zdHJ1Y3Rp
b25zKG91dCwgbGlua0J1ZmZlciwgIiAgICAiLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFp
blBhdGgsIGZpcnN0U2xvd0xhYmVsLmlzU2V0KCkgPyBmaXJzdFNsb3dMYWJlbCA6IG1fZW5kT2ZT
bG93UGF0aCk7CisgICAgZHVtcEZvckluc3RydWN0aW9ucyhvdXQsIGxpbmtCdWZmZXIsICIgICAg
IiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRoLCBmaXJzdFNsb3dMYWJlbCgpKTsK
ICAgICBvdXQucHJpbnQoIiAgICAoRW5kIE9mIE1haW4gUGF0aClcbiIpOwogICAgIGR1bXBGb3JJ
bnN0cnVjdGlvbnMob3V0LCBsaW5rQnVmZmVyLCAiICAgIChTKSAiLCBtX2xhYmVsRm9yQnl0ZWNv
ZGVJbmRleEluU2xvd1BhdGgsIG1fZW5kT2ZTbG93UGF0aCk7CiAgICAgb3V0LnByaW50KCIgICAg
KEVuZCBPZiBTbG93IFBhdGgpXG4iKTsKQEAgLTcxLDI3ICs2NCw5NCBAQCB2b2lkIEpJVERpc2Fz
c2VtYmxlcjo6ZHVtcChMaW5rQnVmZmVyJiBsCiAgICAgZHVtcChXVEY6OmRhdGFGaWxlKCksIGxp
bmtCdWZmZXIpOwogfQogCi12b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcEZvckluc3RydWN0aW9u
cyhQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBjb25zdCBjaGFyKiBw
cmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBlbmRMYWJlbCkKK3ZvaWQgSklURGlzYXNzZW1ibGVyOjpyZXBvcnRUb1Byb2Zp
bGVyKFBCUDo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQoreworICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAKKyAgICBkdW1wSGVhZGVyKG91
dCwgbGlua0J1ZmZlcik7CisgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBCUDo6Q29t
cGlsZWRCeXRlY29kZShQQlA6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSkpOworICAg
IG91dC5yZXNldCgpOworICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fc3Rh
cnRPZkNvZGUsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFswXSk7CisgICAgY29t
cGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBCUDo6Q29tcGlsZWRCeXRlY29kZShQQlA6Ok9yaWdp
blN0YWNrKCksIG91dC50b0NTdHJpbmcoKSkpOworICAgIAorICAgIHJlcG9ydEluc3RydWN0aW9u
cyhjb21waWxhdGlvbiwgbGlua0J1ZmZlciwgIiAgICAiLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRl
eEluTWFpblBhdGgsIGZpcnN0U2xvd0xhYmVsKCkpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNj
cmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCAiICAgIChF
bmQgT2YgTWFpbiBQYXRoKVxuIikpOworICAgIHJlcG9ydEluc3RydWN0aW9ucyhjb21waWxhdGlv
biwgbGlua0J1ZmZlciwgIiAgICAoUykgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQ
YXRoLCBtX2VuZE9mU2xvd1BhdGgpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQ
QlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCAiICAgIChFbmQgT2YgU2xv
dyBQYXRoKVxuIikpOworICAgIG91dC5yZXNldCgpOworICAgIGR1bXBEaXNhc3NlbWJseShvdXQs
IGxpbmtCdWZmZXIsIG1fZW5kT2ZTbG93UGF0aCwgbV9lbmRPZkNvZGUpOworICAgIGNvbXBpbGF0
aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFj
aygpLCBvdXQudG9DU3RyaW5nKCkpKTsKK30KKwordm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBI
ZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3sKKyAgICBv
dXQucHJpbnQoIkdlbmVyYXRlZCBCYXNlbGluZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSwgIiwgaW5zdHJ1Y3Rp
b24gY291bnQgPSAiLCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKKyAg
ICBvdXQucHJpbnQoIiAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5kZWJ1Z0Fk
ZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
ZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7Cit9CisK
K01hY3JvQXNzZW1ibGVyOjpMYWJlbCBKSVREaXNhc3NlbWJsZXI6OmZpcnN0U2xvd0xhYmVsKCkK
IHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGxhYmVscy5zaXplKCk7KSB7CisgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZpcnN0U2xvd0xhYmVsOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGguc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aFtpXS5pc1Nl
dCgpKSB7CisgICAgICAgICAgICBmaXJzdFNsb3dMYWJlbCA9IG1fbGFiZWxGb3JCeXRlY29kZUlu
ZGV4SW5TbG93UGF0aFtpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmaXJzdFNsb3dMYWJlbC5pc1NldCgpID8gZmlyc3RTbG93TGFiZWwgOiBtX2Vu
ZE9mU2xvd1BhdGg7Cit9CisKK1ZlY3RvcjxKSVREaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBKSVRE
aXNhc3NlbWJsZXI6OmR1bXBWZWN0b3JGb3JJbnN0cnVjdGlvbnMoTGlua0J1ZmZlciYgbGlua0J1
ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYg
bGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpCit7CisgICAgU3RyaW5nUHJp
bnRTdHJlYW0gb3V0OworICAgIFZlY3RvcjxEdW1wZWRPcD4gcmVzdWx0OworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsYWJlbHMuc2l6ZSgpOykgewogICAgICAgICBpZiAoIWxh
YmVsc1tpXS5pc1NldCgpKSB7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQorICAgICAgICBvdXQucmVzZXQoKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChEdW1wZWRPcCgpKTsKKyAgICAgICAgcmVzdWx0Lmxhc3QoKS5pbmRleCA9IGk7CiAgICAgICAg
IG91dC5wcmludChwcmVmaXgpOwogICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKG91
dCwgaSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbmV4dEluZGV4ID0gaSArIDE7IDsgbmV4dElu
ZGV4KyspIHsKICAgICAgICAgICAgIGlmIChuZXh0SW5kZXggPj0gbGFiZWxzLnNpemUoKSkgewog
ICAgICAgICAgICAgICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIGxhYmVsc1tp
XSwgZW5kTGFiZWwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQubGFzdCgpLmRpc2Fzc2VtYmx5ID0gb3V0LnRvQ1N0cmluZygpOworICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGFiZWxz
W25leHRJbmRleF0uaXNTZXQoKSkgewogICAgICAgICAgICAgICAgIGR1bXBEaXNhc3NlbWJseShv
dXQsIGxpbmtCdWZmZXIsIGxhYmVsc1tpXSwgbGFiZWxzW25leHRJbmRleF0pOworICAgICAgICAg
ICAgICAgIHJlc3VsdC5sYXN0KCkuZGlzYXNzZW1ibHkgPSBvdXQudG9DU3RyaW5nKCk7CiAgICAg
ICAgICAgICAgICAgaSA9IG5leHRJbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcEZvckluc3RydWN0aW9ucyhQcmludFN0cmVhbSYg
b3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxN
YWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRM
YWJlbCkKK3sKKyAgICBWZWN0b3I8RHVtcGVkT3A+IGR1bXBlZE9wcyA9IGR1bXBWZWN0b3JGb3JJ
bnN0cnVjdGlvbnMobGlua0J1ZmZlciwgcHJlZml4LCBsYWJlbHMsIGVuZExhYmVsKTsKKyAgICAK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtcGVkT3BzLnNpemUoKTsgKytpKQorICAg
ICAgICBvdXQucHJpbnQoZHVtcGVkT3BzW2ldLmRpc2Fzc2VtYmx5KTsKK30KKwordm9pZCBKSVRE
aXNhc3NlbWJsZXI6OnJlcG9ydEluc3RydWN0aW9ucyhQQlA6OkNvbXBpbGF0aW9uKiBjb21waWxh
dGlvbiwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5k
TGFiZWwpCit7CisgICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wZWRPcHMgPSBkdW1wVmVjdG9yRm9y
SW5zdHJ1Y3Rpb25zKGxpbmtCdWZmZXIsIHByZWZpeCwgbGFiZWxzLCBlbmRMYWJlbCk7CisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bXBlZE9wcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oCisgICAgICAgICAgICBQQlA6OkNv
bXBpbGVkQnl0ZWNvZGUoCisgICAgICAgICAgICAgICAgUEJQOjpPcmlnaW5TdGFjayhQQlA6Ok9y
aWdpbihjb21waWxhdGlvbi0+Ynl0ZWNvZGVzKCksIGR1bXBlZE9wc1tpXS5pbmRleCkpLAorICAg
ICAgICAgICAgICAgIGR1bXBlZE9wc1tpXS5kaXNhc3NlbWJseSkpOworICAgIH0KIH0KIAogdm9p
ZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZnJvbSwgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIHRvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNh
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
c2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNp
bmNsdWRlICJQQlBEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC01OCw5ICs1OSwyMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkdW1w
KExpbmtCdWZmZXImKTsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7
CisgICAgdm9pZCByZXBvcnRUb1Byb2ZpbGVyKFBCUDo6Q29tcGlsYXRpb24qLCBMaW5rQnVmZmVy
Jik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBkdW1wSGVhZGVyKFByaW50U3RyZWFtJiwgTGlua0J1
ZmZlciYpOworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBmaXJzdFNsb3dMYWJlbCgpOworICAg
IAorICAgIHN0cnVjdCBEdW1wZWRPcCB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4OworICAgICAg
ICBDU3RyaW5nIGRpc2Fzc2VtYmx5OworICAgIH07CisgICAgVmVjdG9yPER1bXBlZE9wPiBkdW1w
VmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKExpbmtCdWZmZXImLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZl
Y3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBlbmRMYWJlbCk7CisgICAgICAgIAogICAgIHZvaWQgZHVtcEZvckluc3RydWN0aW9ucyhQcmlu
dFN0cmVhbSYsIExpbmtCdWZmZXImLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fz
c2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7
CisgICAgdm9pZCByZXBvcnRJbnN0cnVjdGlvbnMoUEJQOjpDb21waWxhdGlvbiosIExpbmtCdWZm
ZXImLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBs
YWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7CisgICAgCiAgICAgdm9pZCBk
dW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJiwgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGZyb20sIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCB0byk7CiAgICAgCiAgICAgQ29kZUJs
b2NrKiBtX2NvZGVCbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBCeXRlY29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2RlLmgiCisKKyNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK0pTVmFsdWUg
Qnl0ZWNvZGU6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZUluZGV4
LCBqc051bWJlcihtX2J5dGVjb2RlSW5kZXgpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZXNjcmlwdGlvbiwganNTdHJp
bmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOChtX2Rlc2NyaXB0aW9uKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFBCUEJ5dGVjb2RlX2gKKyNkZWZpbmUgUEJQQnl0ZWNvZGVfaAorCisj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBCeXRlY29kZSB7CitwdWJsaWM6
CisgICAgQnl0ZWNvZGUoKQorICAgICAgICA6IG1fYnl0ZWNvZGVJbmRleChVSU5UX01BWCkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIEJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNv
bnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKQorICAgICAgICA6IG1fYnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KQorICAgICAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pCisgICAgewor
ICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlY29kZUluZGV4OyB9CisgICAgY29uc3QgQ1N0cmluZyYgZGVzY3JpcHRpb24oKSBjb25z
dCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CisgICAgCisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSopIGNvbnN0OworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7Cisg
ICAgQ1N0cmluZyBtX2Rlc2NyaXB0aW9uOworfTsKKworaW5saW5lIHVuc2lnbmVkIGdldEJ5dGVj
b2RlSW5kZXhGb3JCeXRlY29kZShCeXRlY29kZSogYnl0ZWNvZGUpIHsgcmV0dXJuIGJ5dGVjb2Rl
LT5ieXRlY29kZUluZGV4KCk7IH0KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5k
aWYgLy8gUEJQQnl0ZWNvZGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQQnl0ZWNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBCeXRlY29kZXMuaCIKKworI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworQnl0ZWNvZGVzOjpCeXRlY29kZXMo
c2l6ZV90IGlkLCBDb2RlQmxvY2tIYXNoIGhhc2gpCisgICAgOiBtX2lkKGlkKQorICAgICwgbV9o
YXNoKGhhc2gpCit7Cit9CisKK0J5dGVjb2Rlczo6fkJ5dGVjb2RlcygpIHsgfQorCit1bnNpZ25l
ZCBCeXRlY29kZXM6OmluZGV4Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4
KSBjb25zdAoreworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGUsIHVuc2lnbmVkLCBn
ZXRCeXRlY29kZUluZGV4Rm9yQnl0ZWNvZGU+KGNvbnN0X2Nhc3Q8Qnl0ZWNvZGUqPihtX2J5dGVj
b2RlLmJlZ2luKCkpLCBtX2J5dGVjb2RlLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkgLSBtX2J5dGVj
b2RlLmJlZ2luKCk7Cit9CisKK2NvbnN0IEJ5dGVjb2RlJiBCeXRlY29kZXM6OmZvckJ5dGVjb2Rl
SW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXQoaW5k
ZXhGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpKTsKK30KKwordm9pZCBCeXRlY29kZXM6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIiMiLCBtX2hh
c2gsICIoIiwgbV9pZCwgIikiKTsKK30KKworSlNWYWx1ZSBCeXRlY29kZXM6OnRvSlMoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKKyAgICAKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZXNJRCwganNOdW1iZXIobV9pZCkp
OworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmhhc2gsIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgodG9DU3RyaW5n
KG1faGFzaCkpKSk7CisgICAgCisgICAgSlNBcnJheSogc3RyZWFtID0gY29uc3RydWN0RW1wdHlB
cnJheShleGVjLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ieXRlY29kZS5z
aXplKCk7ICsraSkKKyAgICAgICAgc3RyZWFtLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBtX2J5
dGVjb2RlW2ldLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVjb2RlLCBzdHJlYW0pOworICAgIAor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUEJ5dGVjb2Rlc19oCisjZGVmaW5lIFBC
UEJ5dGVjb2Rlc19oCisKKyNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCisjaW5jbHVkZSAiSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNv
ZGVzIHsKK3B1YmxpYzoKKyAgICBCeXRlY29kZXMoc2l6ZV90IGlkLCBDb2RlQmxvY2tIYXNoKTsK
KyAgICB+Qnl0ZWNvZGVzKCk7CisgICAgCisgICAgdm9pZCBhcHBlbmQoY29uc3QgQnl0ZWNvZGUm
IGJ5dGVjb2RlKSB7IG1fYnl0ZWNvZGUuYXBwZW5kKGJ5dGVjb2RlKTsgfQorICAgIAorICAgIHNp
emVfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBDb2RlQmxvY2tIYXNoIGhhc2go
KSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKyAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBk
YXRhIHN0cnVjdHVyZSBpcyBub3QgaW5kZXhlZCBieSBieXRlY29kZSBpbmRleC4KKyAgICB1bnNp
Z25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZS5zaXplKCk7IH0KKyAgICBjb25z
dCBCeXRlY29kZSYgYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZVtpXTsg
fQorICAgIAorICAgIHVuc2lnbmVkIGluZGV4Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRl
Y29kZUluZGV4KSBjb25zdDsKKyAgICBjb25zdCBCeXRlY29kZSYgZm9yQnl0ZWNvZGVJbmRleCh1
bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKKyAgICAKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgCitwcml2YXRlOgorICAgIHNpemVfdCBtX2lkOworICAgIENvZGVCbG9ja0hhc2ggbV9o
YXNoOworICAgIFZlY3RvcjxCeXRlY29kZT4gbV9ieXRlY29kZTsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUEJ5dGVjb2Rlc19oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlv
bi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBCUENvbXBpbGF0aW9uLmgiCisKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFBCUCB7CisKK0NvbXBpbGF0aW9uOjpDb21waWxhdGlvbihCeXRlY29kZXMqIGJ5dGVjb2Rlcywg
Q29tcGlsYXRpb25LaW5kIGtpbmQpCisgICAgOiBtX2J5dGVjb2RlcyhieXRlY29kZXMpCisgICAg
LCBtX2tpbmQoa2luZCkKK3sKK30KKworQ29tcGlsYXRpb246On5Db21waWxhdGlvbigpIHsgfQor
Cit2b2lkIENvbXBpbGF0aW9uOjphZGREZXNjcmlwdGlvbihjb25zdCBDb21waWxlZEJ5dGVjb2Rl
JiBjb21waWxlZEJ5dGVjb2RlKQoreworICAgIG1fZGVzY3JpcHRpb25zLmFwcGVuZChjb21waWxl
ZEJ5dGVjb2RlKTsKK30KKworRXhlY3V0aW9uQ291bnRlciogQ29tcGlsYXRpb246OmV4ZWN1dGlv
bkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbikKK3sKKyAgICBIYXNoTWFwPE9y
aWdpblN0YWNrLCBPd25QdHI8RXhlY3V0aW9uQ291bnRlcj4gPjo6aXRlcmF0b3IgaXRlciA9IG1f
Y291bnRlcnMuZmluZChvcmlnaW4pOworICAgIGlmIChpdGVyICE9IG1fY291bnRlcnMuZW5kKCkp
CisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKKyAgICAKKyAgICBPd25QdHI8RXhl
Y3V0aW9uQ291bnRlcj4gY291bnRlciA9IGFkb3B0UHRyKG5ldyBFeGVjdXRpb25Db3VudGVyKCkp
OworICAgIEV4ZWN1dGlvbkNvdW50ZXIqIHJlc3VsdCA9IGNvdW50ZXIuZ2V0KCk7CisgICAgbV9j
b3VudGVycy5hZGQob3JpZ2luLCBjb3VudGVyLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworSlNWYWx1ZSBDb21waWxhdGlvbjo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Cit7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwor
ICAgIAorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ5dGVjb2Rlc0lELCBqc051bWJlcihtX2J5dGVjb2Rlcy0+aWQoKSkpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbXBpbGF0aW9uS2luZCwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOCh0
b0NTdHJpbmcobV9raW5kKSkpKTsKKyAgICAKKyAgICBKU0FycmF5KiBkZXNjcmlwdGlvbnMgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2Rlc2NyaXB0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVzY3JpcHRpb25zLT5wdXRE
aXJlY3RJbmRleChleGVjLCBpLCBtX2Rlc2NyaXB0aW9uc1tpXS50b0pTKGV4ZWMpKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5kZXNjcmlwdGlvbnMsIGRlc2NyaXB0aW9ucyk7CisgICAgCisgICAgSlNBcnJheSogY291bnRl
cnMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIEhhc2hNYXA8T3JpZ2luU3Rh
Y2ssIE93blB0cjxFeGVjdXRpb25Db3VudGVyPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2Nv
dW50ZXJzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1
dGlvbkNvdW50ZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2NvdW50ZXJzLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgSlNPYmplY3QqIGNvdW50ZXJFbnRyeSA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICBjb3VudGVyRW50cnktPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5vcmlnaW4sIGl0
ZXItPmtleS50b0pTKGV4ZWMpKTsKKyAgICAgICAgY291bnRlckVudHJ5LT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXhlY3V0aW9uQ291bnQsIGpz
TnVtYmVyKGl0ZXItPnZhbHVlLT5jb3VudCgpKSk7CisgICAgICAgIGNvdW50ZXJzLT5wdXNoKGV4
ZWMsIGNvdW50ZXJFbnRyeSk7CisgICAgfQorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvdW50ZXJzLCBjb3VudGVycyk7Cisg
ICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRp
b24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBD
b21waWxhdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQQ29tcGlsYXRpb25f
aAorI2RlZmluZSBQQlBDb21waWxhdGlvbl9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiUEJQQ29tcGlsYXRpb25LaW5kLmgiCisjaW5jbHVkZSAiUEJQQ29tcGlsZWRCeXRlY29k
ZS5oIgorI2luY2x1ZGUgIlBCUEV4ZWN1dGlvbkNvdW50ZXIuaCIKKyNpbmNsdWRlICJQQlBPcmln
aW5TdGFjay5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xh
c3MgQnl0ZWNvZGVzOworCisvLyBSZXByZXNlbnRzIHRoZSBhY3Qgb2YgZXhlY3V0aW5nIHNvbWUg
Ynl0ZWNvZGVzIGluIHNvbWUgZW5naW5lLCBhbmQgZG9lcworLy8gYWxsIG9mIHRoZSBjb3VudGlu
ZyBmb3IgdGhvc2UgZXhlY3V0aW9ucy4KKworY2xhc3MgQ29tcGlsYXRpb24geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOyBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21waWxhdGlvbik7Citw
dWJsaWM6CisgICAgQ29tcGlsYXRpb24oQnl0ZWNvZGVzKiwgQ29tcGlsYXRpb25LaW5kKTsKKyAg
ICB+Q29tcGlsYXRpb24oKTsKKyAgICAKKyAgICBCeXRlY29kZXMqIGJ5dGVjb2RlcygpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZWNvZGVzOyB9CisgICAgQ29tcGlsYXRpb25LaW5kIGtpbmQoKSBjb25z
dCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICAKKyAgICB2b2lkIGFkZERlc2NyaXB0aW9uKGNvbnN0
IENvbXBpbGVkQnl0ZWNvZGUmKTsKKyAgICBFeGVjdXRpb25Db3VudGVyKiBleGVjdXRpb25Db3Vu
dGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJik7CisgICAgCisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBCeXRlY29kZXMqIG1fYnl0ZWNvZGVz
OworICAgIENvbXBpbGF0aW9uS2luZCBtX2tpbmQ7CisgICAgVmVjdG9yPENvbXBpbGVkQnl0ZWNv
ZGU+IG1fZGVzY3JpcHRpb25zOworICAgIEhhc2hNYXA8T3JpZ2luU3RhY2ssIE93blB0cjxFeGVj
dXRpb25Db3VudGVyPiA+IG1fY291bnRlcnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
UEJQCisKKyNlbmRpZiAvLyBQQlBDb21waWxhdGlvbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9u
S2luZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBCUENvbXBpbGF0aW9uS2luZC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgSlNDOjpQQlA6OkNvbXBpbGF0aW9uS2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkg
eworICAgIGNhc2UgSlNDOjpQQlA6OkxMSW50OgorICAgICAgICBvdXQucHJpbnQoIkxMSW50Iik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UEJQOjpCYXNlbGluZToKKyAgICAgICAg
b3V0LnByaW50KCJCYXNlbGluZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBC
UDo6REZHOgorICAgICAgICBvdXQucHJpbnQoIkRGRyIpOworICAgICAgICByZXR1cm47CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBDb21waWxhdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBQQlBDb21waWxhdGlvbktpbmRfaAorI2RlZmluZSBQQlBDb21waWxh
dGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2VudW0gQ29t
cGlsYXRpb25LaW5kIHsKKyAgICBMTEludCwKKyAgICBCYXNlbGluZSwKKyAgICBERkcKK307CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFBy
aW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQQlA6OkNv
bXBpbGF0aW9uS2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUEJQQ29t
cGlsYXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UENvbXBpbGVkQnl0ZWNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQ29tcGlsZWRC
eXRlY29kZS5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBQQlAgeworCitDb21waWxlZEJ5dGVjb2RlOjpDb21waWxlZEJ5dGVjb2Rl
KGNvbnN0IE9yaWdpblN0YWNrJiBvcmlnaW4sIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKQor
ICAgIDogbV9vcmlnaW4ob3JpZ2luKQorICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlwdGlvbikK
K3sKK30KKworQ29tcGlsZWRCeXRlY29kZTo6fkNvbXBpbGVkQnl0ZWNvZGUoKQoreworfQorCitK
U1ZhbHVlIENvbXBpbGVkQnl0ZWNvZGU6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorewor
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAK
KyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5vcmlnaW4sIG1fb3JpZ2luLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlc2NyaXB0aW9u
LCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KG1fZGVzY3JpcHRpb24pKSk7CisgICAg
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxl
ZEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQ
Q29tcGlsZWRCeXRlY29kZV9oCisjZGVmaW5lIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAorCisjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBCUE9yaWdpblN0YWNrLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisK
K2NsYXNzIENvbXBpbGVkQnl0ZWNvZGUgeworcHVibGljOgorICAgIC8vIEl0J3MgdmFsaWQgdG8g
aGF2ZSBhbiBlbXB0eSBPcmlnaW5TdGFjaywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBz
b21lCisgICAgLy8gc29ydCBvZiBub24tYnl0ZWNvZGUtcmVsYXRlZCBtYWNoaW5lIGNvZGUuCisg
ICAgQ29tcGlsZWRCeXRlY29kZShjb25zdCBPcmlnaW5TdGFjayYsIGNvbnN0IENTdHJpbmcmIGRl
c2NyaXB0aW9uKTsKKyAgICB+Q29tcGlsZWRCeXRlY29kZSgpOworICAgIAorICAgIGNvbnN0IE9y
aWdpblN0YWNrJiBvcmlnaW5TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisgICAg
Y29uc3QgQ1N0cmluZyYgZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9u
OyB9CisgICAgCisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJp
dmF0ZToKKyAgICBPcmlnaW5TdGFjayBtX29yaWdpbjsKKyAgICBDU3RyaW5nIG1fZGVzY3JpcHRp
b247Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBDb21w
aWxlZEJ5dGVjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUERhdGFiYXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUERhdGFiYXNlLmgiCisKKyNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworRGF0YWJhc2U6
OkRhdGFiYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICA6IG1fZ2xvYmFsRGF0YShn
bG9iYWxEYXRhKQoreworfQorCitEYXRhYmFzZTo6fkRhdGFiYXNlKCkKK3sKK30KKworQnl0ZWNv
ZGVzKiBEYXRhYmFzZTo6YWRkQnl0ZWNvZGVzKENvZGVCbG9ja0hhc2ggaGFzaCkKK3sKKyAgICBt
X2J5dGVjb2Rlcy5hcHBlbmQoQnl0ZWNvZGVzKG1fYnl0ZWNvZGVzLnNpemUoKSwgaGFzaCkpOwor
ICAgIHJldHVybiAmbV9ieXRlY29kZXMubGFzdCgpOworfQorCitCeXRlY29kZXMqIERhdGFiYXNl
OjplbnN1cmVCeXRlY29kZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgU3RyaW5n
UHJpbnRTdHJlYW0gb3V0OworICAgIAorICAgIGNvZGVCbG9jayA9IGNvZGVCbG9jay0+YmFzZWxp
bmVWZXJzaW9uKCk7CisgICAgCisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29kZXMqPjo6
aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVzTWFwLmZpbmQoY29kZUJsb2NrKTsKKyAgICBpZiAo
aXRlciAhPSBtX2J5dGVjb2Rlc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVl
OworICAgIAorICAgIEJ5dGVjb2RlcyogcmVzdWx0ID0gYWRkQnl0ZWNvZGVzKGNvZGVCbG9jay0+
aGFzaCgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSAwOyBieXRl
Y29kZUluZGV4IDwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7KSB7CisgICAgICAg
IG91dC5yZXNldCgpOworICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGJ5dGVj
b2RlSW5kZXgpOworICAgICAgICByZXN1bHQtPmFwcGVuZChCeXRlY29kZShieXRlY29kZUluZGV4
LCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICAgICAgCisgICAgICAgIGJ5dGVjb2RlSW5kZXggKz0g
b3Bjb2RlTGVuZ3RoKAorICAgICAgICAgICAgbV9nbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRP
cGNvZGVJRCgKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVj
b2RlSW5kZXhdLnUub3Bjb2RlKSk7CisgICAgfQorICAgIAorICAgIG1fYnl0ZWNvZGVzTWFwLmFk
ZChjb2RlQmxvY2ssIHJlc3VsdCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgbV9ieXRlY29kZXNNYXAucmVtb3ZlKGNvZGVCbG9jayk7Cit9CisKK0NvbXBpbGF0aW9uKiBE
YXRhYmFzZTo6bmV3Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBpbGF0aW9u
S2luZCBraW5kKQoreworICAgIE93blB0cjxDb21waWxhdGlvbj4gY29tcGlsYXRpb24gPSBhZG9w
dFB0cihuZXcgQ29tcGlsYXRpb24oYnl0ZWNvZGVzLCBraW5kKSk7CisgICAgQ29tcGlsYXRpb24q
IHJlc3VsdCA9IGNvbXBpbGF0aW9uLmdldCgpOworICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChj
b21waWxhdGlvbi5yZWxlYXNlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvbXBpbGF0
aW9uKiBEYXRhYmFzZTo6bmV3Q29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvbXBp
bGF0aW9uS2luZCBraW5kKQoreworICAgIHJldHVybiBuZXdDb21waWxhdGlvbihlbnN1cmVCeXRl
Y29kZXNGb3IoY29kZUJsb2NrKSwga2luZCk7Cit9CisKK0pTVmFsdWUgRGF0YWJhc2U6OnRvSlMo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICBKU0FycmF5KiBieXRlY29kZXMgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2J5dGVjb2Rlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYnl0ZWNvZGVzLT5wdXREaXJlY3RJbmRl
eChleGVjLCBpLCBtX2J5dGVjb2Rlc1tpXS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZXMs
IGJ5dGVjb2Rlcyk7CisgICAgCisgICAgSlNBcnJheSogY29tcGlsYXRpb25zID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb21w
aWxhdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNvbXBpbGF0aW9ucy0+cHV0RGlyZWN0SW5k
ZXgoZXhlYywgaSwgbV9jb21waWxhdGlvbnNbaV0tPnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBp
bGF0aW9ucywgY29tcGlsYXRpb25zKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitT
dHJpbmcgRGF0YWJhc2U6OnRvSlNPTigpIGNvbnN0Cit7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoCisgICAgICAgIG1fZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShtX2dsb2JhbERhdGEsIGpzTnVsbCgp
KSk7CisgICAgCisgICAgcmV0dXJuIEpTT05TdHJpbmdpZnkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIHRvSlMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLCAwKTsKK30KKworYm9vbCBE
YXRhYmFzZTo6c2F2ZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgY29uc3QKK3sKKyAgICBPd25QdHI8
RmlsZVByaW50U3RyZWFtPiBvdXQgPSBGaWxlUHJpbnRTdHJlYW06Om9wZW4oZmlsZW5hbWUsICJ3
Iik7CisgICAgaWYgKCFvdXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBvdXQt
PnByaW50KHRvSlNPTigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0
YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
RGF0YWJhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBEYXRhYmFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQRGF0YWJhc2Vf
aAorI2RlZmluZSBQQlBEYXRhYmFzZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiUEJQQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiUEJQQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRl
ICJQQlBDb21waWxhdGlvbktpbmQuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIERhdGFi
YXNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RGF0YWJhc2UpOworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIERhdGFiYXNlKEpTR2xv
YmFsRGF0YSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5EYXRhYmFzZSgpOworICAgIAorICAg
IEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayopOworICAgIHZvaWQgbm90
aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKik7CisgICAgCisgICAgQ29tcGlsYXRpb24qIG5ld0Nv
bXBpbGF0aW9uKENvZGVCbG9jayosIENvbXBpbGF0aW9uS2luZCk7CisgICAgQ29tcGlsYXRpb24q
IG5ld0NvbXBpbGF0aW9uKEJ5dGVjb2RlcyosIENvbXBpbGF0aW9uS2luZCk7CisgICAgCisgICAg
Ly8gQ29udmVydHMgdGhlIGRhdGFiYXNlIHRvIGEgSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBpcyBz
dWl0YWJsZSBmb3IgSlNPTiBzdHJpbmdpZmljYXRpb24uCisgICAgLy8gTm90ZSB0aGF0IGl0J3Mg
cHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXNlIGFuIEV4ZWNTdGF0ZSogYXNzb2NpYXRlZCB3aXRo
IGEgZ2xvYmFsCisgICAgLy8gb2JqZWN0IHRoYXQgaXMgImNsZWFuIiAtIGkuZS4gYXJyYXkgYW5k
IG9iamVjdCBwcm90b3R5cGVzIGhhdmVuJ3QgaGFkIHN0cmFuZ2UgdGhpbmdzCisgICAgLy8gZG9u
ZSB0byB0aGVtLiBBbmQgeWVzLCBpdCBzaG91bGQgYmUgYXBwcm9wcmlhdGUgdG8ganVzdCB1c2Ug
YSBnbG9iYWxFeGVjIGhlcmUuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSopIGNvbnN0OworICAgIAorICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhYmFzZSB0byBh
IEphdmFTY3JpcHQgb2JqZWN0IHVzaW5nIGEgcHJpdmF0ZSB0ZW1wb3JhcnkgZ2xvYmFsIG9iamVj
dCwKKyAgICAvLyBhbmQgdGhlbiByZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRo
YXQgb2JqZWN0LgorICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b0pTT04oKSBjb25zdDsK
KyAgICAKKyAgICAvLyBTYXZlcyB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiAoZnJvbSB0b0pTT04o
KSkgdG8gdGhlIGdpdmVuIGZpbGUuIFJldHVybnMgZmFsc2UgaWYgdGhlCisgICAgLy8gc2F2ZSBm
YWlsZWQuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzYXZlKGNvbnN0IGNoYXIqIGZpbGVu
YW1lKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBCeXRlY29kZXMqIGFkZEJ5dGVjb2RlcyhDb2Rl
QmxvY2tIYXNoKTsKKyAgICAKKyAgICBKU0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKKyAgICBT
ZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBtX2J5dGVjb2RlczsKKyAgICBIYXNoTWFwPENvZGVC
bG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNvZGVzTWFwOworICAgIFZlY3RvcjxPd25QdHI8Q29t
cGlsYXRpb24+ID4gbV9jb21waWxhdGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
UEJQCisKKyNlbmRpZiAvLyBQQlBEYXRhYmFzZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBFeGVjdXRpb25Db3VudGVyX2gKKyNk
ZWZpbmUgUEJQRXhlY3V0aW9uQ291bnRlcl9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFBCUCB7CisKK2NsYXNzIEV4ZWN1dGlvbkNvdW50ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOyBXVEZfTUFLRV9OT05DT1BZQUJMRShFeGVjdXRpb25Db3VudGVyKTsKK3B1
YmxpYzoKKyAgICBFeGVjdXRpb25Db3VudGVyKCkgOiBtX2NvdW50ZXIoMCkgeyB9CisgICAgCisg
ICAgdWludDY0X3QqIGFkZHJlc3MoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9CisgICAgCisgICAg
dWludDY0X3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXI7IH0KKworcHJpdmF0ZToK
KyAgICB1aW50NjRfdCBtX2NvdW50ZXI7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQ
CisKKyNlbmRpZiAvLyBQQlBFeGVjdXRpb25Db3VudGVyX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luLmgiCisKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2Rlcy5oIgorI2luY2x1
ZGUgIlBCUERhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKwor
T3JpZ2luOjpPcmlnaW4oRGF0YWJhc2UmIGRhdGFiYXNlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICA6IG1fYnl0ZWNvZGVzKGRhdGFiYXNlLmVuc3Vy
ZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2spKQorICAgICwgbV9ieXRlY29kZUluZGV4KGJ5dGVjb2Rl
SW5kZXgpCit7Cit9CisKK3ZvaWQgT3JpZ2luOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Cit7CisgICAgb3V0LnByaW50KCptX2J5dGVjb2RlcywgIjpiYyMiLCBtX2J5dGVjb2RlSW5kZXgp
OworfQorCitKU1ZhbHVlIE9yaWdpbjo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7Cisg
ICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmJ5dGVjb2Rlc0lELCBqc051bWJlcihtX2J5dGVjb2Rlcy0+aWQoKSkpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVj
b2RlSW5kZXgsIGpzTnVtYmVyKG1fYnl0ZWNvZGVJbmRleCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBQQlBPcmlnaW5faAorI2RlZmluZSBQQlBPcmlnaW5faAorCisjaW5jbHVkZSAiQ29kZUJs
b2NrSGFzaC5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgQ29kZUJsb2NrOworCituYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNvZGVzOworY2xh
c3MgRGF0YWJhc2U7CisKK2NsYXNzIE9yaWdpbiB7CitwdWJsaWM6CisgICAgT3JpZ2luKCkKKyAg
ICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoVUlOVF9NQVgpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBPcmlnaW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fYnl0
ZWNvZGVJbmRleChVSU5UX01BWCAtIDEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmlnaW4o
Qnl0ZWNvZGVzKiBieXRlY29kZXMsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgICAgIDog
bV9ieXRlY29kZXMoYnl0ZWNvZGVzKQorICAgICAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29k
ZUluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCA8IFVJTlRfTUFY
IC0gMSk7CisgICAgfQorICAgIAorICAgIE9yaWdpbihEYXRhYmFzZSYsIENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qg
eyByZXR1cm4gbV9ieXRlY29kZUluZGV4ID09IFVJTlRfTUFYOyB9CisgICAgCisgICAgQnl0ZWNv
ZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQorICAgIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7IH0KKyAg
ICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IE9yaWdpbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKKyAgICB1bnNpZ25lZCBtX2J5dGVj
b2RlSW5kZXg7Cit9OworCitpbmxpbmUgYm9vbCBPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgT3Jp
Z2luJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ieXRlY29kZXMgPT0gb3RoZXIubV9i
eXRlY29kZXMKKyAgICAgICAgJiYgbV9ieXRlY29kZUluZGV4ID09IG90aGVyLm1fYnl0ZWNvZGVJ
bmRleDsKK30KKworaW5saW5lIHVuc2lnbmVkIE9yaWdpbjo6aGFzaCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6UHRySGFzaDxCeXRlY29kZXMqPjo6aGFzaChtX2J5dGVjb2RlcykgKyBtX2J5
dGVjb2RlSW5kZXg7Cit9CisKK2lubGluZSBib29sIE9yaWdpbjo6aXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2J5dGVjb2RlSW5kZXggPT0gVUlOVF9NQVgg
LSAxOworfQorCitzdHJ1Y3QgT3JpZ2luSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgT3JpZ2luJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBPcmlnaW4mIGEsIGNvbnN0IE9yaWdpbiYgYikgeyByZXR1cm4gYSA9PSBi
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSB0cnVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQQlA6Ok9yaWdpbj4geworICAgIHR5cGVkZWYgSlND
OjpQQlA6Ok9yaWdpbkhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlBCUDo6T3Jp
Z2luPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlBCUDo6T3JpZ2luPiB7IH07CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUEJQT3JpZ2luX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNr
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBCUE9yaWdpblN0YWNrLmgiCisKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFzZS5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCit7CisgICAgbV9zdGFjay5hcHBlbmQoT3JpZ2luKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7Cit9CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFj
ayhjb25zdCBPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChvcmlnaW4pOwor
fQorCitPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2soRGF0YWJhc2UmIGRhdGFiYXNlLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAgICBWZWN0
b3I8Q29kZU9yaWdpbj4gc3RhY2sgPSBjb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7CisgICAgCisg
ICAgYXBwZW5kKE9yaWdpbihkYXRhYmFzZSwgY29kZUJsb2NrLCBzdGFja1swXS5ieXRlY29kZUlu
ZGV4KSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHN0YWNrLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGFwcGVuZChPcmlnaW4oCisgICAgICAgICAgICBkYXRhYmFzZS5lbnN1
cmVCeXRlY29kZXNGb3Ioc3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9j
aygpKSwKKyAgICAgICAgICAgIHN0YWNrW2ldLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICB9Cit9CisK
K09yaWdpblN0YWNrOjp+T3JpZ2luU3RhY2soKSB7IH0KKwordm9pZCBPcmlnaW5TdGFjazo6YXBw
ZW5kKGNvbnN0IE9yaWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RhY2suYXBwZW5kKG9yaWdpbik7
Cit9CisKK2Jvb2wgT3JpZ2luU3RhY2s6Om9wZXJhdG9yPT0oY29uc3QgT3JpZ2luU3RhY2smIG90
aGVyKSBjb25zdAoreworICAgIGlmIChtX3N0YWNrLnNpemUoKSAhPSBvdGhlci5tX3N0YWNrLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IG1fc3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX3N0YWNrW2ldICE9IG90aGVy
Lm1fc3RhY2tbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAg
IHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBPcmlnaW5TdGFjazo6aGFzaCgpIGNvbnN0Cit7
CisgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9zdGFjay5zaXplKCk7CisgICAgCisgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9zdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgcmVzdWx0ICo9IDM7
CisgICAgICAgIHJlc3VsdCArPSBtX3N0YWNrW2ldLmhhc2goKTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBPcmlnaW5TdGFjazo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0YWNrLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgb3V0LnByaW50KCIgLS0+ICIp
OworICAgICAgICBvdXQucHJpbnQobV9zdGFja1tpXSk7CisgICAgfQorfQorCitKU1ZhbHVlIE9y
aWdpblN0YWNrOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU0FycmF5KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3N0YWNrLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQtPnB1
dERpcmVjdEluZGV4KGV4ZWMsIGksIG1fc3RhY2tbaV0udG9KUyhleGVjKSk7CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFj
ay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUE9yaWdpblN0YWNrX2gKKyNkZWZp
bmUgUEJQT3JpZ2luU3RhY2tfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBC
UE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgQ29kZUJsb2NrOworc3RydWN0IENvZGVPcmlnaW47CisKK25hbWVzcGFjZSBQQlAgewor
CitjbGFzcyBEYXRhYmFzZTsKKworY2xhc3MgT3JpZ2luU3RhY2sgeworcHVibGljOgorICAgIE9y
aWdpblN0YWNrKCkgeyB9CisgICAgCisgICAgT3JpZ2luU3RhY2soV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKTsKKyAgICAKKyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhjb25zdCBPcmln
aW4mKTsKKyAgICAKKyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhEYXRhYmFzZSYsIENvZGVCbG9j
ayosIGNvbnN0IENvZGVPcmlnaW4mKTsKKyAgICAKKyAgICB+T3JpZ2luU3RhY2soKTsKKyAgICAK
KyAgICB2b2lkIGFwcGVuZChjb25zdCBPcmlnaW4mKTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2suaXNFbXB0eSgpOyB9CisgICAgCisgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2suc2l6ZSgpOyB9CisgICAgY29uc3QgT3Jp
Z2luJiBmcm9tQm90dG9tKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tbaV07IH0K
KyAgICBjb25zdCBPcmlnaW4mIGZyb21Ub3AodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9z
dGFja1ttX3N0YWNrLnNpemUoKSAtIGkgLSAxXTsgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBPcmlnaW5TdGFjayYpIGNvbnN0OworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsK
KyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgCisg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBWZWN0b3I8T3JpZ2luLCAxPiBtX3N0
YWNrOworfTsKKworaW5saW5lIGJvb2wgT3JpZ2luU3RhY2s6OmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGFjay5zaXplKCkgPT0gMSAmJiBtX3N0YWNr
WzBdLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7Cit9CisKK3N0cnVjdCBPcmlnaW5TdGFja0hh
c2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE9yaWdpblN0YWNrJiBrZXkpIHsg
cmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBPcmlnaW5T
dGFjayYgYSwgY29uc3QgT3JpZ2luU3RhY2smIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPEpTQzo6UEJQOjpPcmlnaW5TdGFjaz4geworICAgIHR5cGVkZWYgSlNDOjpQQlA6
Ok9yaWdpblN0YWNrSGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UEJQOjpPcmln
aW5TdGFjaz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpQQlA6Ok9yaWdpblN0YWNrPiB7
IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUEJQT3JpZ2luU3RhY2tfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwzMCBA
QAogICAgIG1hY3JvKGFyZ3VtZW50cykgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8o
YmluZCkgXAorICAgIG1hY3JvKGJ5dGVjb2RlKSBcCisgICAgbWFjcm8oYnl0ZWNvZGVJbmRleCkg
XAorICAgIG1hY3JvKGJ5dGVjb2RlcykgXAorICAgIG1hY3JvKGJ5dGVjb2Rlc0lEKSBcCiAgICAg
bWFjcm8oY2FsbCkgXAogICAgIG1hY3JvKGNhbGxlZSkgXAogICAgIG1hY3JvKGNhbGxlcikgXAor
ICAgIG1hY3JvKGNvbXBpbGF0aW9uS2luZCkgXAorICAgIG1hY3JvKGNvbXBpbGF0aW9ucykgXAog
ICAgIG1hY3JvKGNvbXBpbGUpIFwKICAgICBtYWNybyhjb25maWd1cmFibGUpIFwKICAgICBtYWNy
byhjb25zdHJ1Y3RvcikgXAorICAgIG1hY3JvKGNvdW50ZXJzKSBcCisgICAgbWFjcm8oZGVzY3Jp
cHRpb24pIFwKKyAgICBtYWNybyhkZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhlbnVtZXJhYmxl
KSBcCiAgICAgbWFjcm8oZXZhbCkgXAogICAgIG1hY3JvKGV4ZWMpIFwKKyAgICBtYWNybyhleGVj
dXRpb25Db3VudCkgXAogICAgIG1hY3JvKGZyb21DaGFyQ29kZSkgXAogICAgIG1hY3JvKGdsb2Jh
bCkgXAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCisgICAg
bWFjcm8oaGFzaCkgXAogICAgIG1hY3JvKGlnbm9yZUNhc2UpIFwKICAgICBtYWNybyhpbmRleCkg
XAogICAgIG1hY3JvKGlucHV0KSBcCkBAIC01Niw2ICs2Nyw3IEBACiAgICAgbWFjcm8obmFtZSkg
XAogICAgIG1hY3JvKG5vdykgXAogICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKG9yaWdp
bikgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUp
IFwKICAgICBtYWNybyhwcm90b3R5cGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsOCBAQCBpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEV4
ZWNTdGF0CiAgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVy
LgogICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay5nZXQoKSwgaml0Q29kZSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRD
b2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIGlmIChleGVjLT5nbG9iYWxE
YXRhKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+ZW5zdXJlQnl0ZWNvZGVzRm9yKGNvZGVCbG9jay5n
ZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCkBAIC01Niw2ICs1OCw4IEBAIGlubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1
dGlvbigKICAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIu
CiAgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBraW5kLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
aWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCisgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRlY29k
ZXNGb3IoY29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2Vs
c2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDEwICsyNDUsMTYgQEAgSlNH
bG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGhlYXAubm90aWZ5SXNT
YWZlVG9Db2xsZWN0KCk7CiAgICAgCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25z
KCp0aGlzKTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6ZW5hYmxlUEJQKCkpCisgICAgICAgIG1f
cGVyQnl0ZWNvZGVQcm9maWxlciA9IGFkb3B0UHRyKG5ldyBQQlA6OkRhdGFiYXNlKCp0aGlzKSk7
CiB9CiAKIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiB7CisgICAgLy8gQ2xlYXIgdGhp
cyBmaXJzdCB0byBlbnN1cmUgdGhhdCBub2JvZHkgdHJpZXMgdG8gcmVtb3ZlIHRoZW1zZWx2ZXMg
ZnJvbSBpdC4KKyAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIuY2xlYXIoKTsKKyAgICAKICAgICBB
U1NFUlQoIW1fYXBpTG9jay5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKICAgICBoZWFw
LmRpZFN0YXJ0Vk1TaHV0ZG93bigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiU3Ryb25nLmgiCkBAIC0zNTIsNiArMzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGRvdWJsZSBjYWNoZWREYXRlU3RyaW5nVmFsdWU7CiAKICAgICAgICAgUHJvZmlsZXIqIG1fZW5h
YmxlZFByb2ZpbGVyOworICAgICAgICBPd25QdHI8UEJQOjpEYXRhYmFzZT4gbV9wZXJCeXRlY29k
ZVByb2ZpbGVyOwogICAgICAgICBSZWdFeHBDYWNoZSogbV9yZWdFeHBDYWNoZTsKICAgICAgICAg
QnVtcFBvaW50ZXJBbGxvY2F0b3IgbV9yZWdFeHBBbGxvY2F0b3I7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB2KGJvb2wsIHNob3dERkdEaXNhc3NlbWJs
eSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHNob3dBbGxERkdOb2RlcywgZmFsc2UpIFwKICAgICBc
CisgICAgdihib29sLCBlbmFibGVQQlAsIGZhbHNlKSBcCisgICAgXAogICAgIHYodW5zaWduZWQs
IG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwMCkgXAog
ICAgIFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlk
YXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTgwKSBcCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MzE4KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAx
Mi0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBz
aG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRo
ZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1hZGUgc29tZSBtaW5vciBjaGFuZ2VzIHRvIHN1cHBvcnQgdGhl
IFBCUCAoUGVyIEJ5dGVjb2RlIFByb2ZpbGVyKS4gRmlsZU91dHB1dFN0cmVhbQorICAgICAgICBu
b3cgaGFzIGFuIG9wZW4oKSBtZXRob2QsIGFuZCBEYXRhTG9nIHVzZXMgaXQuIFN0cmluZ1ByaW50
U3RyZWFtIGhhcyBhIHJlc2V0KCkgbWV0aG9kLAorICAgICAgICB3aGljaCBhbGxvd3MgeW91IHRv
IHJldXNlIHRoZSBzYW1lIFN0cmluZ1ByaW50U3RyZWFtIGZvciBjcmVhdGluZyBtdWx0aXBsZSBz
dHJpbmdzLgorICAgICAgICBTZWdtZW50ZWRWZWN0b3Igbm93IGhhcyBhIGNvbnN0IG9wZXJhdG9y
W10uIEFuZCwgV1RGU3RyaW5nIG5vdyBjYW4gZG8gZnJvbVVURjgoKSBvbgorICAgICAgICBhIENT
dHJpbmcgZGlyZWN0bHkuCisKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5jcHA6CisgICAgICAgIChX
VEY6OmluaXRpYWxpemVMb2dGaWxlT25jZSk6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVh
bS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgIChX
VEYpOgorICAgICAgICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKiB3dGYvU2Vn
bWVudGVkVmVjdG9yLmg6CisgICAgICAgIChXVEY6OlNlZ21lbnRlZFZlY3Rvcjo6YXQpOgorICAg
ICAgICAoU2VnbWVudGVkVmVjdG9yKToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9yOjpv
cGVyYXRvcltdKToKKyAgICAgICAgKiB3dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdQcmludFN0cmVhbTo6cmVzZXQpOgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKiB3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKFN0cmluZ1ByaW50U3RyZWFt
KToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmZyb21VVEY4KToKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvV1RGU3Ry
aW5nLmg6CisgICAgICAgIChTdHJpbmcpOgorCiAyMDEyLTExLTMwICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4sIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBk
aWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBTZXBhcmF0ZSBRdCBXZWJLaXQgaW50byBRdCBXZWJL
aXQgYW5kIFF0IFdlYktpdCBXaWRnZXRzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkocmV2aXNpb24gMTM2
MzE4KQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDEwICs3Myw4IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxlT25jZSgpCiAjZW5kaWYK
IAogICAgIGlmIChmaWxlbmFtZSkgewotICAgICAgICBGSUxFKiByYXdGaWxlID0gZm9wZW4oYWN0
dWFsRmlsZW5hbWUsICJ3Iik7Ci0gICAgICAgIGlmIChyYXdGaWxlKQotICAgICAgICAgICAgZmls
ZSA9IG5ldyBGaWxlUHJpbnRTdHJlYW0ocmF3RmlsZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAg
ZmlsZSA9IEZpbGVQcmludFN0cmVhbTo6b3BlbihhY3R1YWxGaWxlbmFtZSwgInciKS5sZWFrUHRy
KCk7CisgICAgICAgIGlmICghZmlsZSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2Fy
bmluZzogQ291bGQgbm90IG9wZW4gbG9nIGZpbGUgJXMgZm9yIHdyaXRpbmcuXG4iLCBhY3R1YWxG
aWxlbmFtZSk7CiAgICAgfQogI2VuZGlmIC8vIERBVEFfTE9HX1RPX0ZJTEUKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvRmlsZVByaW50U3RyZWFtLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93
dGYvRmlsZVByaW50U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTUgQEAg
RmlsZVByaW50U3RyZWFtOjp+RmlsZVByaW50U3RyZWFtKCkKICAgICBmY2xvc2UobV9maWxlKTsK
IH0KIAorUGFzc093blB0cjxGaWxlUHJpbnRTdHJlYW0+IEZpbGVQcmludFN0cmVhbTo6b3Blbihj
b25zdCBjaGFyKiBmaWxlbmFtZSwgY29uc3QgY2hhciogbW9kZSkKK3sKKyAgICBGSUxFKiBmaWxl
ID0gZm9wZW4oZmlsZW5hbWUsIG1vZGUpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJu
IFBhc3NPd25QdHI8RmlsZVByaW50U3RyZWFtPigpOworICAgIAorICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRmlsZVByaW50U3RyZWFtKGZpbGUpKTsKK30KKwogdm9pZCBGaWxlUHJpbnRTdHJlYW06
OnZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpCiB7CiAgICAgdmZw
cmludGYobV9maWxlLCBmb3JtYXQsIGFyZ0xpc3QpOwpJbmRleDogU291cmNlL1dURi93dGYvRmls
ZVByaW50U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsZVByaW50U3Ry
ZWFtLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVh
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEZpbGVQcmludFN0
cmVhbV9oCiAKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNDEs
NiArNDIsOCBAQCBwdWJsaWM6CiAgICAgRmlsZVByaW50U3RyZWFtKEZJTEUqLCBBZG9wdGlvbk1v
ZGUgPSBBZG9wdCk7CiAgICAgdmlydHVhbCB+RmlsZVByaW50U3RyZWFtKCk7CiAgICAgCisgICAg
c3RhdGljIFBhc3NPd25QdHI8RmlsZVByaW50U3RyZWFtPiBvcGVuKGNvbnN0IGNoYXIqIGZpbGVu
YW1lLCBjb25zdCBjaGFyKiBtb2RlKTsKKyAgICAKICAgICBGSUxFKiBmaWxlKCkgeyByZXR1cm4g
bV9maWxlOyB9CiAgICAgCiAgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFf
bGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9T
ZWdtZW50ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRW
ZWN0b3IuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCwxMSArMTI4LDIxIEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnRGb3IoaW5kZXgpLT5hdChzdWJzY3JpcHRGb3Io
aW5kZXgpKTsKICAgICAgICAgfQogCisgICAgICAgIGNvbnN0IFQmIGF0KHNpemVfdCBpbmRleCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VnbWVudGVk
VmVjdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4qPih0aGlzKS0+YXQoaW5kZXgp
OworICAgICAgICB9CisKICAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgICAgIH0KIAorICAgICAg
ICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKKyAgICAgICAgfQorCiAgICAgICAgIFQmIGxhc3Qo
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYg
KzkyLDEyIEBAIENTdHJpbmcgU3RyaW5nUHJpbnRTdHJlYW06OnRvQ1N0cmluZygpCiAgICAgcmV0
dXJuIENTdHJpbmcobV9idWZmZXIsIG1fbmV4dCk7CiB9CiAKK3ZvaWQgU3RyaW5nUHJpbnRTdHJl
YW06OnJlc2V0KCkKK3sKKyAgICBtX25leHQgPSAwOworICAgIG1fYnVmZmVyWzBdID0gMDsKK30K
Kwogdm9pZCBTdHJpbmdQcmludFN0cmVhbTo6aW5jcmVhc2VTaXplKHNpemVfdCBuZXdTaXplKQog
ewogICAgIEFTU0VSVChuZXdTaXplID4gbV9zaXplKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0
cmluZ1ByaW50U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0KSBXVEZfQVRU
UklCVVRFX1BSSU5URigyLCAwKTsKICAgICAKICAgICBDU3RyaW5nIHRvQ1N0cmluZygpOworICAg
IHZvaWQgcmVzZXQoKTsKICAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZWFzZVNpemUoc2l6
ZV90KTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHJldmlzaW9uIDEzNjMxOCkK
KysrIFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEyLDYgKzkxMiwxMSBAQCBTdHJpbmcgU3RyaW5nOjpmcm9tVVRGOChjb25zdCBMQ2hhciogc3Ry
CiAgICAgcmV0dXJuIGZyb21VVEY4KHN0cmluZywgc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KHN0cmluZykpKTsKIH0KIAorU3RyaW5nIFN0cmluZzo6ZnJvbVVURjgoY29uc3Qg
Q1N0cmluZyYgcykKK3sKKyAgICByZXR1cm4gZnJvbVVURjgocy5kYXRhKCkpOworfQorCiBTdHJp
bmcgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciogc3RyaW5n
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBTdHJpbmcgdXRmOCA9IGZyb21VVEY4KHN0cmluZywgc2l6
ZSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw2ICs0
NDAsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcg
ZnJvbVVURjgoY29uc3QgTENoYXIqKTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0
IGNoYXIqIHMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsgfTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21V
VEY4KGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihzKSk7IH07CisgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBDU3Ry
aW5nJik7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRv
IFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5v
dCB2YWxpZCBVVEYtOC4KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBm
cm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MzYzMTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxMi0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdG9vbCB0aGF0IGFsbG93cyB5b3UgdG8g
Z3JvayB0aGUgb3V0cHV0IGZyb20gSlNDJ3MgbmV3IFBCUCAoUGVyIEJ5dGVjb2RlCisgICAgICAg
IFByb2ZpbGVyKS4gQ3VycmVudGx5LCB0aGlzIHN0aWxsIGdldHMgY29uZnVzZWQgYSBiaXQgYWJv
dXQgdGhlIGV4ZWN1dGlvbiBjb3VudHMKKyAgICAgICAgb2YgYSBtZXRob2QgcnVubmluZyBzdGFu
ZGFsb25lIHZlcnN1cyBhIG1ldGhvZCBydW5uaW5nIGlubGluZWQsIGJ1dCBvdGhlciB0aGFuCisg
ICAgICAgIHRoYXQsIGl0J3MgcHJldHR5IGNvb2wuIFNlZSB0aGUgYXR0YWNoZWQgInNhbXBsaW5n
IHByb2ZpbGluZyBzZXNzaW9uIiBhdHRhY2hlZCB0bworICAgICAgICB0aGUgYnVnIHRvIHNlZSBp
dCBpbiBhY3Rpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dDogQWRk
ZWQuCisKIDIwMTItMTItMDEgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4K
IAogICAgICAgICBbWHZmYkRyaXZlcl0gWHZmYkRyaXZlclRlc3QudGVzdF9uZXh0X2ZyZWVfZGlz
cGxheSBpcyBmbGFreSBvbiBidWlsZGVycyB1c2luZyBYdmZiRHJpdmVyCkluZGV4OiBUb29scy9T
Y3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rp
c3BsYXktcGJwLW91dHB1dAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1w
YnAtb3V0cHV0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwMiBAQAorIyEvdXNyL2Jpbi9lbnYg
cnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICdy
dWJ5Z2VtcycKKworcmVxdWlyZSAnanNvbicKK3JlcXVpcmUgJ3JlYWRsaW5lJworCitjbGFzcyBC
eXRlY29kZQorICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2RlSW5kZXgsIDpkZXNjcmlwdGlvbiwg
OnRvcENvdW50cworICAgIAorICAgIGRlZiBpbml0aWFsaXplKGJ5dGVjb2RlSW5kZXgsIGRlc2Ny
aXB0aW9uKQorICAgICAgICBAYnl0ZWNvZGVJbmRleCA9IGJ5dGVjb2RlSW5kZXgKKyAgICAgICAg
QGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgQHRvcENvdW50cyA9IFtdCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGFkZFRvcENvdW50KGNvdW50KQorICAgICAgICBAdG9wQ291bnRz
IDw8IGNvdW50CisgICAgZW5kCisgICAgCisgICAgZGVmIHRvdGFsRXhlY3V0aW9uQ291bnQKKyAg
ICAgICAgc3VtID0gMAorICAgICAgICBAdG9wQ291bnRzLmVhY2ggeworICAgICAgICAgICAgfCB2
YWx1ZSB8CisgICAgICAgICAgICBzdW0gKz0gdmFsdWUuY291bnQKKyAgICAgICAgfQorICAgICAg
ICBzdW0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAg
ICAgICBzdW0gPSAwCisgICAgICAgIEB0b3BDb3VudHMuZWFjaCB7CisgICAgICAgICAgICB8IHZh
bHVlIHwKKyAgICAgICAgICAgIGlmIHZhbHVlLmVuZ2luZSA9PSBlbmdpbmUKKyAgICAgICAgICAg
ICAgICBzdW0gKz0gdmFsdWUuY291bnQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAg
ICAgIHN1bQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJ5dGVjb2RlcworICAgIGF0dHJfYWNjZXNz
b3IgOmhhc2gKKyAgICBpbmNsdWRlIEVudW1lcmFibGUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6
ZShqc29uKQorICAgICAgICBAaGFzaCA9IGpzb25bImhhc2giXS50b19zCisgICAgICAgIEBieXRl
Y29kZSA9IHt9CisgICAgICAgIGpzb25bImJ5dGVjb2RlIl0uZWFjaCB7CisgICAgICAgICAgICB8
IHN1Ykpzb24gfAorICAgICAgICAgICAgaW5kZXggPSBzdWJKc29uWyJieXRlY29kZUluZGV4Il0u
dG9faQorICAgICAgICAgICAgQGJ5dGVjb2RlW2luZGV4XSA9IEJ5dGVjb2RlLm5ldyhpbmRleCwg
c3ViSnNvblsiZGVzY3JpcHRpb24iXS50b19zKQorICAgICAgICB9CisgICAgZW5kCisgICAgCisg
ICAgZGVmIGVhY2gKKyAgICAgICAgQGJ5dGVjb2RlLnZhbHVlcy5zb3J0e3xhLCBifCBhLmJ5dGVj
b2RlSW5kZXggPD0+IGIuYnl0ZWNvZGVJbmRleH0uZWFjaCB7CisgICAgICAgICAgICB8IHZhbHVl
IHwKKyAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgIH0KKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgYnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgQGJ5dGVjb2RlW2J5dGVjb2Rl
SW5kZXhdCisgICAgZW5kCisgICAgCisgICAgZGVmIHRvdGFsTWF4RXhlY3V0aW9uQ291bnQKKyAg
ICAgICAgbWF4ID0gMAorICAgICAgICBAYnl0ZWNvZGUuZWFjaF92YWx1ZSB7CisgICAgICAgICAg
ICB8IGJ5dGVjb2RlIHwKKyAgICAgICAgICAgIG1heCA9IFttYXgsIGJ5dGVjb2RlLnRvdGFsRXhl
Y3V0aW9uQ291bnRdLm1heAorICAgICAgICB9CisgICAgICAgIG1heAorICAgIGVuZAorICAgIAor
ICAgIGRlZiBtYXhFeGVjdXRpb25Db3VudChlbmdpbmUpCisgICAgICAgIG1heCA9IDAKKyAgICAg
ICAgQGJ5dGVjb2RlLmVhY2hfdmFsdWUgeworICAgICAgICAgICAgfCBieXRlY29kZSB8CisgICAg
ICAgICAgICBtYXggPSBbbWF4LCBieXRlY29kZS5leGVjdXRpb25Db3VudChlbmdpbmUpXS5tYXgK
KyAgICAgICAgfQorICAgICAgICBtYXgKKyAgICBlbmQKK2VuZAorCitkZWYgb3JpZ2luU3RhY2tG
cm9tSlNPTihqc29uKQorICAgIGpzb24ubWFwIHsKKyAgICAgICAgfCBzdWJKc29uIHwKKyAgICAg
ICAgJGJ5dGVjb2Rlc1tzdWJKc29uWyJieXRlY29kZXNJRCJdLnRvX2ldLmJ5dGVjb2RlKHN1Ykpz
b25bImJ5dGVjb2RlSW5kZXgiXS50b19pKQorICAgIH0KK2VuZAorCitjbGFzcyBDb21waWxlZEJ5
dGVjb2RlCisgICAgYXR0cl9hY2Nlc3NvciA6b3JpZ2luLCA6ZGVzY3JpcHRpb24KKyAgICAKKyAg
ICBkZWYgaW5pdGlhbGl6ZShqc29uKQorICAgICAgICBAb3JpZ2luID0gb3JpZ2luU3RhY2tGcm9t
SlNPTihqc29uWyJvcmlnaW4iXSkKKyAgICAgICAgQGRlc2NyaXB0aW9uID0ganNvblsiZGVzY3Jp
cHRpb24iXS50b19zCisgICAgZW5kCitlbmQKKworY2xhc3MgRXhlY3V0aW9uQ291bnRlcgorICAg
IGF0dHJfYWNjZXNzb3IgOm9yaWdpbiwgOmVuZ2luZSwgOmNvdW50CisgICAgCisgICAgZGVmIGlu
aXRpYWxpemUob3JpZ2luLCBlbmdpbmUsIGNvdW50KQorICAgICAgICBAb3JpZ2luID0gb3JpZ2lu
CisgICAgICAgIEBlbmdpbmUgPSBlbmdpbmUKKyAgICAgICAgQGNvdW50ID0gY291bnQKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBDb21waWxhdGlvbgorICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2Rl
LCA6ZW5naW5lLCA6ZGVzY3JpcHRpb25zLCA6Y291bnRlcnMKKyAgICAKKyAgICBkZWYgaW5pdGlh
bGl6ZShqc29uKQorICAgICAgICBAYnl0ZWNvZGUgPSAkYnl0ZWNvZGVzW2pzb25bImJ5dGVjb2Rl
c0lEIl0udG9faV0KKyAgICAgICAgQGVuZ2luZSA9IGpzb25bImNvbXBpbGF0aW9uS2luZCJdCisg
ICAgICAgIEBkZXNjcmlwdGlvbnMgPSBqc29uWyJkZXNjcmlwdGlvbnMiXS5tYXAgeworICAgICAg
ICAgICAgfCBzdWJKc29uIHwKKyAgICAgICAgICAgIENvbXBpbGVkQnl0ZWNvZGUubmV3KHN1Ykpz
b24pCisgICAgICAgIH0KKyAgICAgICAgQGNvdW50ZXJzID0ge30KKyAgICAgICAganNvblsiY291
bnRlcnMiXS5lYWNoIHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8CisgICAgICAgICAgICBvcmln
aW4gPSBvcmlnaW5TdGFja0Zyb21KU09OKHN1Ykpzb25bIm9yaWdpbiJdKQorICAgICAgICAgICAg
Y291bnRlciA9IEV4ZWN1dGlvbkNvdW50ZXIubmV3KG9yaWdpbiwgQGVuZ2luZSwgc3ViSnNvblsi
ZXhlY3V0aW9uQ291bnQiXS50b19pKQorICAgICAgICAgICAgQGNvdW50ZXJzW29yaWdpbl0gPSBj
b3VudGVyCisgICAgICAgICAgICBvcmlnaW5bLTFdLmFkZFRvcENvdW50KGNvdW50ZXIpCisgICAg
ICAgIH0KKyAgICBlbmQKK2VuZAorCiskanNvbiA9IEpTT046OnBhcnNlKElPOjpyZWFkKEFSR1Zb
MF0pKQorJGJ5dGVjb2RlcyA9ICRqc29uWyJieXRlY29kZXMiXS5tYXAgeworICAgIHwgc3ViSnNv
biB8CisgICAgQnl0ZWNvZGVzLm5ldyhzdWJKc29uKQorfQorJGNvbXBpbGF0aW9ucyA9ICRqc29u
WyJjb21waWxhdGlvbnMiXS5tYXAgeworICAgIHwgc3ViSnNvbiB8CisgICAgQ29tcGlsYXRpb24u
bmV3KHN1Ykpzb24pCit9CiskZW5naW5lcyA9IFsiQmFzZWxpbmUiLCAiREZHIl0KKworZGVmIGxw
YWQoc3RyLGNoYXJzKQorICBpZiBzdHIubGVuZ3RoPmNoYXJzCisgICAgc3RyCisgIGVsc2UKKyAg
ICAiJSN7Y2hhcnN9cyIlKHN0cikKKyAgZW5kCitlbmQKKworZGVmIHJwYWQoc3RyLCBjaGFycykK
KyAgICB3aGlsZSBzdHIubGVuZ3RoIDwgY2hhcnMKKyAgICAgICAgc3RyICs9ICIgIgorICAgIGVu
ZAorICAgIHN0cgorZW5kCisKK2RlZiBjZW50ZXIoc3RyLCBjaGFycykKKyAgICB3aGlsZSBzdHIu
bGVuZ3RoIDwgY2hhcnMKKyAgICAgICAgc3RyICs9ICIgIgorICAgICAgICBpZiBzdHIubGVuZ3Ro
IDwgY2hhcnMKKyAgICAgICAgICAgIHN0ciA9ICIgIiArIHN0cgorICAgICAgICBlbmQKKyAgICBl
bmQKKyAgICBzdHIKK2VuZAorCitkZWYgbWF5QmVIYXNoKGhhc2gpCisgICAgaGFzaCA9fiAvXiMv
IG9yIGhhc2guc2l6ZSA9PSA2CitlbmQKKworZGVmIGdldEhhc2goaGFzaCkKKyAgICBpZiBoYXNo
ID1+IC9eIy8KKyAgICAgICAgJH4ucG9zdF9tYXRjaAorICAgIGVsc2UKKyAgICAgICAgaGFzaAor
ICAgIGVuZAorZW5kCisKK21vZHVsZSBDb21tYW5kcworICAgIGRlZiBzZWxmLkNNRF9oZWxwCisg
ICAgICAgIHB1dHMgInN1bW1hcnkgICAgIFByaW50IGEgc3VtbWFyeSBvZiBjb2RlIGJsb2NrIGV4
ZWN1dGlvbiByYXRlcy4iCisgICAgICAgIHB1dHMgImRpc3BsYXkgICAgIERpc3BsYXkgZGV0YWls
cyBmb3IgYSBjb2RlIGJsb2NrLiIKKyAgICAgICAgcHV0cyAiaGVscCAgICAgICAgUHJpbnQgdGhp
cyBtZXNzYWdlLiIKKyAgICAgICAgcHV0cyAicXVpdCAgICAgICAgUXVpdC4iCisgICAgZW5kCisg
ICAgCisgICAgZGVmIHNlbGYuQ01EX3F1aXQKKyAgICAgICAgZXhpdCAwCisgICAgZW5kCisgICAg
CisgICAgZGVmIHNlbGYuQ01EX3N1bW1hcnkKKyAgICAgICAgaGFzaENvbHMgPSAxNAorICAgICAg
ICBjb3VudENvbHMgPSAxMCAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgCisgICAgICAgIHB1dHMo
cnBhZCgiQ29kZUJsb2NrIiwgaGFzaENvbHMpICsgIiAiICsgcnBhZCgkZW5naW5lcy5qb2luKCIv
IikgKyAiIENvdW50cyIsIGNvdW50Q29scykpCisgICAgICAgICRieXRlY29kZXMuc29ydCB7Cisg
ICAgICAgICAgICB8IGEsIGIgfAorICAgICAgICAgICAgYi50b3RhbE1heEV4ZWN1dGlvbkNvdW50
IDw9PiBhLnRvdGFsTWF4RXhlY3V0aW9uQ291bnQKKyAgICAgICAgfS5lYWNoIHsKKyAgICAgICAg
ICAgIHwgYnl0ZWNvZGUgfAorICAgICAgICAgICAgcHV0cyhjZW50ZXIoIiMiICsgYnl0ZWNvZGUu
aGFzaCwgaGFzaENvbHMpICsgIiAiICsKKyAgICAgICAgICAgICAgICAgY2VudGVyKCRlbmdpbmVz
Lm1hcCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdpbmUgfAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlLm1heEV4ZWN1dGlvbkNvdW50KGVuZ2luZSkudG9f
cworICAgICAgICAgICAgICAgICAgICAgICAgfS5qb2luKCIvIiksIGNvdW50Q29scykpCisgICAg
ICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5DTURfZGlzcGxheSgqYXJncykKKyAg
ICAgICAgY2FzZSBhcmdzLmxlbmd0aAorICAgICAgICB3aGVuIDEKKyAgICAgICAgICAgIGhhc2gg
PSBhcmdzWzBdCisgICAgICAgICAgICBlbmdpbmUgPSAiQmFzZWxpbmUiCisgICAgICAgICAgICAk
Y29tcGlsYXRpb25zLmVhY2ggeworICAgICAgICAgICAgICAgIHwgY29tcGlsYXRpb24gfAorICAg
ICAgICAgICAgICAgIG5leHQgaWYgY29tcGlsYXRpb24uYnl0ZWNvZGUuaGFzaCAhPSBoYXNoCisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgY29tcGlsYXRpb24uZW5naW5lID09
ICJERkciCisgICAgICAgICAgICAgICAgICAgIGVuZ2luZSA9ICJERkciCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAg
IHdoZW4gMgorICAgICAgICAgICAgaWYgbWF5QmVIYXNoKGFyZ3NbMF0pCisgICAgICAgICAgICAg
ICAgaGFzaCA9IGFyZ3NbMF0KKyAgICAgICAgICAgICAgICBlbmdpbmUgPSBhcmdzWzFdCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5naW5lID0gYXJnc1swXQorICAgICAgICAg
ICAgICAgIGhhc2ggPSBhcmdzWzFdCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcHV0cyAiVXNhZ2U6IHN1bW1hcnkgPGNvZGUgYmxvY2sgaGFzaD4gPGVuZ2luZT4i
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBjb3Vu
dENvbHMgPSAxMCAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgJGNvbXBpbGF0aW9ucy5lYWNoIHsK
KyAgICAgICAgICAgIHwgY29tcGlsYXRpb24gfAorICAgICAgICAgICAgbmV4dCBpZiBjb21waWxh
dGlvbi5ieXRlY29kZS5oYXNoICE9IGhhc2gKKyAgICAgICAgICAgIG5leHQgaWYgY29tcGlsYXRp
b24uZW5naW5lICE9IGVuZ2luZQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdXRzKHJwYWQo
JGVuZ2luZXMuam9pbigiLyIpICsgIiBDb3VudHMiLCBjb3VudENvbHMpICsgIiBEaXNhc3NlbWJs
eSBmb3IgI3toYXNofSBpbiAje2VuZ2luZX0iKQorICAgICAgICAgICAgY29tcGlsYXRpb24uZGVz
Y3JpcHRpb25zLmVhY2ggeworICAgICAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gfAorICAgICAg
ICAgICAgICAgIG5leHQgaWYgZGVzY3JpcHRpb24uZGVzY3JpcHRpb24gPX4gL0NvdW50RXhlY3V0
aW9uXCgvCisgICAgICAgICAgICAgICAgaWYgZGVzY3JpcHRpb24ub3JpZ2luLmVtcHR5PworICAg
ICAgICAgICAgICAgICAgICBjb3VudHNTdHJpbmcgPSAiIgorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgY291bnRzU3RyaW5nID0gJGVuZ2luZXMubWFwIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHwgZW5naW5lIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uLm9yaWdpblstMV0uZXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAgICAgICAgICAg
ICAgICAgICB9LmpvaW4oIi8iKQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmVhY2ggeworICAgICAgICAgICAg
ICAgICAgICB8IGxpbmUgfAorICAgICAgICAgICAgICAgICAgICBwdXRzKGNlbnRlcihjb3VudHNT
dHJpbmcsIGNvdW50Q29scykgKyAiICIgKyBsaW5lLmNob21wKQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBleGVjdXRlQ29t
bWFuZChjb21tYW5kLCBhcmdzKQorICAgIGlmIENvbW1hbmRzLm1ldGhvZHMuZmluZF9pbmRleCgi
Q01EXyN7Y29tbWFuZH0iKQorICAgICAgICBDb21tYW5kcy5zZW5kKCJDTURfI3tjb21tYW5kfSIs
ICphcmdzKQorICAgIGVsc2UKKyAgICAgICAgcHV0cyAiSW52YWxpZCBjb21tYW5kOiAje2NvbW1h
bmR9IgorICAgIGVuZAorZW5kCisKK2V4ZWN1dGVDb21tYW5kKCJzdW1tYXJ5IiwgW10pCisKK3do
aWxlIGNvbW1hbmRMaW5lID0gUmVhZGxpbmUucmVhZGxpbmUoIj4gIiwgdHJ1ZSkKKyAgICBjb21t
YW5kQXJyYXkgPSBjb21tYW5kTGluZS5zcGxpdAorICAgIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmRB
cnJheVswXSwgY29tbWFuZEFycmF5WzEuLi0xXSkKK2VuZAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9TY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZXhlY3V0YWJsZQogICArICoKCg==
</data>
<flag name="commit-queue"
          id="193137"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177136</attachid>
            <date>2012-12-02 01:33:35 -0800</date>
            <delta_ts>2012-12-02 14:13:26 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>132162</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzOSBA
QAorMjAxMi0xMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHByb2ZpbGluZyB0byBKU0MsIGNh
bGxlZCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBUaGlzIHdpbGwgY291bnQKKyAg
ICAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgYnl0ZWNvZGUgZXhlY3V0ZXMgaW4gdmFy
aW91cyBlbmdpbmVzLCBhbmQgd2lsbCByZWNvcmQgYm90aAorICAgICAgICB0aGUgY291bnRzIGFu
ZCBhbGwgZGlzYXNzZW1ibHkgYW5kIGJ5dGVjb2RlIGR1bXBzLCBpbnRvIGEgZGF0YWJhc2UgdGhh
dCBjYW4gYmUgYXQgYW55CisgICAgICAgIHRpbWUgdHVybmVkIGludG8gZWl0aGVyIGEgSlMgb2Jq
ZWN0IHVzaW5nIGFueSBnbG9iYWwgb2JqZWN0IG9yIGdsb2JhbCBkYXRhIG9mIHlvdXIKKyAgICAg
ICAgY2hvaWNlLCBvciBjYW4gYmUgdHVybmVkIGludG8gYSBKU09OIHN0cmluZywgb3Igc2F2ZWQg
dG8gYSBmaWxlLgorICAgICAgICAKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHVzZSBvZiB0
aGlzIGlzIHRoZSBuZXcgJy1wIDxmaWxlPicgZmxhZyB0byB0aGUganNjIGNvbW1hbmQtbGluZS4K
KyAgICAgICAgCisgICAgICAgIFRoZSBQQlAgaXMgYWx3YXlzIGNvbXBpbGVkIGluIGFuZCBub3Jt
YWxseSBpbmN1cnMgbm8gZXhlY3V0aW9uIHRpbWUgY29zdCwgYnV0IGlzIG9ubHkKKyAgICAgICAg
YWN0aXZhdGVkIHdoZW4geW91IGNyZWF0ZSBhIFBCUDo6RGF0YWJhc2UgYW5kIGluc3RhbGwgaXQg
aW4KKyAgICAgICAgSlNHbG9iYWxEYXRhOjptX3BlckJ5dGVjb2RlUHJvZmlsZXIuIEZyb20gdGhh
dCBwb2ludCBvbiwgYWxsIGNvZGUgYmxvY2tzIHdpbGwgYmUKKyAgICAgICAgY29tcGlsZWQgYWxv
bmcgd2l0aCBkaXNhc3NlbWJseSBhbmQgYnl0ZWNvZGUgZHVtcHMgc3RvcmVkIGludG8gdGhlIFBC
UDo6RGF0YWJhc2UsIGFuZAorICAgICAgICBhbGwgY29kZSBibG9ja3Mgd2lsbCBoYXZlIGV4ZWN1
dGlvbiBjb3VudHMsIHdoaWNoIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuCisgICAg
ICAgIFRoZSBkYXRhYmFzZSB3aWxsIGNvbnRpbnVlIHRvIGtlZXAgaW5mb3JtYXRpb24gYWJvdXQg
Y29kZSBibG9ja3MgYWxpdmUgZXZlbiBhZnRlciB0aGV5CisgICAgICAgIGFyZSBvdGhlcndpc2Ug
R0MnZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY3VycmVudGx5IHN0aWxsIGhhcyBzb21lIGds
aXRjaGVzLCBsaWtlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBjb3VudHMgZXhlY3V0aW9ucworICAg
ICAgICBpbiB0aGUgSklUcy4gRG9pbmcgZXhlY3V0aW9uIGNvdW50aW5nIGluIHRoZSBMTEludCBt
aWdodCByZXF1aXJlIGEgYml0IG9mIGEgcmV0aGluaworICAgICAgICBhYm91dCBob3cgdGhlIGNv
dW50aW5nIGlzIGV4cHJlc3NlZCAtIGN1cnJlbnRseSBpdCBpcyBpbXBsaWNpdCBpbiBieXRlY29k
ZSwgc28gdGhlcmUKKyAgICAgICAgaXMgbm8gZWFzeSB3YXkgdG8gInR1cm4gaXQgb24iIGluIHRo
ZSBMTEludC4gQWxzbywgcmlnaHQgbm93IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uCisgICAgICAg
IHJlY29yZGVkIGFib3V0IE9TUiBleGl0cyBvciBvdXQtb2YtbGluZSBzdHVicy4gQnV0LCBldmVu
IHNvLCBpdCdzIHF1aXRlIGNvb2wsIGFuZAorICAgICAgICBnaXZlcyB5b3UgYSBwZWVrIGludG8g
d2hhdCBKU0MgaXMgZG9pbmcgdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGJlIHBvc3NpYmxlLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmJhc2VsaW5l
Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oOgorICAgICAgICAoSW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wKToKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpyZXBvcnRUb1Byb2Zp
bGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpEaXNhc3NlbWJsZXI6OmNyZWF0ZUR1bXBMaXN0KToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNz
ZW1ibGVyLmg6CisgICAgICAgIChEaXNhc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkRp
c2Fzc2VtYmxlcjo6RHVtcGVkT3A6OkR1bXBlZE9wKToKKyAgICAgICAgKER1bXBlZE9wKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFw
aCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoTm9k
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRXhlY3V0aW9uQ291bnRlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6ZXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OkpJVCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxl
ci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcCk6CisgICAgICAgIChK
U0M6OkpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcik6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6OmR1bXBIZWFkZXIpOgorICAgICAgICAoSlND
OjpKSVREaXNhc3NlbWJsZXI6OmZpcnN0U2xvd0xhYmVsKToKKyAgICAgICAgKEpTQzo6SklURGlz
YXNzZW1ibGVyOjpkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SklU
RGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SklURGlz
YXNzZW1ibGVyOjpyZXBvcnRJbnN0cnVjdGlvbnMpOgorICAgICAgICAqIGppdC9KSVREaXNhc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpJVERpc2Fzc2VtYmxlcik6CisgICAgICAgIChEdW1wZWRPcCk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGluZSk6
CisgICAgICAgIChDb21tYW5kTGluZSk6CisgICAgICAgIChwcmludFVzYWdlU3RhdGVtZW50KToK
KyAgICAgICAgKENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChqc2NtYWlu
KToKKyAgICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZS5jcHA6IEFkZGVkLgorICAgICAgICAo
UEJQKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZTo6dG9KUyk6CisgICAgICAgICogcHJv
ZmlsZXIvUEJQQnl0ZWNvZGUuaDogQWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoQnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2RlOjpCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlBCUDo6Qnl0ZWNvZGU6OmJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpQQlA6
OkJ5dGVjb2RlOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OlBCUDo6Z2V0Qnl0ZWNvZGVJ
bmRleEZvckJ5dGVjb2RlKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjpCeXRl
Y29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6fkJ5dGVjb2Rlcyk6CisgICAg
ICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjppbmRleEZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAg
ICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6Zm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6
OlBCUDo6Qnl0ZWNvZGVzOjpkdW1wKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OnRv
SlMpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oOiBBZGRlZC4KKyAgICAgICAg
KFBCUCk6CisgICAgICAgIChCeXRlY29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rl
czo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OmlkKToKKyAgICAgICAg
KEpTQzo6UEJQOjpCeXRlY29kZXM6Omhhc2gpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rl
czo6c2l6ZSk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjphdCk6CisgICAgICAgICog
cHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAg
ICAgIChKU0M6OlBCUDo6Q29tcGlsYXRpb246OkNvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6
UEJQOjpDb21waWxhdGlvbjo6fkNvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21w
aWxhdGlvbjo6YWRkRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGF0aW9u
OjpleGVjdXRpb25Db3VudGVyRm9yKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxhdGlvbjo6
dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChQQlApOgorICAgICAgICAoQ29tcGlsYXRpb24pOgorICAgICAgICAoSlNDOjpQQlA6OkNv
bXBpbGF0aW9uOjpieXRlY29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGF0aW9uOjpr
aW5kKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6Cisg
ICAgICAgIChXVEYpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRl
Y29kZTo6Q29tcGlsZWRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRl
Y29kZTo6fkNvbXBpbGVkQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGVkQnl0
ZWNvZGU6OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaDog
QWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoQ29tcGlsZWRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRlY29kZTo6b3JpZ2luU3RhY2spOgorICAgICAgICAo
SlNDOjpQQlA6OkNvbXBpbGVkQnl0ZWNvZGU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwcm9m
aWxlci9QQlBEYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEpT
Qzo6UEJQOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNl
Ojp+RGF0YWJhc2UpOgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjphZGRCeXRlY29kZXMp
OgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAg
ICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbik6CisgICAgICAgIChK
U0M6OlBCUDo6RGF0YWJhc2U6Om5ld0NvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpE
YXRhYmFzZTo6dG9KUyk6CisgICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OnRvSlNPTik6Cisg
ICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OnNhdmUpOgorICAgICAgICAqIHByb2ZpbGVyL1BC
UERhdGFiYXNlLmg6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKERhdGFiYXNlKToK
KyAgICAgICAgKiBwcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmg6IEFkZGVkLgorICAgICAg
ICAoUEJQKToKKyAgICAgICAgKEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpQQlA6
OkV4ZWN1dGlvbkNvdW50ZXI6OkV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpQQlA6
OkV4ZWN1dGlvbkNvdW50ZXI6OmFkZHJlc3MpOgorICAgICAgICAoSlNDOjpQQlA6OkV4ZWN1dGlv
bkNvdW50ZXI6OmNvdW50KToKKyAgICAgICAgKiBwcm9maWxlci9QQlBPcmlnaW4uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpPcmlnaW4pOgor
ICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6ZHVtcCk6CisgICAgICAgIChKU0M6OlBCUDo6T3Jp
Z2luOjp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBPcmlnaW4uaDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoUEJQKToKKyAgICAgICAgKE9yaWdpbik6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luOjpPcmlnaW4pOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6b3Bl
cmF0b3IhKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46OmJ5dGVjb2Rlcyk6CisgICAgICAg
IChKU0M6OlBCUDo6T3JpZ2luOjpieXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW46Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQ
OjpPcmlnaW46OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5IYXNoOjplcXVhbCk6
CisgICAgICAgIChPcmlnaW5IYXNoKToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcHJvZmls
ZXIvUEJQT3JpZ2luU3RhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luU3RhY2s6Ok9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5TdGFjazo6fk9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFj
azo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6Omhhc2gpOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6
dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoUEJQKToKKyAgICAgICAgKE9yaWdpblN0YWNrKToKKyAgICAg
ICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2spOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0
YWNrOjpzaXplKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6ZnJvbUJvdHRvbSk6
CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OmZyb21Ub3ApOgorICAgICAgICAoSlND
OjpQQlA6Ok9yaWdpblN0YWNrOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luU3RhY2tIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmln
aW5TdGFja0hhc2g6OmVxdWFsKToKKyAgICAgICAgKE9yaWdpblN0YWNrSGFzaCk6CisgICAgICAg
IChXVEYpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4
ZWN1dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6fkpTR2xv
YmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0Mp
OgorCiAyMDEyLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29kZUJsb2NrIHNob3VsZCBiZSBhYmxlIHRvIGR1bXAgYnl0ZWNvZGUgdG8gc29tZXRoaW5n
IG90aGVyIHRoYW4gV1RGOjpkYXRhRmlsZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMjMgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwCiAgICAgcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwCiAKKyAgICBwcm9maWxlci9QQlBCeXRlY29kZS5jcHAK
KyAgICBwcm9maWxlci9QQlBCeXRlY29kZS5oCisgICAgcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNw
cAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRp
b24uY3BwCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAorICAgIHByb2ZpbGVyL1BCUENv
bXBpbGF0aW9uS2luZC5jcHAKKyAgICBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAorICAg
IHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwCisgICAgcHJvZmlsZXIvUEJQQ29tcGls
ZWRCeXRlY29kZS5oCisgICAgcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCisgICAgcHJvZmlsZXIv
UEJQRGF0YWJhc2UuaAorICAgIHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAorICAgIHBy
b2ZpbGVyL1BCUE9yaWdpbi5jcHAKKyAgICBwcm9maWxlci9QQlBPcmlnaW4uaAorICAgIHByb2Zp
bGVyL1BCUE9yaWdpblN0YWNrLmNwcAorICAgIHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmgKICAg
ICBwcm9maWxlci9Qcm9maWxlLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3Bw
CiAgICAgcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0
NzEsMjMgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL0NhbGxJZGVudGlmaWVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBCeXRlY29kZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBC
eXRlY29kZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVz
LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHAgXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBPcmlnaW4uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9y
aWdpblN0YWNrLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdp
blN0YWNrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miwy
MyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwIFwKICAgICBwYXJz
ZXIvUGFyc2VyLmNwcCBcCiAgICAgcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIFwKKyAg
ICBwcm9maWxlci9QQlBCeXRlY29kZS5jcHAgXAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmgg
XAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAgXAorICAgIHByb2ZpbGVyL1BCUEJ5dGVj
b2Rlcy5oIFwKKyAgICBwcm9maWxlci9QQlBDb21waWxhdGlvbi5jcHAgXAorICAgIHByb2ZpbGVy
L1BCUENvbXBpbGF0aW9uLmggXAorICAgIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHAg
XAorICAgIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oIFwKKyAgICBwcm9maWxlci9QQlBD
b21waWxlZEJ5dGVjb2RlLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5o
IFwKKyAgICBwcm9maWxlci9QQlBEYXRhYmFzZS5jcHAgXAorICAgIHByb2ZpbGVyL1BCUERhdGFi
YXNlLmggXAorICAgIHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaCBcCisgICAgcHJvZmls
ZXIvUEJQT3JpZ2luLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQT3JpZ2luLmggXAorICAgIHByb2Zp
bGVyL1BCUE9yaWdpblN0YWNrLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaCBc
CiAgICAgcHJvZmlsZXIvUHJvZmlsZS5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0
b3IuY3BwIFwKICAgICBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgcHVibGljOgogICAgICAgICA6
IG1faW50ZXJhY3RpdmUoZmFsc2UpCiAgICAgICAgICwgbV9kdW1wKGZhbHNlKQogICAgICAgICAs
IG1fZXhpdENvZGUoZmFsc2UpCisgICAgICAgICwgbV9wcm9maWxlKGZhbHNlKQogICAgIHsKICAg
ICAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAgICAgfQpAQCAtMTM1LDYgKzEzNiw4
IEBAIHB1YmxpYzoKICAgICBib29sIG1fZXhpdENvZGU7CiAgICAgVmVjdG9yPFNjcmlwdD4gbV9z
Y3JpcHRzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOworICAgIGJvb2wgbV9wcm9m
aWxlOworICAgIFN0cmluZyBtX3Byb2ZpbGVyT3V0cHV0OwogCiAgICAgdm9pZCBwYXJzZUFyZ3Vt
ZW50cyhpbnQsIGNoYXIqKik7CiB9OwpAQCAtNjQ5LDYgKzY1Miw3IEBAIHN0YXRpYyBOT19SRVRV
Uk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW4KICNpZiBIQVZFKFNJR05BTF9IKQogICAgIGZwcmlu
dGYoc3RkZXJyLCAiICAtcyAgICAgICAgIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4
aXQgb24gYSBjcmFzaCAoVW5peCBwbGF0Zm9ybXMgb25seSlcbiIpOwogI2VuZGlmCisgICAgZnBy
aW50ZihzdGRlcnIsICIgIC1wIDxmaWxlPiAgT3V0cHV0cyBwcm9maWxpbmcgZGF0YSB0byBhIGZp
bGVcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAteCAgICAgICAgIE91dHB1dCBleGl0IGNv
ZGUgYmVmb3JlIHRlcm1pbmF0aW5nXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAg
ICAgZnByaW50ZihzdGRlcnIsICIgIC0tb3B0aW9ucyAgICAgICAgICAgICAgICAgIER1bXBzIGFs
bCBKU0MgVk0gb3B0aW9ucyBhbmQgZXhpdHNcbiIpOwpAQCAtNjg3LDYgKzY5MSwxMyBAQCB2b2lk
IENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnCiAgICAgICAgICAgICBtX2R1bXAg
PSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFz
dHJjbXAoYXJnLCAiLXAiKSkgeworICAgICAgICAgICAgaWYgKCsraSA9PSBhcmdjKQorICAgICAg
ICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIG1fcHJvZmlsZSA9
IHRydWU7CisgICAgICAgICAgICBtX3Byb2ZpbGVyT3V0cHV0ID0gYXJndltpXTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1zIikp
IHsKICNpZiBIQVZFKFNJR05BTF9IKQogICAgICAgICAgICAgc2lnbmFsKFNJR0lMTCwgX2V4aXQp
OwpAQCAtNzUwLDYgKzc2MSw5IEBAIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxEYXRhLmdldCgpKTsKICAgICBpbnQgcmVzdWx0
OwogCisgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlKQorICAgICAgICBnbG9iYWxEYXRhLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIgPSBhZG9wdFB0cihuZXcgUEJQOjpEYXRhYmFzZSgqZ2xvYmFsRGF0
YSkpOworICAgIAogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0
OjpjcmVhdGUoKmdsb2JhbERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpnbG9i
YWxEYXRhLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgIGJvb2wgc3VjY2Vz
cyA9IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlv
bnMubV9kdW1wKTsKICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCkBA
IC03NTksNiArNzczLDExIEBAIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAog
ICAgIGlmIChvcHRpb25zLm1fZXhpdENvZGUpCiAgICAgICAgIHByaW50ZigianNjIGV4aXRpbmcg
JWRcbiIsIHJlc3VsdCk7CisgICAgCisgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlKSB7CisgICAg
ICAgIGlmICghZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5zYXZlKG9wdGlvbnMu
bV9wcm9maWxlck91dHB1dC51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiY291bGQgbm90IHNhdmUgcHJvZmlsZXIgb3V0cHV0LlxuIik7CisgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUyNiw2ICsxNTI2LDc0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHBy
b2ZpbGVyXFBCUEJ5dGVjb2RlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQnl0ZWNvZGUuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQnl0
ZWNvZGVzLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5ccHJvZmlsZXJcUEJQQnl0ZWNvZGVzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUENvbXBpbGF0aW9uLmNw
cCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cHJvZmlsZXJcUEJQQ29tcGlsYXRpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQ29tcGlsYXRpb25LaW5kLmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJv
ZmlsZXJcUEJQQ29tcGlsYXRpb25LaW5kLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxw
cm9maWxlclxQQlBDb21waWxlZEJ5dGVjb2RlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUERhdGFiYXNlLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmls
ZXJcUEJQRGF0YWJhc2UuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQRXhlY3V0aW9uQ291bnRlci5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBP
cmlnaW4uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxwcm9maWxlclxQQlBPcmlnaW4uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQT3JpZ2luU3RhY2suY3BwIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9m
aWxlclxQQlBPcmlnaW5TdGFjay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQcm9maWxlLmNwcCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM2MzE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMjcgQEAKIAkJMEZGNDI3NzEx
NTkyNzVENTAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZG
IC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovOyB9OwogCQkwRkY0Mjc3MjE1OTI3NUQ4MDA0
Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkYxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVH
bG9iYWxTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkY3MTY4QzE1QTNCMjM1MDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcxNjhBMTVBM0Iy
MzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcyOUE1MTY2QUQzNTEwMDBGNUJBMyAvKiBQQlBC
eXRlY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGNzI5OTMxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QUQxNjZBRDM1QzAwMEY1
QkEzIC8qIFBCUEJ5dGVjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5jcHAg
Ki87IH07CisJCTBGRjcyOUFFMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTQxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5jcHAgKi87IH07CisJCTBGRjcyOUFGMTY2QUQz
NUMwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29t
cGlsYXRpb24uY3BwICovOyB9OworCQkwRkY3MjlCMDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29t
cGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRjcyOTk4MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuY3Bw
ICovOyB9OworCQkwRkY3MjlCMTE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3
Mjk5QTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAgKi87IH07CisJ
CTBGRjcyOUIyMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVC
QTMgLyogUEJQRGF0YWJhc2UuY3BwICovOyB9OworCQkwRkY3MjlCMzE2NkFEMzVDMDAwRjVCQTMg
LyogUEJQT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwICovOyB9Owor
CQkwRkY3MjlCNDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTExNjZBRDM0NzAw
MEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjUxNjZBRDM1QzAw
MEY1QkEzIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTU3NDJGNjMwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwICovOyB9
OworCQkwRkY3MjlCNjE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NDBFMUM0
RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgKi87IH07CisJCTBGRjcyOUI3MTY2
QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODM1NDBEQTQzQjQ0MDBCQzgzRjMgLyogUHJvZmls
ZU5vZGUuY3BwICovOyB9OworCQkwRkY3MjlCODE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgz
MkUwREE0MkNBRDAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjkxNjZB
RDM2MDAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVj
b2Rlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGRjcyOUJBMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTcxNjZBRDM0NzAwMEY1
QkEzIC8qIFBCUENvbXBpbGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0
aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGNzI5OTkxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcyOUJDMTY2QUQz
NjAwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5QjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
Q29tcGlsZWRCeXRlY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OUQxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUEV4
ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBFeGVjdXRpb25Db3VudGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5
QkYxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTAxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9y
aWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGRjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTIxNjZBRDM0NzAwMEY1
QkEzIC8qIFBCUE9yaWdpblN0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZGOTIyRDQxNEY0NkI0MTAwNDFBMjRFIC8qIExMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLzsgfTsKIAkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRCMTRF
RjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi87IH07CiAJCTBGRkZDOTU4MTRFRjkw
QTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1
MSwxMSArNTcyLDcgQEAKIAkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5n
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMw
M0ZFODBFNkE3MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLzsgfTsKIAkJOTMzNUYy
NEQxMkU2NzY1QjAwMkI1NTUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzNDVBODcxMkQ4MzhDNDAw
MzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwICovOyB9OwogCQk5NTM0QUFGQjBF
NUI3QTk2MDBCOEE0NUIgLyogSlNQcm9maWxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MkM2M0FDMEU0Nzc3RDYwMEMxMzkzNiAvKiBK
U1Byb2ZpbGVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTk1NzQyRjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NzQyRjYzMEREMTFG
NUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLzsgfTsKLQkJOTVBQjgzNDIwREE0MzIyNTAwQkM4
M0YzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1QUI4MzJFMERBNDJDQUQwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgKi87IH07
Ci0JCTk1QUI4MzU2MERBNDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODM1NDBEQTQzQjQ0MDBC
QzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwICovOyB9OwotCQk5NUNENDU3NjBFMUM0RkREMDA4NTM1
OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVy
YXRvci5jcHAgKi87IH07Ci0JCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAv
KiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1RTNC
QzA1MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFM0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8q
IENhbGxJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1OTg4
QkE5MEU0NzdCRUMwMEQyOEQ0RCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgKi87IH07CiAJCTk2
MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyog
TGFiZWxTY29wZS5oICovOyB9OwpAQCAtMTA3OSw2ICsxMDk2LDIzIEBACiAJCTBGRjQyNzZFMTU5
Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUds
b2JhbFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xv
YmFsU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjcxNjhBMTVBM0Iy
MzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkY3Mjk5MjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQnl0ZWNvZGUuY3BwOyBwYXRoID0gcHJvZmlsZXIv
UEJQQnl0ZWNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5MzE2
NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUEJQQnl0ZWNvZGUuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
QlBCeXRlY29kZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQ
Qnl0ZWNvZGVzLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk1MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRl
Y29kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQnl0ZWNvZGVzLmg7
IHBhdGggPSBwcm9maWxlci9QQlBCeXRlY29kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uLmNwcDsgcGF0
aCA9IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGNzI5OTcxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uLmg7IHBhdGggPSBwcm9m
aWxlci9QQlBDb21waWxhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3
Mjk5ODE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uS2luZC5jcHA7IHBhdGgg
PSBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uS2luZC5oOyBw
YXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRjcyOTlBMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUENvbXBpbGVkQnl0
ZWNvZGUuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBD
b21waWxlZEJ5dGVjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUENv
bXBpbGVkQnl0ZWNvZGUuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8q
IFBCUERhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBC
UERhdGFiYXNlLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUERhdGFiYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERhdGFi
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUERhdGFiYXNlLmg7IHBh
dGggPSBwcm9maWxlci9QQlBEYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291bnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBFeGVjdXRpb25Db3VudGVyLmg7IHBhdGgg
PSBwcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQT3JpZ2luLmNwcDsgcGF0aCA9IHByb2Zp
bGVyL1BCUE9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOUEw
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUEJQT3JpZ2luLmg7IHBhdGggPSBwcm9maWxlci9QQlBPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9y
aWdpblN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUE9y
aWdpblN0YWNrLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9y
aWdpblN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUE9yaWdpblN0
YWNrLmg7IHBhdGggPSBwcm9maWxlci9QQlBPcmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
Qzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUxNiw2ICsyNTUwLDIzIEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTk1RTNCQzA0MEUxQUU2ODIwMEIyRDFD
MSAvKiBDYWxsSWRlbnRpZmllci5oICovLAorCQkJCTBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAv
KiBQQlBCeXRlY29kZS5jcHAgKi8sCisJCQkJMEZGNzI5OTMxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UEJ5dGVjb2RlLmggKi8sCisJCQkJMEZGNzI5OTQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVj
b2Rlcy5jcHAgKi8sCisJCQkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rl
cy5oICovLAorCQkJCTBGRjcyOTk2MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5j
cHAgKi8sCisJCQkJMEZGNzI5OTcxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmgg
Ki8sCisJCQkJMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5j
cHAgKi8sCisJCQkJMEZGNzI5OTkxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2lu
ZC5oICovLAorCQkJCTBGRjcyOTlBMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVj
b2RlLmNwcCAqLywKKwkJCQkwRkY3Mjk5QjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsZWRC
eXRlY29kZS5oICovLAorCQkJCTBGRjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBEYXRhYmFz
ZS5jcHAgKi8sCisJCQkJMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmgg
Ki8sCisJCQkJMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50ZXIu
aCAqLywKKwkJCQkwRkY3Mjk5RjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luLmNwcCAqLywK
KwkJCQkwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luLmggKi8sCisJCQkJMEZG
NzI5QTExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmNwcCAqLywKKwkJCQkwRkY3
MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suaCAqLywKIAkJCQk5NTc0MkY2
MzBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgKi8sCiAJCQkJOTU3NDJGNjQwREQxMUY1
QTAwMDkxN0ZCIC8qIFByb2ZpbGUuaCAqLywKIAkJCQk5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUg
LyogUHJvZmlsZUdlbmVyYXRvci5jcHAgKi8sCkBAIC0zMDc3LDYgKzMxMjgsMTUgQEAKIAkJCQkw
RkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hh
c2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2Rl
QmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QTUxNjZBRDM1MTAw
MEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCOTE2NkFE
MzYwMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlC
QTE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRjcyOUJCMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRjcyOUJDMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVj
b2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCRDE2NkFEMzYwMDAwRjVCQTMgLyogUEJQ
RGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAv
KiBQQlBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCRjE2NkFE
MzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlDMDE2
NkFEMzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzUz
NCwxMCArMzU5NCw2IEBACiAJCQkJMTQ4RjIxQkMxMDdFQzU0RDAwNDJFQzJDIC8qIFBhcnNlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2Vy
QXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFODYxNDFGM0ZGMTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1NzQyRjY1MEREMTFGNUEw
MDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1Q0Q0NTc2MEUxQzRG
REQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1
QUI4MzU2MERBNDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk5NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNzEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVy
dHlOYW1lQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUw
NDQ2IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2NjUsNiArMzcyMSwx
OCBAQAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29kZU9yaWdpbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlBRDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQnl0
ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8q
IFBCUEJ5dGVjb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlBRjE2NkFEMzVDMDAw
RjVCQTMgLyogUEJQQ29tcGlsYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjAx
NjZBRDM1QzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkY3MjlCMTE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMjE2NkFEMzVDMDAwRjVCQTMgLyogUEJQRGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjMxNjZBRDM1QzAwMEY1QkEzIC8qIFBC
UE9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNDE2NkFEMzVDMDAwRjVCQTMg
LyogUEJQT3JpZ2luU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjUxNjZBRDM1
QzAwMEY1QkEzIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjYxNjZB
RDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZGNzI5QjcxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGRjcyOUI4MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxNyw2ICsxOTE3LDkgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogCiBDb2RlQmxvY2s6On5Db2RlQmxv
Y2soKQogeworICAgIGlmIChtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKKyAg
ICAgICAgbV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5vdGlmeURlc3RydWN0
aW9uKHRoaXMpOworICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIFJlbW92ZSBteXNl
bGYgZnJvbSB0aGUgc2V0IG9mIERGRyBjb2RlIGJsb2Nrcy4gTm90ZSB0aGF0IEkgbWF5IG5vdCBi
ZSBpbiB0aGlzIHNldAogICAgIC8vIChiZWNhdXNlIEknbSBub3QgYSBERkcgY29kZSBibG9jayks
IGluIHdoaWNoIGNhc2UgdGhpcyBpcyBhIG5vLW9wIGFueXdheS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMTYwLDYgKzE2MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgQ29kZUJsb2NrKiBi
YXNlbGluZVZlcnNpb24oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRv
ciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTcz
LDYgKzc0LDExIEBAIENvZGVCbG9ja0hhc2ggSW5saW5lQ2FsbEZyYW1lOjpoYXNoKCkgY28KICAg
ICByZXR1cm4gZXhlY3V0YWJsZS0+aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7CiB9CiAK
K0NvZGVCbG9jayogSW5saW5lQ2FsbEZyYW1lOjpiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlLmdldCgp
KS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOworfQorCiB2b2lk
IElubGluZUNhbGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91
dC5wcmludCgiIyIsIGhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRhYmxlLmdldCgpKSwg
IiwgYmMjIiwgY2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHNwZWNpYWxpemF0aW9uS2luZCgp
LCAiPiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDggQEAgc3RydWN0IElu
bGluZUNhbGxGcmFtZSB7CiAgICAgCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7CiAg
ICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0OworICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzYzMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzI0LDYgKzE3MjQsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1
dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgSW5saW5lU3RhcnQ6
CiAgICAgY2FzZSBOb3A6CisgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICAgICAgbm9kZS5z
ZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA4LDYgKzIxMDgsMTIgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBtX2N1cnJlbnRJbmRleDsKICAgICAgICAg
bV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb247IC8vIFNvbWUgbWV0aG9k
cyB3YW50IHRvIHVzZSB0aGlzLCBhbmQgd2UnZCByYXRoZXIgbm90IHRocmVhZCBpdCB0aHJvdWdo
IGNhbGxzLgogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICAgICAgCisgICAgICAgIGlm
IChtX2dyYXBoLm1fY29tcGlsYXRpb24pIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQ291bnRF
eGVjdXRpb24sIE9wSW5mbyhtX2dyYXBoLm1fY29tcGlsYXRpb24tPmV4ZWN1dGlvbkNvdW50ZXJG
b3IoCisgICAgICAgICAgICAgICAgUEJQOjpPcmlnaW5TdGFjaygqbV9nbG9iYWxEYXRhLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIsIG1fY29kZUJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpKSkpKTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogCiAgICAg
ICAgIC8vID09PSBGdW5jdGlvbiBlbnRyeSBvcGNvZGVzID09PQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTM2MzE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MiwxMCArNDIsNTMgQEAgRGlzYXNzZW1ibGVyOjpEaXNhc3NlbWJsZXIoR3Jh
cGgmIGdyYXBoKQogCiB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogewotICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLmNvbXB1
dGVJZk5lY2Vzc2FyeShtX2dyYXBoKTsKKyAgICBWZWN0b3I8RHVtcGVkT3A+IG9wcyA9IGNyZWF0
ZUR1bXBMaXN0KGxpbmtCdWZmZXIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcHMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChvcHNbaV0udGV4dCk7Cit9CisKK3ZvaWQg
RGlzYXNzZW1ibGVyOjpkdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgZHVtcChX
VEY6OmRhdGFGaWxlKCksIGxpbmtCdWZmZXIpOworfQorCit2b2lkIERpc2Fzc2VtYmxlcjo6cmVw
b3J0VG9Qcm9maWxlcihQQlA6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiwgTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKK3sKKyAgICBWZWN0b3I8RHVtcGVkT3A+IG9wcyA9IGNyZWF0ZUR1bXBMaXN0
KGxpbmtCdWZmZXIpOwogICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgUEJQOjpPcmlnaW5TdGFjayBzdGFjazsKKyAgICAgICAgCisg
ICAgICAgIGlmIChvcHNbaV0uY29kZU9yaWdpbi5pc1NldCgpKQorICAgICAgICAgICAgc3RhY2sg
PSBQQlA6Ok9yaWdpblN0YWNrKCptX2dyYXBoLm1fZ2xvYmFsRGF0YS5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXIsIG1fZ3JhcGgubV9jb2RlQmxvY2ssIG9wc1tpXS5jb2RlT3JpZ2luKTsKKyAgICAgICAg
CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNv
ZGUoc3RhY2ssIG9wc1tpXS50ZXh0KSk7CisgICAgfQorfQorCit2b2lkIERpc2Fzc2VtYmxlcjo6
ZHVtcEhlYWRlcihQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQorewog
ICAgIG91dC5wcmludCgiR2VuZXJhdGVkIERGRyBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSwgIiwgaW5zdHJ1
Y3Rpb24gY291bnQgPSAiLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCks
ICI6XG4iKTsKICAgICBvdXQucHJpbnQoIiAgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtC
dWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIq
PihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAi
KTpcbiIpOworfQorCit2b2lkIERpc2Fzc2VtYmxlcjo6YXBwZW5kKFZlY3RvcjxEaXNhc3NlbWJs
ZXI6OkR1bXBlZE9wPiYgcmVzdWx0LCBTdHJpbmdQcmludFN0cmVhbSYgb3V0LCBDb2RlT3JpZ2lu
JiBwcmV2aW91c09yaWdpbikKK3sKKyAgICByZXN1bHQuYXBwZW5kKER1bXBlZE9wKHByZXZpb3Vz
T3JpZ2luLCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICBwcmV2aW91c09yaWdpbiA9IENvZGVPcmln
aW4oKTsKKyAgICBvdXQucmVzZXQoKTsKK30KKworVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVk
T3A+IERpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikK
K3sKKyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgVmVjdG9yPER1bXBlZE9wPiByZXN1
bHQ7CisgICAgCisgICAgQ29kZU9yaWdpbiBwcmV2aW91c09yaWdpbiA9IENvZGVPcmlnaW4oKTsK
KyAgICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0
LCBwcmV2aW91c09yaWdpbik7CisgICAgCisgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMuY29tcHV0
ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOwogICAgIAogICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIg
ICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVByZWZpeCA9ICIgICAgICAgICI7CkBA
IC01Nyw3ICsxMDAsOSBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0
CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZHVt
cERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZpb3Vz
TGFiZWwsIG1fbGFiZWxGb3JCbG9ja0luZGV4W2Jsb2NrSW5kZXhdLCBsYXN0Tm9kZUluZGV4KTsK
KyAgICAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAgICAgICAgIG1f
Z3JhcGguZHVtcEJsb2NrSGVhZGVyKG91dCwgcHJlZml4LCBibG9ja0luZGV4LCBHcmFwaDo6RHVt
cExpdmVQaGlzT25seSk7CisgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmln
aW4pOwogICAgICAgICBOb2RlSW5kZXggbGFzdE5vZGVJbmRleEZvckRpc2Fzc2VtYmx5ID0gYmxv
Y2stPmF0KDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgaWYgKCFtX2dyYXBoW2Jsb2NrLT5hdChpKV0ud2lsbEhhdmVD
b2RlR2VuT3JPU1IoKSAmJiAhT3B0aW9uczo6c2hvd0FsbERGR05vZGVzKCkpCkBAIC03NiwyMCAr
MTIxLDI1IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQKICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudExhYmVsID0gbV9lbmRPZk1haW5QYXRoOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgs
IGxpbmtCdWZmZXIsIHByZXZpb3VzTGFiZWwsIGN1cnJlbnRMYWJlbCwgbGFzdE5vZGVJbmRleEZv
ckRpc2Fzc2VtYmx5KTsKLSAgICAgICAgICAgIG1fZ3JhcGguZHVtcENvZGVPcmlnaW4ob3V0LCBw
cmVmaXgsIGxhc3ROb2RlSW5kZXgsIGJsb2NrLT5hdChpKSk7CisgICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKKyAgICAgICAgICAgIHByZXZpb3VzT3JpZ2lu
ID0gbV9ncmFwaFtibG9jay0+YXQoaSldLmNvZGVPcmlnaW47CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5kdW1wQ29kZU9yaWdpbihvdXQsIHByZWZpeCwgbGFzdE5vZGVJbmRleCwgYmxvY2stPmF0
KGkpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmln
aW4pOworICAgICAgICAgICAgICAgIHByZXZpb3VzT3JpZ2luID0gbV9ncmFwaFtibG9jay0+YXQo
aSldLmNvZGVPcmlnaW47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
b3V0LCBwcmVmaXgsIGJsb2NrLT5hdChpKSk7CiAgICAgICAgICAgICBsYXN0Tm9kZUluZGV4ID0g
YmxvY2stPmF0KGkpOwogICAgICAgICAgICAgbGFzdE5vZGVJbmRleEZvckRpc2Fzc2VtYmx5ID0g
YmxvY2stPmF0KGkpOwogICAgICAgICB9CiAgICAgfQogICAgIGR1bXBEaXNhc3NlbWJseShvdXQs
IGRpc2Fzc2VtYmx5UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2aW91c0xhYmVsLCBtX2VuZE9mTWFp
blBhdGgsIGxhc3ROb2RlSW5kZXgpOworICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNP
cmlnaW4pOwogICAgIG91dC5wcmludChwcmVmaXgsICIoRW5kIE9mIE1haW4gUGF0aClcbiIpOwor
ICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIGR1bXBEaXNhc3Nl
bWJseShvdXQsIGRpc2Fzc2VtYmx5UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2aW91c0xhYmVsLCBt
X2VuZE9mQ29kZSwgTm9Ob2RlKTsKLX0KLQotdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikKLXsKLSAgICBkdW1wKFdURjo6ZGF0YUZpbGUoKSwgbGlua0J1ZmZl
cik7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCYgcHJldmlvdXNMYWJlbCwgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGN1cnJlbnRMYWJlbCwgTm9kZUluZGV4IGNvbnRleHQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzNjMxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJM
aW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTY0LDggKzY1LDI0IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7CiAgICAgdm9pZCBkdW1w
KExpbmtCdWZmZXImKTsKKyAgICB2b2lkIHJlcG9ydFRvUHJvZmlsZXIoUEJQOjpDb21waWxhdGlv
biosIExpbmtCdWZmZXImKTsKICAgICAKIHByaXZhdGU6CisgICAgdm9pZCBkdW1wSGVhZGVyKFBy
aW50U3RyZWFtJiwgTGlua0J1ZmZlciYpOworICAgIAorICAgIHN0cnVjdCBEdW1wZWRPcCB7Cisg
ICAgICAgIER1bXBlZE9wKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ1N0cmluZyB0ZXh0KQorICAg
ICAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICAgICAsIHRleHQodGV4
dCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW47CisgICAgICAgIENTdHJpbmcgdGV4dDsKKyAgICB9OworICAgIHZvaWQgYXBwZW5k
KFZlY3RvcjxEdW1wZWRPcD4mLCBTdHJpbmdQcmludFN0cmVhbSYsIENvZGVPcmlnaW4mKTsKKyAg
ICBWZWN0b3I8RHVtcGVkT3A+IGNyZWF0ZUR1bXBMaXN0KExpbmtCdWZmZXImKTsKKyAgICAKICAg
ICB2b2lkIGR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCwg
TGlua0J1ZmZlciYsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCYgcHJldmlvdXNMYWJlbCwgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIGN1cnJlbnRMYWJlbCwgTm9kZUluZGV4IGNvbnRleHQpOwogICAgIAog
ICAgIEdyYXBoJiBtX2dyYXBoOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBkZmdPcE5hbWVzW10gPSB7CiBHcmFwaDo6R3JhcGgoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4
LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcykKICAgICA6IG1fZ2xv
YmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwg
bV9jb21waWxhdGlvbihnbG9iYWxEYXRhLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA/IGdsb2JhbERh
dGEubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5uZXdDb21waWxhdGlvbihjb2RlQmxvY2ssIFBCUDo6
REZHKSA6IDApCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2soY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
KQogICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgLCBtX29zckVudHJ5Qnl0ZWNvZGVJ
bmRleChvc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCkBAIC02MywxNSArNjQsMTUgQEAgc3RhdGljIHZv
aWQgcHJpbnRXaGl0ZVNwYWNlKFByaW50U3RyZWFtJgogICAgICAgICBvdXQucHJpbnQoIiAiKTsK
IH0KIAotdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
Y2hhciogcHJlZml4LCBOb2RlSW5kZXggcHJldk5vZGVJbmRleCwgTm9kZUluZGV4IG5vZGVJbmRl
eCkKK2Jvb2wgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNo
YXIqIHByZWZpeCwgTm9kZUluZGV4IHByZXZOb2RlSW5kZXgsIE5vZGVJbmRleCBub2RlSW5kZXgp
CiB7CiAgICAgaWYgKHByZXZOb2RlSW5kZXggPT0gTm9Ob2RlKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBOb2RlJiBjdXJyZW50Tm9kZSA9IGF0KG5v
ZGVJbmRleCk7CiAgICAgTm9kZSYgcHJldmlvdXNOb2RlID0gYXQocHJldk5vZGVJbmRleCk7CiAg
ICAgaWYgKHByZXZpb3VzTm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSA9PSBjdXJyZW50
Tm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgVmVjdG9yPENvZGVPcmlnaW4+IHByZXZpb3VzSW5s
aW5lU3RhY2sgPSBwcmV2aW91c05vZGUuY29kZU9yaWdpbi5pbmxpbmVTdGFjaygpOwogICAgIFZl
Y3RvcjxDb2RlT3JpZ2luPiBjdXJyZW50SW5saW5lU3RhY2sgPSBjdXJyZW50Tm9kZS5jb2RlT3Jp
Z2luLmlubGluZVN0YWNrKCk7CkBAIC04NCwxMSArODUsMTQgQEAgdm9pZCBHcmFwaDo6ZHVtcENv
ZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wg
aGFzUHJpbnRlZCA9IGZhbHNlOworICAgIAogICAgIC8vIFByaW50IHRoZSBwb3BzLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBpbmRleE9m
RGl2ZXJnZW5jZTspIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAgIHByaW50
V2hpdGVTcGFjZShvdXQsIGkgKiAyKTsKICAgICAgICAgb3V0LnByaW50KCI8LS0gIiwgKnByZXZp
b3VzSW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLCAiXG4iKTsKKyAgICAgICAgaGFzUHJp
bnRlZCA9IHRydWU7CiAgICAgfQogICAgIAogICAgIC8vIFByaW50IHRoZSBwdXNoZXMuCkBAIC05
Niw3ICsxMDAsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAog
ICAgICAgICBvdXQucHJpbnQocHJlZml4KTsKICAgICAgICAgcHJpbnRXaGl0ZVNwYWNlKG91dCwg
aSAqIDIpOwogICAgICAgICBvdXQucHJpbnQoIi0tPiAiLCAqY3VycmVudElubGluZVN0YWNrW2ld
LmlubGluZUNhbGxGcmFtZSwgIlxuIik7CisgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAg
IH0KKyAgICAKKyAgICByZXR1cm4gaGFzUHJpbnRlZDsKIH0KIAogaW50IEdyYXBoOjphbW91bnRP
Zk5vZGVXaGl0ZVNwYWNlKE5vZGUmIG5vZGUpCkBAIC0yNTQsNiArMjYxLDEzIEBAIHZvaWQgR3Jh
cGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgaWYgKGhhc1ByaW50ZWQp
CiAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CiAgICAgICAgIG91dC5wcmludChpbmRleGlu
Z1R5cGVUb1N0cmluZyhub2RlLmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIGhhc1ByaW50ZWQg
PSB0cnVlOworICAgIH0KKyAgICBpZiAobm9kZS5oYXNFeGVjdXRpb25Db3VudGVyKCkpIHsKKyAg
ICAgICAgaWYgKGhhc1ByaW50ZWQpCisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CisgICAg
ICAgIG91dC5wcmludChSYXdQb2ludGVyKG5vZGUuZXhlY3V0aW9uQ291bnRlcigpKSk7CisgICAg
ICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAob3AgPT0gSlNDb25zdGFudCkg
ewogICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgIiQiLCBub2RlLmNv
bnN0YW50TnVtYmVyKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAko
cmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTksOCArMTk5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHByaW50Tm9kZVdoaXRlU3BhY2UoUHJpbnRTdHJlYW0mLCBOb2RlJik7CiAKICAgICAvLyBE
dW1wIHRoZSBjb2RlIG9yaWdpbiBvZiB0aGUgZ2l2ZW4gbm9kZSBhcyBhIGRpZmYgZnJvbSB0aGUg
Y29kZSBvcmlnaW4gb2YgdGhlCi0gICAgLy8gcHJlY2VkaW5nIG5vZGUuCi0gICAgdm9pZCBkdW1w
Q29kZU9yaWdpbihQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZUluZGV4LCBO
b2RlSW5kZXgpOworICAgIC8vIHByZWNlZGluZyBub2RlLiBSZXR1cm5zIHRydWUgaWYgYW55dGhp
bmcgd2FzIHByaW50ZWQuCisgICAgYm9vbCBkdW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYsIGNv
bnN0IGNoYXIqIHByZWZpeCwgTm9kZUluZGV4LCBOb2RlSW5kZXgpOwogCiAgICAgQmxvY2tJbmRl
eCBibG9ja0luZGV4Rm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPEJsb2NrSW5kZXg+JiBibG9ja3Ms
IHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW4pOwogCkBAIC02NzEsNiArNjcxLDcgQEAgcHVibGljOgog
ICAgIAogICAgIEpTR2xvYmFsRGF0YSYgbV9nbG9iYWxEYXRhOwogICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7CisgICAgUEJQOjpDb21waWxhdGlvbiogbV9jb21waWxhdGlvbjsKICAgICBDb2Rl
QmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKIAogICAgIFZlY3RvcjwgT3duUHRyPEJhc2ljQmxvY2s+
ICwgOD4gbV9ibG9ja3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAg
SklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBtX2dyYXBoKGRmZykK
ICAgICAsIG1fY3VycmVudENvZGVPcmlnaW5JbmRleCgwKQogewotICAgIGlmIChzaG91bGRTaG93
RGlzYXNzZW1ibHkoKSkKKyAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkgfHwgbV9ncmFw
aC5tX2dsb2JhbERhdGEubV9wZXJCeXRlY29kZVByb2ZpbGVyKQogICAgICAgICBtX2Rpc2Fzc2Vt
YmxlciA9IGFkb3B0UHRyKG5ldyBEaXNhc3NlbWJsZXIoZGZnKSk7CiB9CiAKQEAgLTIzNiw4ICsy
MzYsMTAgQEAgYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZShKSVRDb2RlJiBlbnRyeQogICAgIGxp
bmsobGlua0J1ZmZlcik7CiAgICAgc3BlY3VsYXRpdmUubGlua09TUkVudHJpZXMobGlua0J1ZmZl
cik7CiAKLSAgICBpZiAobV9kaXNhc3NlbWJsZXIpCisgICAgaWYgKHNob3VsZFNob3dEaXNhc3Nl
bWJseSgpKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChsaW5rQnVmZmVyKTsKKyAgICBp
ZiAobV9ncmFwaC5tX2NvbXBpbGF0aW9uKQorICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0
VG9Qcm9maWxlcihtX2dyYXBoLm1fY29tcGlsYXRpb24sIGxpbmtCdWZmZXIpOwogCiAgICAgZW50
cnkgPSBKSVRDb2RlKAogICAgICAgICBsaW5rQnVmZmVyLmZpbmFsaXplQ29kZVdpdGhvdXREaXNh
c3NlbWJseSgpLApAQCAtMzI3LDggKzMyOSwxMCBAQCBib29sIEpJVENvbXBpbGVyOjpjb21waWxl
RnVuY3Rpb24oSklUQ29kCiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGxTdGFja0NoZWNrLCBjdGlf
c3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsQXJpdHlDaGVjaywgbV9jb2Rl
QmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0
aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwogICAgIAotICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKKyAg
ICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5k
dW1wKGxpbmtCdWZmZXIpOworICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pCisgICAgICAg
IG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fZ3JhcGgubV9jb21waWxhdGlvbiwg
bGlua0J1ZmZlcik7CiAKICAgICBlbnRyeVdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGFyaXR5Q2hlY2spOwogICAgIGVudHJ5ID0gSklUQ29kZSgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODU5LDYgKzg1OSwxNiBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIEFTU0VSVChoYXNBcmd1bWVudFBvc2l0aW9uU3RhcnQo
KSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNF
eGVjdXRpb25Db3VudGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IENvdW50RXhl
Y3V0aW9uOworICAgIH0KKyAgICAKKyAgICBQQlA6OkV4ZWN1dGlvbkNvdW50ZXIqIGV4ZWN1dGlv
bkNvdW50ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQQlA6OkV4ZWN1
dGlvbkNvdW50ZXIqPihtX29wSW5mbyk7CisgICAgfQogCiAgICAgYm9vbCBzaG91bGRHZW5lcmF0
ZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIFwKICAgICBtYWNybyhHYXJiYWdlVmFsdWUsIE5vZGVSZXN1bHRK
UyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgXAorICAgIC8qIENvdW50IGV4ZWN1dGlvbi4g
Ki9cCisgICAgbWFjcm8oQ291bnRFeGVjdXRpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBc
CiAgICAgLyogVGhpcyBpcyBhIHBzZXVkby10ZXJtaW5hbC4gSXQgbWVhbnMgdGhhdCBleGVjdXRp
b24gc2hvdWxkIGZhbGwgb3V0IG9mIERGRyBhdCAqL1wKICAgICAvKiB0aGlzIHBvaW50LCBidXQg
ZXhlY3V0aW9uIGRvZXMgY29udGludWUgaW4gdGhlIGJhc2ljIGJsb2NrIC0ganVzdCBpbiBhICov
XAogICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3MSw2ICs3
NzEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgSW5s
aW5lU3RhcnQ6CiAgICAgICAgIGNhc2UgTm9wOgorICAgICAgICBjYXNlIENvdW50RXhlY3V0aW9u
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMYXN0Tm9k
ZVR5cGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwNDQsNiArNTA0NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ291bnRFeGVjdXRpb246Cisg
ICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFic29s
dXRlQWRkcmVzcyhub2RlLmV4ZWN1dGlvbkNvdW50ZXIoKS0+YWRkcmVzcygpKSk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3Au
CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTM2
MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDkxMiw2ICs0OTEyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICBjYXNlIE5ld0Z1bmN0aW9uRXhwcmVzc2lvbjoK
ICAgICAgICAgY29tcGlsZU5ld0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlKTsKICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgQ291bnRFeGVjdXRpb246CisgICAgICAgIG1faml0LmFk
ZDY0KFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcyhub2Rl
LmV4ZWN1dGlvbkNvdW50ZXIoKS0+YWRkcmVzcygpKSk7CisgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBHYXJiYWdlVmFsdWU6CiAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQgdG8gdGhl
IHBvaW50IG9mIGNvZGUgZW1pc3Npb24gZm9yIGEgR2FyYmFnZVZhbHVlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgSklUOjpK
SVQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQgogICAgICwgbV9sYXN0UmVzdWx0Qnl0
ZWNvZGVSZWdpc3RlcihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKQogICAgICwgbV9q
dW1wVGFyZ2V0c1Bvc2l0aW9uKDApCiAjZW5kaWYKKyAgICAsIG1fY29tcGlsYXRpb24oMCkKICNp
ZiBVU0UoT1NfUkFORE9NTkVTUykKICAgICAsIG1fcmFuZG9tR2VuZXJhdG9yKGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAjZWxzZQpAQCAtMjMyLDYgKzIzMywxMyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFKQogICAg
ICAgICBkYXRhTG9nRigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBvZmZzZXQg
MHglbHguXG4iLCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKICNlbmRp
ZgorICAgICAgICAKKyAgICAgICAgaWYgKG1fY29tcGlsYXRpb24pIHsKKyAgICAgICAgICAgIGFk
ZDY0KAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMigxKSwKKyAgICAgICAgICAgICAgICBB
YnNvbHV0ZUFkZHJlc3MobV9jb21waWxhdGlvbi0+ZXhlY3V0aW9uQ291bnRlckZvcihQQlA6Ok9y
aWdpblN0YWNrKFBCUDo6T3JpZ2luKAorICAgICAgICAgICAgICAgICAgICBtX2NvbXBpbGF0aW9u
LT5ieXRlY29kZXMoKSwgbV9ieXRlY29kZU9mZnNldCkpKS0+YWRkcmVzcygpKSk7CisgICAgICAg
IH0KIAogICAgICAgICBzd2l0Y2ggKG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJ
bnN0cnVjdGlvbi0+dS5vcGNvZGUpKSB7CiAgICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfZGVs
X2J5X3ZhbCkKQEAgLTYzMSw4ICs2MzksMTAgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxl
KENvZGVQdHIqIGZ1bgogICAgIH0KICNlbmRpZgogICAgIAotICAgIGlmIChPcHRpb25zOjpzaG93
RGlzYXNzZW1ibHkoKSkKKyAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkgfHwgbV9n
bG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVy
ID0gYWRvcHRQdHIobmV3IEpJVERpc2Fzc2VtYmxlcihtX2NvZGVCbG9jaykpOworICAgIGlmICht
X2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKKyAgICAgICAgbV9jb21waWxhdGlv
biA9IG1fZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5uZXdDb21waWxhdGlvbiht
X2NvZGVCbG9jaywgUEJQOjpCYXNlbGluZSk7CiAgICAgCiAgICAgaWYgKG1fZGlzYXNzZW1ibGVy
KQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CkBAIC04
MjMsOCArODMzLDEwIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4K
ICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIGZ1bmN0
aW9uRW50cnlBcml0eUNoZWNrKQogICAgICAgICAqZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sgPSBw
YXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGFyaXR5Q2hlY2spOwogCi0gICAgaWYgKG1fZGlzYXNzZW1i
bGVyKQorICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSkKICAgICAgICAgbV9kaXNh
c3NlbWJsZXItPmR1bXAocGF0Y2hCdWZmZXIpOworICAgIGlmIChtX2NvbXBpbGF0aW9uKQorICAg
ICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2NvbXBpbGF0aW9uLCBwYXRj
aEJ1ZmZlcik7CiAgICAgCiAgICAgQ29kZVJlZiByZXN1bHQgPSBwYXRjaEJ1ZmZlci5maW5hbGl6
ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTQ3LDYgKzk0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2Vu
ZGlmCiAjZW5kaWYKICAgICAgICAgT3duUHRyPEpJVERpc2Fzc2VtYmxlcj4gbV9kaXNhc3NlbWJs
ZXI7CisgICAgICAgIFBCUDo6Q29tcGlsYXRpb24qIG1fY29tcGlsYXRpb247CiAgICAgICAgIFdl
YWtSYW5kb20gbV9yYW5kb21HZW5lcmF0b3I7CiAgICAgICAgIHN0YXRpYyBDb2RlUmVmIHN0cmlu
Z0dldEJ5VmFsU3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTM2MzE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDE4
ICs0OCwxMCBAQCBKSVREaXNhc3NlbWJsZXI6On5KSVREaXNhc3NlbWJsZXIoKQogCiB2b2lkIEpJ
VERpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogewotICAgIG91dC5wcmludCgiR2VuZXJhdGVkIEJhc2VsaW5lIEpJVCBjb2RlIGZvciAi
LCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUQ29kZTo6QmFzZWxpbmVKSVQp
LCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCksICJcbiIpOwotICAgIG91dC5wcmludCgiICAgQ29kZSBhdCBbIiwgUmF3UG9pbnRlcihsaW5r
QnVmZmVyLmRlYnVnQWRkcmVzcygpKSwgIiwgIiwgUmF3UG9pbnRlcihzdGF0aWNfY2FzdDxjaGFy
Kj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpKSwg
Iik6XG4iKTsKKyAgICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CiAgICAgZHVtcERpc2Fz
c2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckJ5dGVjb2Rl
SW5kZXhJbk1haW5QYXRoWzBdKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZmly
c3RTbG93TGFiZWw7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGFiZWxGb3JCeXRl
Y29kZUluZGV4SW5TbG93UGF0aC5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9sYWJlbEZv
ckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoW2ldLmlzU2V0KCkpIHsKLSAgICAgICAgICAgIGZpcnN0
U2xvd0xhYmVsID0gbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoW2ldOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZHVtcEZvckluc3RydWN0aW9ucyhv
dXQsIGxpbmtCdWZmZXIsICIgICAgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRo
LCBmaXJzdFNsb3dMYWJlbC5pc1NldCgpID8gZmlyc3RTbG93TGFiZWwgOiBtX2VuZE9mU2xvd1Bh
dGgpOworICAgIGR1bXBGb3JJbnN0cnVjdGlvbnMob3V0LCBsaW5rQnVmZmVyLCAiICAgICIsIG1f
bGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aCwgZmlyc3RTbG93TGFiZWwoKSk7CiAgICAg
b3V0LnByaW50KCIgICAgKEVuZCBPZiBNYWluIFBhdGgpXG4iKTsKICAgICBkdW1wRm9ySW5zdHJ1
Y3Rpb25zKG91dCwgbGlua0J1ZmZlciwgIiAgICAoUykgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5k
ZXhJblNsb3dQYXRoLCBtX2VuZE9mU2xvd1BhdGgpOwogICAgIG91dC5wcmludCgiICAgIChFbmQg
T2YgU2xvdyBQYXRoKVxuIik7CkBAIC03MSwyNyArNjQsOTQgQEAgdm9pZCBKSVREaXNhc3NlbWJs
ZXI6OmR1bXAoTGlua0J1ZmZlciYgbAogICAgIGR1bXAoV1RGOjpkYXRhRmlsZSgpLCBsaW5rQnVm
ZmVyKTsKIH0KIAotdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMoUHJp
bnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4
LCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgZW5kTGFiZWwpCit2b2lkIEpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcihQ
QlA6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3sK
KyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgCisgICAgZHVtcEhlYWRlcihvdXQsIGxp
bmtCdWZmZXIpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVk
Qnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICBvdXQu
cmVzZXQoKTsKKyAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBtX3N0YXJ0T2ZD
b2RlLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFpblBhdGhbMF0pOworICAgIGNvbXBpbGF0
aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFj
aygpLCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICAKKyAgICByZXBvcnRJbnN0cnVjdGlvbnMoY29t
cGlsYXRpb24sIGxpbmtCdWZmZXIsICIgICAgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1h
aW5QYXRoLCBmaXJzdFNsb3dMYWJlbCgpKTsKKyAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRp
b24oUEJQOjpDb21waWxlZEJ5dGVjb2RlKFBCUDo6T3JpZ2luU3RhY2soKSwgIiAgICAoRW5kIE9m
IE1haW4gUGF0aClcbiIpKTsKKyAgICByZXBvcnRJbnN0cnVjdGlvbnMoY29tcGlsYXRpb24sIGxp
bmtCdWZmZXIsICIgICAgKFMpICIsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aCwg
bV9lbmRPZlNsb3dQYXRoKTsKKyAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oUEJQOjpD
b21waWxlZEJ5dGVjb2RlKFBCUDo6T3JpZ2luU3RhY2soKSwgIiAgICAoRW5kIE9mIFNsb3cgUGF0
aClcbiIpKTsKKyAgICBvdXQucmVzZXQoKTsKKyAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5r
QnVmZmVyLCBtX2VuZE9mU2xvd1BhdGgsIG1fZW5kT2ZDb2RlKTsKKyAgICBjb21waWxhdGlvbi0+
YWRkRGVzY3JpcHRpb24oUEJQOjpDb21waWxlZEJ5dGVjb2RlKFBCUDo6T3JpZ2luU3RhY2soKSwg
b3V0LnRvQ1N0cmluZygpKSk7Cit9CisKK3ZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wSGVhZGVy
KFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgb3V0LnBy
aW50KCJHZW5lcmF0ZWQgQmFzZWxpbmUgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRU
eXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCksICIsIGluc3RydWN0aW9uIGNv
dW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CisgICAgb3V0
LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtCdWZmZXIuZGVidWdBZGRyZXNz
KCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVn
QWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAiKTpcbiIpOworfQorCitNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgSklURGlzYXNzZW1ibGVyOjpmaXJzdFNsb3dMYWJlbCgpCiB7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsYWJlbHMuc2l6ZSgpOykgeworICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBmaXJzdFNsb3dMYWJlbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbaV0uaXNTZXQoKSkg
eworICAgICAgICAgICAgZmlyc3RTbG93TGFiZWwgPSBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleElu
U2xvd1BhdGhbaV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZmlyc3RTbG93TGFiZWwuaXNTZXQoKSA/IGZpcnN0U2xvd0xhYmVsIDogbV9lbmRPZlNs
b3dQYXRoOworfQorCitWZWN0b3I8SklURGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gSklURGlzYXNz
ZW1ibGVyOjpkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKExpbmtCdWZmZXImIGxpbmtCdWZmZXIs
IGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVs
cywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVsKQoreworICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKKyAgICBWZWN0b3I8RHVtcGVkT3A+IHJlc3VsdDsKKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGFiZWxzLnNpemUoKTspIHsKICAgICAgICAgaWYgKCFsYWJlbHNb
aV0uaXNTZXQoKSkgewogICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KKyAgICAgICAgb3V0LnJlc2V0KCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoRHVt
cGVkT3AoKSk7CisgICAgICAgIHJlc3VsdC5sYXN0KCkuaW5kZXggPSBpOwogICAgICAgICBvdXQu
cHJpbnQocHJlZml4KTsKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGkp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIG5leHRJbmRleCA9IGkgKyAxOyA7IG5leHRJbmRleCsr
KSB7CiAgICAgICAgICAgICBpZiAobmV4dEluZGV4ID49IGxhYmVscy5zaXplKCkpIHsKICAgICAg
ICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBsYWJlbHNbaV0sIGVu
ZExhYmVsKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmVzdWx0
Lmxhc3QoKS5kaXNhc3NlbWJseSA9IG91dC50b0NTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxhYmVsc1tuZXh0
SW5kZXhdLmlzU2V0KCkpIHsKICAgICAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBs
aW5rQnVmZmVyLCBsYWJlbHNbaV0sIGxhYmVsc1tuZXh0SW5kZXhdKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQubGFzdCgpLmRpc2Fzc2VtYmx5ID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICAg
ICAgICAgIGkgPSBuZXh0SW5kZXg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMoUHJpbnRTdHJlYW0mIG91dCwg
TGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9B
c3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwp
Cit7CisgICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wZWRPcHMgPSBkdW1wVmVjdG9yRm9ySW5zdHJ1
Y3Rpb25zKGxpbmtCdWZmZXIsIHByZWZpeCwgbGFiZWxzLCBlbmRMYWJlbCk7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bXBlZE9wcy5zaXplKCk7ICsraSkKKyAgICAgICAg
b3V0LnByaW50KGR1bXBlZE9wc1tpXS5kaXNhc3NlbWJseSk7Cit9CisKK3ZvaWQgSklURGlzYXNz
ZW1ibGVyOjpyZXBvcnRJbnN0cnVjdGlvbnMoUEJQOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24s
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVs
KQoreworICAgIFZlY3RvcjxEdW1wZWRPcD4gZHVtcGVkT3BzID0gZHVtcFZlY3RvckZvckluc3Ry
dWN0aW9ucyhsaW5rQnVmZmVyLCBwcmVmaXgsIGxhYmVscywgZW5kTGFiZWwpOworICAgIAorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1wZWRPcHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKAorICAgICAgICAgICAgUEJQOjpDb21waWxl
ZEJ5dGVjb2RlKAorICAgICAgICAgICAgICAgIFBCUDo6T3JpZ2luU3RhY2soUEJQOjpPcmlnaW4o
Y29tcGlsYXRpb24tPmJ5dGVjb2RlcygpLCBkdW1wZWRPcHNbaV0uaW5kZXgpKSwKKyAgICAgICAg
ICAgICAgICBkdW1wZWRPcHNbaV0uZGlzYXNzZW1ibHkpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklU
RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZl
ciYgbGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZyb20sIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCB0bykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3Nl
bWJsZXIuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXNhc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5j
bHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVk
ZSAiUEJQRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNTgsOSArNTksMjEgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZHVtcChMaW5r
QnVmZmVyJik7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiwgTGlua0J1ZmZlciYpOworICAg
IHZvaWQgcmVwb3J0VG9Qcm9maWxlcihQQlA6OkNvbXBpbGF0aW9uKiwgTGlua0J1ZmZlciYpOwog
CiBwcml2YXRlOgorICAgIHZvaWQgZHVtcEhlYWRlcihQcmludFN0cmVhbSYsIExpbmtCdWZmZXIm
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZmlyc3RTbG93TGFiZWwoKTsKKyAgICAKKyAg
ICBzdHJ1Y3QgRHVtcGVkT3AgeworICAgICAgICB1bnNpZ25lZCBpbmRleDsKKyAgICAgICAgQ1N0
cmluZyBkaXNhc3NlbWJseTsKKyAgICB9OworICAgIFZlY3RvcjxEdW1wZWRPcD4gZHVtcFZlY3Rv
ckZvckluc3RydWN0aW9ucyhMaW5rQnVmZmVyJiwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5k
TGFiZWwpOworICAgICAgICAKICAgICB2b2lkIGR1bXBGb3JJbnN0cnVjdGlvbnMoUHJpbnRTdHJl
YW0mLCBMaW5rQnVmZmVyJiwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpOworICAg
IHZvaWQgcmVwb3J0SW5zdHJ1Y3Rpb25zKFBCUDo6Q29tcGlsYXRpb24qLCBMaW5rQnVmZmVyJiwg
Y29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxz
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpOworICAgIAogICAgIHZvaWQgZHVtcERp
c2Fzc2VtYmx5KFByaW50U3RyZWFtJiwgTGlua0J1ZmZlciYsIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBmcm9tLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgdG8pOwogICAgIAogICAgIENvZGVCbG9jayog
bV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0
ZWNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQQnl0ZWNvZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQQlBCeXRlY29kZS5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitKU1ZhbHVlIEJ5dGVj
b2RlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVJbmRleCwganNO
dW1iZXIobV9ieXRlY29kZUluZGV4KSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVzY3JpcHRpb24sIGpzU3RyaW5nKGV4
ZWMsIFN0cmluZzo6ZnJvbVVURjgobV9kZXNjcmlwdGlvbikpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBQQlBCeXRlY29kZV9oCisjZGVmaW5lIFBCUEJ5dGVjb2RlX2gKKworI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNvZGUgeworcHVibGljOgorICAg
IEJ5dGVjb2RlKCkKKyAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoVUlOVF9NQVgpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICBCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBD
U3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCkKKyAgICAgICAgLCBtX2Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9
CisgICAgCisgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0
ZWNvZGVJbmRleDsgfQorICAgIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQorICAgIAorICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUq
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIENT
dHJpbmcgbV9kZXNjcmlwdGlvbjsKK307CisKK2lubGluZSB1bnNpZ25lZCBnZXRCeXRlY29kZUlu
ZGV4Rm9yQnl0ZWNvZGUoQnl0ZWNvZGUqIGJ5dGVjb2RlKSB7IHJldHVybiBieXRlY29kZS0+Ynl0
ZWNvZGVJbmRleCgpOyB9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8v
IFBCUEJ5dGVjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UEJ5dGVjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUEJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGVzLmgiCisKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK0J5dGVjb2Rlczo6Qnl0ZWNvZGVzKHNpemVf
dCBpZCwgQ29kZUJsb2NrSGFzaCBoYXNoKQorICAgIDogbV9pZChpZCkKKyAgICAsIG1faGFzaCho
YXNoKQoreworfQorCitCeXRlY29kZXM6On5CeXRlY29kZXMoKSB7IH0KKwordW5zaWduZWQgQnl0
ZWNvZGVzOjppbmRleEZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29u
c3QKK3sKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlLCB1bnNpZ25lZCwgZ2V0Qnl0
ZWNvZGVJbmRleEZvckJ5dGVjb2RlPihjb25zdF9jYXN0PEJ5dGVjb2RlKj4obV9ieXRlY29kZS5i
ZWdpbigpKSwgbV9ieXRlY29kZS5zaXplKCksIGJ5dGVjb2RlSW5kZXgpIC0gbV9ieXRlY29kZS5i
ZWdpbigpOworfQorCitjb25zdCBCeXRlY29kZSYgQnl0ZWNvZGVzOjpmb3JCeXRlY29kZUluZGV4
KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGF0KGluZGV4Rm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVzOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIjIiwgbV9oYXNoLCAi
KCIsIG1faWQsICIpIik7Cit9CisKK0pTVmFsdWUgQnl0ZWNvZGVzOjp0b0pTKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7CisgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpzTnVtYmVyKG1faWQpKTsKKyAg
ICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5oYXNoLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KHRvQ1N0cmluZyhtX2hh
c2gpKSkpOworICAgIAorICAgIEpTQXJyYXkqIHN0cmVhbSA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYywgMCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnl0ZWNvZGUuc2l6ZSgp
OyArK2kpCisgICAgICAgIHN0cmVhbS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9ieXRlY29k
ZVtpXS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZSwgc3RyZWFtKTsKKyAgICAKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQQlBCeXRlY29kZXNfaAorI2RlZmluZSBQQlBCeXRl
Y29kZXNfaAorCisjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgorI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJQQlBCeXRlY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlcyB7
CitwdWJsaWM6CisgICAgQnl0ZWNvZGVzKHNpemVfdCBpZCwgQ29kZUJsb2NrSGFzaCk7CisgICAg
fkJ5dGVjb2RlcygpOworICAgIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEJ5dGVjb2RlJiBieXRl
Y29kZSkgeyBtX2J5dGVjb2RlLmFwcGVuZChieXRlY29kZSk7IH0KKyAgICAKKyAgICBzaXplX3Qg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNoOyB9CisgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgZGF0YSBz
dHJ1Y3R1cmUgaXMgbm90IGluZGV4ZWQgYnkgYnl0ZWNvZGUgaW5kZXguCisgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGUuc2l6ZSgpOyB9CisgICAgY29uc3QgQnl0
ZWNvZGUmIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVbaV07IH0KKyAg
ICAKKyAgICB1bnNpZ25lZCBpbmRleEZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkgY29uc3Q7CisgICAgY29uc3QgQnl0ZWNvZGUmIGZvckJ5dGVjb2RlSW5kZXgodW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CisgICAgCisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAg
IAorcHJpdmF0ZToKKyAgICBzaXplX3QgbV9pZDsKKyAgICBDb2RlQmxvY2tIYXNoIG1faGFzaDsK
KyAgICBWZWN0b3I8Qnl0ZWNvZGU+IG1fYnl0ZWNvZGU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBCeXRlY29kZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbi5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBD
b21waWxhdGlvbi5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAg
eworCitDb21waWxhdGlvbjo6Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBp
bGF0aW9uS2luZCBraW5kKQorICAgIDogbV9ieXRlY29kZXMoYnl0ZWNvZGVzKQorICAgICwgbV9r
aW5kKGtpbmQpCit7Cit9CisKK0NvbXBpbGF0aW9uOjp+Q29tcGlsYXRpb24oKSB7IH0KKwordm9p
ZCBDb21waWxhdGlvbjo6YWRkRGVzY3JpcHRpb24oY29uc3QgQ29tcGlsZWRCeXRlY29kZSYgY29t
cGlsZWRCeXRlY29kZSkKK3sKKyAgICBtX2Rlc2NyaXB0aW9ucy5hcHBlbmQoY29tcGlsZWRCeXRl
Y29kZSk7Cit9CisKK0V4ZWN1dGlvbkNvdW50ZXIqIENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3Vu
dGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJiBvcmlnaW4pCit7CisgICAgSGFzaE1hcDxPcmlnaW5T
dGFjaywgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NvdW50
ZXJzLmZpbmQob3JpZ2luKTsKKyAgICBpZiAoaXRlciAhPSBtX2NvdW50ZXJzLmVuZCgpKQorICAg
ICAgICByZXR1cm4gaXRlci0+dmFsdWUuZ2V0KCk7CisgICAgCisgICAgT3duUHRyPEV4ZWN1dGlv
bkNvdW50ZXI+IGNvdW50ZXIgPSBhZG9wdFB0cihuZXcgRXhlY3V0aW9uQ291bnRlcigpKTsKKyAg
ICBFeGVjdXRpb25Db3VudGVyKiByZXN1bHQgPSBjb3VudGVyLmdldCgpOworICAgIG1fY291bnRl
cnMuYWRkKG9yaWdpbiwgY291bnRlci5yZWxlYXNlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK0pTVmFsdWUgQ29tcGlsYXRpb246OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorewor
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAK
KyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5ieXRlY29kZXNJRCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb21waWxhdGlvbktpbmQsIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgodG9DU3Ry
aW5nKG1fa2luZCkpKSk7CisgICAgCisgICAgSlNBcnJheSogZGVzY3JpcHRpb25zID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9k
ZXNjcmlwdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlc2NyaXB0aW9ucy0+cHV0RGlyZWN0
SW5kZXgoZXhlYywgaSwgbV9kZXNjcmlwdGlvbnNbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVz
Y3JpcHRpb25zLCBkZXNjcmlwdGlvbnMpOworICAgIAorICAgIEpTQXJyYXkqIGNvdW50ZXJzID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBIYXNoTWFwPE9yaWdpblN0YWNrLCBP
d25QdHI8RXhlY3V0aW9uQ291bnRlcj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb3VudGVy
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8T3JpZ2luU3RhY2ssIE93blB0cjxFeGVjdXRpb25D
b3VudGVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9jb3VudGVycy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIEpTT2JqZWN0KiBjb3VudGVyRW50cnkgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgY291bnRlckVudHJ5LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkub3JpZ2luLCBpdGVyLT5r
ZXkudG9KUyhleGVjKSk7CisgICAgICAgIGNvdW50ZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV4ZWN1dGlvbkNvdW50LCBqc051bWJl
cihpdGVyLT52YWx1ZS0+Y291bnQoKSkpOworICAgICAgICBjb3VudGVycy0+cHVzaChleGVjLCBj
b3VudGVyRW50cnkpOworICAgIH0KKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb3VudGVycywgY291bnRlcnMpOworICAgIAor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGls
YXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uX2gKKyNk
ZWZpbmUgUEJQQ29tcGlsYXRpb25faAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IlBCUENvbXBpbGF0aW9uS2luZC5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGVkQnl0ZWNvZGUuaCIK
KyNpbmNsdWRlICJQQlBFeGVjdXRpb25Db3VudGVyLmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luU3Rh
Y2suaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5
dGVjb2RlczsKKworLy8gUmVwcmVzZW50cyB0aGUgYWN0IG9mIGV4ZWN1dGluZyBzb21lIGJ5dGVj
b2RlcyBpbiBzb21lIGVuZ2luZSwgYW5kIGRvZXMKKy8vIGFsbCBvZiB0aGUgY291bnRpbmcgZm9y
IHRob3NlIGV4ZWN1dGlvbnMuCisKK2NsYXNzIENvbXBpbGF0aW9uIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29tcGlsYXRpb24pOworcHVibGlj
OgorICAgIENvbXBpbGF0aW9uKEJ5dGVjb2RlcyosIENvbXBpbGF0aW9uS2luZCk7CisgICAgfkNv
bXBpbGF0aW9uKCk7CisgICAgCisgICAgQnl0ZWNvZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJl
dHVybiBtX2J5dGVjb2RlczsgfQorICAgIENvbXBpbGF0aW9uS2luZCBraW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9raW5kOyB9CisgICAgCisgICAgdm9pZCBhZGREZXNjcmlwdGlvbihjb25zdCBDb21w
aWxlZEJ5dGVjb2RlJik7CisgICAgRXhlY3V0aW9uQ291bnRlciogZXhlY3V0aW9uQ291bnRlckZv
cihjb25zdCBPcmlnaW5TdGFjayYpOworICAgIAorICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUq
KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKKyAg
ICBDb21waWxhdGlvbktpbmQgbV9raW5kOworICAgIFZlY3RvcjxDb21waWxlZEJ5dGVjb2RlPiBt
X2Rlc2NyaXB0aW9uczsKKyAgICBIYXNoTWFwPE9yaWdpblN0YWNrLCBPd25QdHI8RXhlY3V0aW9u
Q291bnRlcj4gPiBtX2NvdW50ZXJzOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAor
CisjZW5kaWYgLy8gUEJQQ29tcGlsYXRpb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
QlBDb21waWxhdGlvbktpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpT
Qzo6UEJQOjpDb21waWxhdGlvbktpbmQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAg
ICBjYXNlIEpTQzo6UEJQOjpMTEludDoKKyAgICAgICAgb3V0LnByaW50KCJMTEludCIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OlBCUDo6QmFzZWxpbmU6CisgICAgICAgIG91dC5w
cmludCgiQmFzZWxpbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQQlA6OkRG
RzoKKyAgICAgICAgb3V0LnByaW50KCJERkciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1
bHQ6CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
Q29tcGlsYXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgUEJQQ29tcGlsYXRpb25LaW5kX2gKKyNkZWZpbmUgUEJQQ29tcGlsYXRpb25L
aW5kX2gKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitlbnVtIENvbXBpbGF0
aW9uS2luZCB7CisgICAgTExJbnQsCisgICAgQmFzZWxpbmUsCisgICAgREZHCit9OworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6UEJQCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0
cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UEJQOjpDb21waWxh
dGlvbktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFBCUENvbXBpbGF0
aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21w
aWxlZEJ5dGVjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGVkQnl0ZWNv
ZGUuaCIKKworI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgUEJQIHsKKworQ29tcGlsZWRCeXRlY29kZTo6Q29tcGlsZWRCeXRlY29kZShjb25z
dCBPcmlnaW5TdGFjayYgb3JpZ2luLCBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICA6
IG1fb3JpZ2luKG9yaWdpbikKKyAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pCit7Cit9
CisKK0NvbXBpbGVkQnl0ZWNvZGU6On5Db21waWxlZEJ5dGVjb2RlKCkKK3sKK30KKworSlNWYWx1
ZSBDb21waWxlZEJ5dGVjb2RlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBK
U09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgCisgICAg
cmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkub3JpZ2luLCBtX29yaWdpbi50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZXNjcmlwdGlvbiwganNT
dHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOChtX2Rlc2NyaXB0aW9uKSkpOworICAgIAorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRl
Y29kZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UENvbXBpbGVkQnl0ZWNvZGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBp
bGVkQnl0ZWNvZGVfaAorI2RlZmluZSBQQlBDb21waWxlZEJ5dGVjb2RlX2gKKworI2luY2x1ZGUg
IkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQQlBPcmlnaW5TdGFjay5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFz
cyBDb21waWxlZEJ5dGVjb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBJdCdzIHZhbGlkIHRvIGhhdmUg
YW4gZW1wdHkgT3JpZ2luU3RhY2ssIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgc29tZQor
ICAgIC8vIHNvcnQgb2Ygbm9uLWJ5dGVjb2RlLXJlbGF0ZWQgbWFjaGluZSBjb2RlLgorICAgIENv
bXBpbGVkQnl0ZWNvZGUoY29uc3QgT3JpZ2luU3RhY2smLCBjb25zdCBDU3RyaW5nJiBkZXNjcmlw
dGlvbik7CisgICAgfkNvbXBpbGVkQnl0ZWNvZGUoKTsKKyAgICAKKyAgICBjb25zdCBPcmlnaW5T
dGFjayYgb3JpZ2luU3RhY2soKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGNvbnN0
IENTdHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQor
ICAgIAorICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6
CisgICAgT3JpZ2luU3RhY2sgbV9vcmlnaW47CisgICAgQ1N0cmluZyBtX2Rlc2NyaXB0aW9uOwor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYgLy8gUEJQQ29tcGlsZWRC
eXRlY29kZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBEYXRh
YmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UERhdGFiYXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFzZS5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK0RhdGFiYXNlOjpEYXRh
YmFzZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFs
RGF0YSkKK3sKK30KKworRGF0YWJhc2U6On5EYXRhYmFzZSgpCit7Cit9CisKK0J5dGVjb2Rlcyog
RGF0YWJhc2U6OmFkZEJ5dGVjb2RlcyhDb2RlQmxvY2tIYXNoIGhhc2gpCit7CisgICAgbV9ieXRl
Y29kZXMuYXBwZW5kKEJ5dGVjb2RlcyhtX2J5dGVjb2Rlcy5zaXplKCksIGhhc2gpKTsKKyAgICBy
ZXR1cm4gJm1fYnl0ZWNvZGVzLmxhc3QoKTsKK30KKworQnl0ZWNvZGVzKiBEYXRhYmFzZTo6ZW5z
dXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIFN0cmluZ1ByaW50
U3RyZWFtIG91dDsKKyAgICAKKyAgICBjb2RlQmxvY2sgPSBjb2RlQmxvY2stPmJhc2VsaW5lVmVy
c2lvbigpOworICAgIAorICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNvZGVzKj46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2J5dGVjb2Rlc01hcC5maW5kKGNvZGVCbG9jayk7CisgICAgaWYgKGl0ZXIg
IT0gbV9ieXRlY29kZXNNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAg
ICAKKyAgICBCeXRlY29kZXMqIHJlc3VsdCA9IGFkZEJ5dGVjb2Rlcyhjb2RlQmxvY2stPmhhc2go
KSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJ
bmRleCA8IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgeworICAgICAgICBvdXQu
cmVzZXQoKTsKKyAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3V0
LnRvQ1N0cmluZygpKSk7CisgICAgICAgIAorICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29k
ZUxlbmd0aCgKKyAgICAgICAgICAgIG1fZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoCisgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUlu
ZGV4XS51Lm9wY29kZSkpOworICAgIH0KKyAgICAKKyAgICBtX2J5dGVjb2Rlc01hcC5hZGQoY29k
ZUJsb2NrLCByZXN1bHQpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgRGF0
YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIG1f
Ynl0ZWNvZGVzTWFwLnJlbW92ZShjb2RlQmxvY2spOworfQorCitDb21waWxhdGlvbiogRGF0YWJh
c2U6Om5ld0NvbXBpbGF0aW9uKEJ5dGVjb2RlcyogYnl0ZWNvZGVzLCBDb21waWxhdGlvbktpbmQg
a2luZCkKK3sKKyAgICBPd25QdHI8Q29tcGlsYXRpb24+IGNvbXBpbGF0aW9uID0gYWRvcHRQdHIo
bmV3IENvbXBpbGF0aW9uKGJ5dGVjb2Rlcywga2luZCkpOworICAgIENvbXBpbGF0aW9uKiByZXN1
bHQgPSBjb21waWxhdGlvbi5nZXQoKTsKKyAgICBtX2NvbXBpbGF0aW9ucy5hcHBlbmQoY29tcGls
YXRpb24ucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitDb21waWxhdGlvbiog
RGF0YWJhc2U6Om5ld0NvbXBpbGF0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBDb21waWxhdGlv
bktpbmQga2luZCkKK3sKKyAgICByZXR1cm4gbmV3Q29tcGlsYXRpb24oZW5zdXJlQnl0ZWNvZGVz
Rm9yKGNvZGVCbG9jayksIGtpbmQpOworfQorCitKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYyk7CisgICAgCisgICAgSlNBcnJheSogYnl0ZWNvZGVzID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ieXRl
Y29kZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGJ5dGVjb2Rlcy0+cHV0RGlyZWN0SW5kZXgoZXhl
YywgaSwgbV9ieXRlY29kZXNbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzLCBieXRl
Y29kZXMpOworICAgIAorICAgIEpTQXJyYXkqIGNvbXBpbGF0aW9ucyA9IGNvbnN0cnVjdEVtcHR5
QXJyYXkoZXhlYywgMCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY29tcGlsYXRp
b25zLnNpemUoKTsgKytpKQorICAgICAgICBjb21waWxhdGlvbnMtPnB1dERpcmVjdEluZGV4KGV4
ZWMsIGksIG1fY29tcGlsYXRpb25zW2ldLT50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxhdGlv
bnMsIGNvbXBpbGF0aW9ucyk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5n
IERhdGFiYXNlOjp0b0pTT04oKSBjb25zdAoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKAorICAgICAgICBtX2dsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUobV9nbG9iYWxEYXRhLCBqc051bGwoKSkpOwor
ICAgIAorICAgIHJldHVybiBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCB0b0pTKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKSwgMCk7Cit9CisKK2Jvb2wgRGF0YWJh
c2U6OnNhdmUoY29uc3QgY2hhciogZmlsZW5hbWUpIGNvbnN0Cit7CisgICAgT3duUHRyPEZpbGVQ
cmludFN0cmVhbT4gb3V0ID0gRmlsZVByaW50U3RyZWFtOjpvcGVuKGZpbGVuYW1lLCAidyIpOwor
ICAgIGlmICghb3V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgb3V0LT5wcmlu
dCh0b0pTT04oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpQQlAKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFi
YXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
RGF0YWJhc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUERhdGFiYXNlX2gKKyNk
ZWZpbmUgUEJQRGF0YWJhc2VfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBC
UEJ5dGVjb2Rlcy5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUEJQ
Q29tcGlsYXRpb25LaW5kLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBEYXRhYmFzZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFi
YXNlKTsKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRhYmFzZShKU0dsb2JhbERh
dGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+RGF0YWJhc2UoKTsKKyAgICAKKyAgICBCeXRl
Y29kZXMqIGVuc3VyZUJ5dGVjb2Rlc0ZvcihDb2RlQmxvY2sqKTsKKyAgICB2b2lkIG5vdGlmeURl
c3RydWN0aW9uKENvZGVCbG9jayopOworICAgIAorICAgIENvbXBpbGF0aW9uKiBuZXdDb21waWxh
dGlvbihDb2RlQmxvY2sqLCBDb21waWxhdGlvbktpbmQpOworICAgIENvbXBpbGF0aW9uKiBuZXdD
b21waWxhdGlvbihCeXRlY29kZXMqLCBDb21waWxhdGlvbktpbmQpOworICAgIAorICAgIC8vIENv
bnZlcnRzIHRoZSBkYXRhYmFzZSB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgaXMgc3VpdGFi
bGUgZm9yIEpTT04gc3RyaW5naWZpY2F0aW9uLgorICAgIC8vIE5vdGUgdGhhdCBpdCdzIHByb2Jh
Ymx5IGEgZ29vZCBpZGVhIHRvIHVzZSBhbiBFeGVjU3RhdGUqIGFzc29jaWF0ZWQgd2l0aCBhIGds
b2JhbAorICAgIC8vIG9iamVjdCB0aGF0IGlzICJjbGVhbiIgLSBpLmUuIGFycmF5IGFuZCBvYmpl
Y3QgcHJvdG90eXBlcyBoYXZlbid0IGhhZCBzdHJhbmdlIHRoaW5ncworICAgIC8vIGRvbmUgdG8g
dGhlbS4gQW5kIHllcywgaXQgc2hvdWxkIGJlIGFwcHJvcHJpYXRlIHRvIGp1c3QgdXNlIGEgZ2xv
YmFsRXhlYyBoZXJlLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICAKKyAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YWJhc2UgdG8gYSBKYXZh
U2NyaXB0IG9iamVjdCB1c2luZyBhIHByaXZhdGUgdGVtcG9yYXJ5IGdsb2JhbCBvYmplY3QsCisg
ICAgLy8gYW5kIHRoZW4gcmV0dXJucyB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGF0IG9i
amVjdC4KKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9KU09OKCkgY29uc3Q7CisgICAg
CisgICAgLy8gU2F2ZXMgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gKGZyb20gdG9KU09OKCkpIHRv
IHRoZSBnaXZlbiBmaWxlLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQorICAgIC8vIHNhdmUgZmFpbGVk
LgorICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2F2ZShjb25zdCBjaGFyKiBmaWxlbmFtZSkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBhZGRCeXRlY29kZXMoQ29kZUJsb2Nr
SGFzaCk7CisgICAgCisgICAgSlNHbG9iYWxEYXRhJiBtX2dsb2JhbERhdGE7CisgICAgU2VnbWVu
dGVkVmVjdG9yPEJ5dGVjb2Rlcz4gbV9ieXRlY29kZXM7CisgICAgSGFzaE1hcDxDb2RlQmxvY2sq
LCBCeXRlY29kZXMqPiBtX2J5dGVjb2Rlc01hcDsKKyAgICBWZWN0b3I8T3duUHRyPENvbXBpbGF0
aW9uPiA+IG1fY29tcGlsYXRpb25zOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAor
CisjZW5kaWYgLy8gUEJQRGF0YWJhc2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQRXhlY3V0aW9uQ291bnRlcl9oCisjZGVmaW5l
IFBCUEV4ZWN1dGlvbkNvdW50ZXJfaAorCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBQQlAgeworCitjbGFzcyBFeGVjdXRpb25Db3VudGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXhlY3V0aW9uQ291bnRlcik7CitwdWJsaWM6
CisgICAgRXhlY3V0aW9uQ291bnRlcigpIDogbV9jb3VudGVyKDApIHsgfQorICAgIAorICAgIHVp
bnQ2NF90KiBhZGRyZXNzKCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQorICAgIAorICAgIHVpbnQ2
NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9CisKK3ByaXZhdGU6CisgICAg
dWludDY0X3QgbV9jb3VudGVyOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisj
ZW5kaWYgLy8gUEJQRXhlY3V0aW9uQ291bnRlcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUE9yaWdpbi5oIgorCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJQQlBCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJQ
QlBEYXRhYmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK09yaWdp
bjo6T3JpZ2luKERhdGFiYXNlJiBkYXRhYmFzZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgOiBtX2J5dGVjb2RlcyhkYXRhYmFzZS5lbnN1cmVCeXRl
Y29kZXNGb3IoY29kZUJsb2NrKSkKKyAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KQoreworfQorCit2b2lkIE9yaWdpbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIG91dC5wcmludCgqbV9ieXRlY29kZXMsICI6YmMjIiwgbV9ieXRlY29kZUluZGV4KTsKK30K
KworSlNWYWx1ZSBPcmlnaW46OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpT
T2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRl
Y29kZXNJRCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZUlu
ZGV4LCBqc051bWJlcihtX2J5dGVjb2RlSW5kZXgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQT3JpZ2luLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UEJQT3JpZ2luX2gKKyNkZWZpbmUgUEJQT3JpZ2luX2gKKworI2luY2x1ZGUgIkNvZGVCbG9ja0hh
c2guaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENv
ZGVCbG9jazsKKworbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlczsKK2NsYXNzIERh
dGFiYXNlOworCitjbGFzcyBPcmlnaW4geworcHVibGljOgorICAgIE9yaWdpbigpCisgICAgICAg
IDogbV9ieXRlY29kZUluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
KyAgICB7CisgICAgfQorICAgIAorICAgIE9yaWdpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCisgICAgICAgIDogbV9ieXRlY29kZUluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSAtIDEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oQnl0ZWNv
ZGVzKiBieXRlY29kZXMsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgICAgIDogbV9ieXRl
Y29kZXMoYnl0ZWNvZGVzKQorICAgICAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIDEpOworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oRGF0
YWJhc2UmLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleCA9PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KKyAgICAKKyAgICBCeXRlY29kZXMqIGJ5
dGVjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVzOyB9CisgICAgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsgfQorICAgIAorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmlnaW4mKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgT3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OworICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBCeXRlY29kZXMqIG1fYnl0ZWNvZGVzOworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRl
eDsKK307CisKK2lubGluZSBib29sIE9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBPcmlnaW4mIG90
aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2J5dGVjb2RlcyA9PSBvdGhlci5tX2J5dGVjb2Rl
cworICAgICAgICAmJiBtX2J5dGVjb2RlSW5kZXggPT0gb3RoZXIubV9ieXRlY29kZUluZGV4Owor
fQorCitpbmxpbmUgdW5zaWduZWQgT3JpZ2luOjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V1RGOjpQdHJIYXNoPEJ5dGVjb2Rlcyo+OjpoYXNoKG1fYnl0ZWNvZGVzKSArIG1fYnl0ZWNvZGVJ
bmRleDsKK30KKworaW5saW5lIGJvb2wgT3JpZ2luOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7Cit9CisKK3N0cnVjdCBPcmlnaW5IYXNoIHsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBPcmlnaW4mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsg
fQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE9yaWdpbiYgYSwgY29uc3QgT3JpZ2luJiBi
KSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQ
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVs
dEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlBCUDo6T3JpZ2luPiB7
CisgICAgdHlwZWRlZiBKU0M6OlBCUDo6T3JpZ2luSGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJh
aXRzPEpTQzo6UEJQOjpPcmlnaW4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6UEJQOjpP
cmlnaW4+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQQlBPcmlnaW5f
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmln
aW5TdGFjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQT3JpZ2luU3RhY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luU3RhY2suaCIKKworI2luY2x1ZGUgIkNvZGVPcmln
aW4uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlBCUERhdGFiYXNl
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworT3JpZ2luU3RhY2s6Ok9y
aWdpblN0YWNrKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKK3sKKyAgICBtX3N0YWNr
LmFwcGVuZChPcmlnaW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsKK30KKworT3JpZ2lu
U3RhY2s6Ok9yaWdpblN0YWNrKGNvbnN0IE9yaWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RhY2su
YXBwZW5kKG9yaWdpbik7Cit9CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhEYXRhYmFzZSYg
ZGF0YWJhc2UsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3Jp
Z2luKQoreworICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBzdGFjayA9IGNvZGVPcmlnaW4uaW5saW5l
U3RhY2soKTsKKyAgICAKKyAgICBhcHBlbmQoT3JpZ2luKGRhdGFiYXNlLCBjb2RlQmxvY2ssIHN0
YWNrWzBdLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgc3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXBwZW5kKE9yaWdpbigKKyAgICAgICAg
ICAgIGRhdGFiYXNlLmVuc3VyZUJ5dGVjb2Rlc0ZvcihzdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUt
PmJhc2VsaW5lQ29kZUJsb2NrKCkpLAorICAgICAgICAgICAgc3RhY2tbaV0uYnl0ZWNvZGVJbmRl
eCkpOworICAgIH0KK30KKworT3JpZ2luU3RhY2s6On5PcmlnaW5TdGFjaygpIHsgfQorCit2b2lk
IE9yaWdpblN0YWNrOjphcHBlbmQoY29uc3QgT3JpZ2luJiBvcmlnaW4pCit7CisgICAgbV9zdGFj
ay5hcHBlbmQob3JpZ2luKTsKK30KKworYm9vbCBPcmlnaW5TdGFjazo6b3BlcmF0b3I9PShjb25z
dCBPcmlnaW5TdGFjayYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RhY2suc2l6ZSgpICE9
IG90aGVyLm1fc3RhY2suc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9zdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKG1f
c3RhY2tbaV0gIT0gb3RoZXIubV9zdGFja1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2lnbmVkIE9yaWdpblN0YWNr
OjpoYXNoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBtX3N0YWNrLnNpemUoKTsK
KyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N0YWNrLnNpemUoKTsgaS0tOykgeworICAg
ICAgICByZXN1bHQgKj0gMzsKKyAgICAgICAgcmVzdWx0ICs9IG1fc3RhY2tbaV0uaGFzaCgpOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIE9yaWdpblN0YWNrOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBv
dXQucHJpbnQoIiAtLT4gIik7CisgICAgICAgIG91dC5wcmludChtX3N0YWNrW2ldKTsKKyAgICB9
Cit9CisKK0pTVmFsdWUgT3JpZ2luU3RhY2s6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
eworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7Cisg
ICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RhY2suc2l6ZSgpOyArK2kpCisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9zdGFja1tpXS50b0pTKGV4
ZWMpKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5T
dGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBP
cmlnaW5TdGFjay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUE9yaWdpblN0YWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQT3Jp
Z2luU3RhY2tfaAorI2RlZmluZSBQQlBPcmlnaW5TdGFja19oCisKKyNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBDb2RlQmxvY2s7CitzdHJ1Y3QgQ29kZU9yaWdpbjsKKwor
bmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIERhdGFiYXNlOworCitjbGFzcyBPcmlnaW5TdGFjayB7
CitwdWJsaWM6CisgICAgT3JpZ2luU3RhY2soKSB7IH0KKyAgICAKKyAgICBPcmlnaW5TdGFjayhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOworICAgIAorICAgIGV4cGxpY2l0IE9yaWdp
blN0YWNrKGNvbnN0IE9yaWdpbiYpOworICAgIAorICAgIGV4cGxpY2l0IE9yaWdpblN0YWNrKERh
dGFiYXNlJiwgQ29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdpbiYpOworICAgIAorICAgIH5Pcmln
aW5TdGFjaygpOworICAgIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IE9yaWdpbiYpOworICAgIAor
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCk7IH0K
KyAgICAKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5zaXplKCk7
IH0KKyAgICBjb25zdCBPcmlnaW4mIGZyb21Cb3R0b20odW5zaWduZWQgaSkgY29uc3QgeyByZXR1
cm4gbV9zdGFja1tpXTsgfQorICAgIGNvbnN0IE9yaWdpbiYgZnJvbVRvcCh1bnNpZ25lZCBpKSBj
b25zdCB7IHJldHVybiBtX3N0YWNrW21fc3RhY2suc2l6ZSgpIC0gaSAtIDFdOyB9CisgICAgCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9yaWdpblN0YWNrJikgY29uc3Q7CisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFZlY3Rv
cjxPcmlnaW4sIDE+IG1fc3RhY2s7Cit9OworCitpbmxpbmUgYm9vbCBPcmlnaW5TdGFjazo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YWNrLnNpemUo
KSA9PSAxICYmIG1fc3RhY2tbMF0uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKworc3Ry
dWN0IE9yaWdpblN0YWNrSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgT3Jp
Z2luU3RhY2smIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IE9yaWdpblN0YWNrJiBhLCBjb25zdCBPcmlnaW5TdGFjayYgYikgeyByZXR1cm4g
YSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQQlA6Ok9yaWdpblN0YWNrPiB7CisgICAg
dHlwZWRlZiBKU0M6OlBCUDo6T3JpZ2luU3RhY2tIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8SlNDOjpQQlA6Ok9yaWdpblN0YWNrPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlBC
UDo6T3JpZ2luU3RhY2s+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQ
QlBPcmlnaW5TdGFja19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTkgKzMxLDMwIEBACiAgICAgbWFjcm8oYXJndW1lbnRzKSBcCiAgICAgbWFjcm8oQXJy
YXkpIFwKICAgICBtYWNybyhiaW5kKSBcCisgICAgbWFjcm8oYnl0ZWNvZGUpIFwKKyAgICBtYWNy
byhieXRlY29kZUluZGV4KSBcCisgICAgbWFjcm8oYnl0ZWNvZGVzKSBcCisgICAgbWFjcm8oYnl0
ZWNvZGVzSUQpIFwKICAgICBtYWNybyhjYWxsKSBcCiAgICAgbWFjcm8oY2FsbGVlKSBcCiAgICAg
bWFjcm8oY2FsbGVyKSBcCisgICAgbWFjcm8oY29tcGlsYXRpb25LaW5kKSBcCisgICAgbWFjcm8o
Y29tcGlsYXRpb25zKSBcCiAgICAgbWFjcm8oY29tcGlsZSkgXAogICAgIG1hY3JvKGNvbmZpZ3Vy
YWJsZSkgXAogICAgIG1hY3JvKGNvbnN0cnVjdG9yKSBcCisgICAgbWFjcm8oY291bnRlcnMpIFwK
KyAgICBtYWNybyhkZXNjcmlwdGlvbikgXAorICAgIG1hY3JvKGRlc2NyaXB0aW9ucykgXAogICAg
IG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhldmFsKSBcCiAgICAgbWFjcm8oZXhlYykg
XAorICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZnJvbUNoYXJDb2RlKSBc
CiAgICAgbWFjcm8oZ2xvYmFsKSBcCiAgICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oaGFzT3du
UHJvcGVydHkpIFwKKyAgICBtYWNybyhoYXNoKSBcCiAgICAgbWFjcm8oaWdub3JlQ2FzZSkgXAog
ICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8oaW5wdXQpIFwKQEAgLTU2LDYgKzY3LDcgQEAK
ICAgICBtYWNybyhuYW1lKSBcCiAgICAgbWFjcm8obm93KSBcCiAgICAgbWFjcm8oT2JqZWN0KSBc
CisgICAgbWFjcm8ob3JpZ2luKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9w
ZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNp
b24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFy
bmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIGlubGluZSBib29sIHByZXBh
cmVGb3JFeGVjdXRpb24oRXhlY1N0YXQKICAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cg
bGV2ZWwgaW50ZXJwcmV0ZXIuCiAgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGV4ZWMtPmds
b2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKICAgICAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAg
aWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCisgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRlY29k
ZXNGb3IoY29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKQEAgLTU2LDYgKzU4LDggQEAgaW5saW5lIGJvb2wgcHJlcGFy
ZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKAogICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBs
ZXZlbCBpbnRlcnByZXRlci4KICAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChl
eGVjLT5nbG9iYWxEYXRhKCksIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7
CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5
Q2hlY2spOworICAgICAgICBpZiAoZXhlYy0+Z2xvYmFsRGF0YSgpLm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJvZmls
ZXItPmVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2suZ2V0KCkpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUs
MTAgKzI0NSwxNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAg
ICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKICAgICAKICAgICBMTEludDo6RGF0YTo6
cGVyZm9ybUFzc2VydGlvbnMoKnRoaXMpOworICAgIAorICAgIGlmIChPcHRpb25zOjplbmFibGVQ
QlAoKSkKKyAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gYWRvcHRQdHIobmV3IFBCUDo6
RGF0YWJhc2UoKnRoaXMpKTsKIH0KIAogSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKIHsK
KyAgICAvLyBDbGVhciB0aGlzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IG5vYm9keSB0cmllcyB0byBy
ZW1vdmUgdGhlbXNlbHZlcyBmcm9tIGl0LgorICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlci5jbGVh
cigpOworICAgIAogICAgIEFTU0VSVCghbV9hcGlMb2NrLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdM
b2NrKCkpOwogICAgIGhlYXAuZGlkU3RhcnRWTVNodXRkb3duKCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMzYzMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRl
ICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgorI2luY2x1ZGUgIlBC
UERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJTbWFsbFN0
cmluZ3MuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKQEAgLTM1Miw2ICszNTMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgZG91YmxlIGNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKIAogICAgICAg
ICBQcm9maWxlciogbV9lbmFibGVkUHJvZmlsZXI7CisgICAgICAgIE93blB0cjxQQlA6OkRhdGFi
YXNlPiBtX3BlckJ5dGVjb2RlUHJvZmlsZXI7CiAgICAgICAgIFJlZ0V4cENhY2hlKiBtX3JlZ0V4
cENhY2hlOwogICAgICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFsbG9jYXRvcjsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24g
MTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHYoYm9vbCwg
c2hvd0RGR0Rpc2Fzc2VtYmx5LCBmYWxzZSkgXAogICAgIHYoYm9vbCwgc2hvd0FsbERGR05vZGVz
LCBmYWxzZSkgXAogICAgIFwKKyAgICB2KGJvb2wsIGVuYWJsZVBCUCwgZmFsc2UpIFwKKyAgICBc
CiAgICAgdih1bnNpZ25lZCwgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9u
Q291bnQsIDEwMDAwKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1GdW5jdGlvbkZv
ckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxODApIFwKSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM3IEBACisyMDEyLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhYmxlIHRvIHJlcG9ydCBwcm9maWxpbmcgZGF0YSBh
c3NvY2lhdGVkIHdpdGggdGhlIElSIGR1bXBzIGFuZCBkaXNhc3NlbWJseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBzb21lIG1pbm9yIGNoYW5n
ZXMgdG8gc3VwcG9ydCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBGaWxlT3V0cHV0
U3RyZWFtCisgICAgICAgIG5vdyBoYXMgYW4gb3BlbigpIG1ldGhvZCwgYW5kIERhdGFMb2cgdXNl
cyBpdC4gU3RyaW5nUHJpbnRTdHJlYW0gaGFzIGEgcmVzZXQoKSBtZXRob2QsCisgICAgICAgIHdo
aWNoIGFsbG93cyB5b3UgdG8gcmV1c2UgdGhlIHNhbWUgU3RyaW5nUHJpbnRTdHJlYW0gZm9yIGNy
ZWF0aW5nIG11bHRpcGxlIHN0cmluZ3MuCisgICAgICAgIFNlZ21lbnRlZFZlY3RvciBub3cgaGFz
IGEgY29uc3Qgb3BlcmF0b3JbXS4gQW5kLCBXVEZTdHJpbmcgbm93IGNhbiBkbyBmcm9tVVRGOCgp
IG9uCisgICAgICAgIGEgQ1N0cmluZyBkaXJlY3RseS4KKworICAgICAgICAqIHd0Zi9EYXRhTG9n
LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKToKKyAgICAgICAgKiB3
dGYvRmlsZVByaW50U3RyZWFtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjpv
cGVuKToKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5oOgor
ICAgICAgICAqIHd0Zi9TZWdtZW50ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6U2VnbWVudGVk
VmVjdG9yOjphdCk6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjpT
ZWdtZW50ZWRWZWN0b3I6Om9wZXJhdG9yW10pOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjpyZXNldCk6CisgICAg
ICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oOgorICAgICAgICAo
U3RyaW5nUHJpbnRTdHJlYW0pOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZzo6ZnJvbVVURjgpOgorICAgICAgICAoV1RGKToKKyAgICAgICAg
KiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmluZyk6CisKIDIwMTItMTEtMzAg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPiwgUGllcnJlIFJvc3Np
ICA8cGllcnJlLnJvc3NpQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFNlcGFyYXRlIFF0IFdl
YktpdCBpbnRvIFF0IFdlYktpdCBhbmQgUXQgV2ViS2l0IFdpZGdldHMKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0RhdGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cu
Y3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsMTAgKzczLDggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0Zp
bGVPbmNlKCkKICNlbmRpZgogCiAgICAgaWYgKGZpbGVuYW1lKSB7Ci0gICAgICAgIEZJTEUqIHJh
d0ZpbGUgPSBmb3BlbihhY3R1YWxGaWxlbmFtZSwgInciKTsKLSAgICAgICAgaWYgKHJhd0ZpbGUp
Ci0gICAgICAgICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShyYXdGaWxlKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICBmaWxlID0gRmlsZVByaW50U3RyZWFtOjpvcGVuKGFjdHVhbEZpbGVu
YW1lLCAidyIpLmxlYWtQdHIoKTsKKyAgICAgICAgaWYgKCFmaWxlKQogICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSAlcyBmb3Igd3Jp
dGluZy5cbiIsIGFjdHVhbEZpbGVuYW1lKTsKICAgICB9CiAjZW5kaWYgLy8gREFUQV9MT0dfVE9f
RklMRQpJbmRleDogU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAxMzYzMTgp
CisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSwxNSBAQCBGaWxlUHJpbnRTdHJlYW06On5GaWxlUHJpbnRTdHJlYW0oKQogICAg
IGZjbG9zZShtX2ZpbGUpOwogfQogCitQYXNzT3duUHRyPEZpbGVQcmludFN0cmVhbT4gRmlsZVBy
aW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb25zdCBjaGFyKiBtb2RlKQor
eworICAgIEZJTEUqIGZpbGUgPSBmb3BlbihmaWxlbmFtZSwgbW9kZSk7CisgICAgaWYgKCFmaWxl
KQorICAgICAgICByZXR1cm4gUGFzc093blB0cjxGaWxlUHJpbnRTdHJlYW0+KCk7CisgICAgCisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlUHJpbnRTdHJlYW0oZmlsZSkpOworfQorCiB2b2lk
IEZpbGVQcmludFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJn
TGlzdCkKIHsKICAgICB2ZnByaW50ZihtX2ZpbGUsIGZvcm1hdCwgYXJnTGlzdCk7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93
dGYvRmlsZVByaW50U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgRmlsZVByaW50U3RyZWFtX2gKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC00MSw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBGaWxlUHJpbnRTdHJlYW0o
RklMRSosIEFkb3B0aW9uTW9kZSA9IEFkb3B0KTsKICAgICB2aXJ0dWFsIH5GaWxlUHJpbnRTdHJl
YW0oKTsKICAgICAKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWxlUHJpbnRTdHJlYW0+IG9wZW4o
Y29uc3QgY2hhciogZmlsZW5hbWUsIGNvbnN0IGNoYXIqIG1vZGUpOworICAgIAogICAgIEZJTEUq
IGZpbGUoKSB7IHJldHVybiBtX2ZpbGU7IH0KICAgICAKICAgICB2b2lkIHZwcmludGYoY29uc3Qg
Y2hhciogZm9ybWF0LCB2YV9saXN0KSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAwKTsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvV1RG
L3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDExICsxMjgsMjEg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gc2VnbWVudEZvcihpbmRleCkt
PmF0KHN1YnNjcmlwdEZvcihpbmRleCkpOwogICAgICAgICB9CiAKKyAgICAgICAgY29uc3QgVCYg
YXQoc2l6ZV90IGluZGV4KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29u
c3RfY2FzdDxTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5Pio+
KHRoaXMpLT5hdChpbmRleCk7CisgICAgICAgIH0KKwogICAgICAgICBUJiBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKICAg
ICAgICAgfQogCisgICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgICAgICB9CisK
ICAgICAgICAgVCYgbGFzdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhdChzaXpl
KCkgLSAxKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAJKHJldmlzaW9u
IDEzNjMxOCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsNiArOTIsMTIgQEAgQ1N0cmluZyBTdHJpbmdQcmludFN0cmVhbTo6dG9D
U3RyaW5nKCkKICAgICByZXR1cm4gQ1N0cmluZyhtX2J1ZmZlciwgbV9uZXh0KTsKIH0KIAordm9p
ZCBTdHJpbmdQcmludFN0cmVhbTo6cmVzZXQoKQoreworICAgIG1fbmV4dCA9IDA7CisgICAgbV9i
dWZmZXJbMF0gPSAwOworfQorCiB2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjppbmNyZWFzZVNpemUo
c2l6ZV90IG5ld1NpemUpCiB7CiAgICAgQVNTRVJUKG5ld1NpemUgPiBtX3NpemUpOwpJbmRleDog
U291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQs
IHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApOwogICAgIAogICAgIENTdHJpbmcg
dG9DU3RyaW5nKCk7CisgICAgdm9pZCByZXNldCgpOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlYXNlU2l6ZShzaXplX3QpOwpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAko
cmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MTIsNiArOTEyLDExIEBAIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4
KGNvbnN0IExDaGFyKiBzdHIKICAgICByZXR1cm4gZnJvbVVURjgoc3RyaW5nLCBzdHJsZW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nKSkpOwogfQogCitTdHJpbmcgU3RyaW5n
Ojpmcm9tVVRGOChjb25zdCBDU3RyaW5nJiBzKQoreworICAgIHJldHVybiBmcm9tVVRGOChzLmRh
dGEoKSk7Cit9CisKIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNv
bnN0IExDaGFyKiBzdHJpbmcsIHNpemVfdCBzaXplKQogewogICAgIFN0cmluZyB1dGY4ID0gZnJv
bVVURjgoc3RyaW5nLCBzaXplKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNp
b24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQwLDYgKzQ0MCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hhciopOwogICAgIHN0YXRpYyBTdHJp
bmcgZnJvbVVURjgoY29uc3QgY2hhciogcywgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZnJvbVVU
RjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9OwogICAgIHN0
YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogcykgeyByZXR1cm4gZnJvbVVURjgocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpKTsgfTsKKyAgICBzdGF0aWMgU3RyaW5nIGZy
b21VVEY4KGNvbnN0IENTdHJpbmcmKTsKIAogICAgIC8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIHBh
c3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwgYmFjayB0byBMYXRpbi0xIGlm
IHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04LgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IExDaGFyKiwg
c2l6ZV90KTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNjMxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhYmxlIHRvIHJlcG9ydCBwcm9maWxpbmcg
ZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIElSIGR1bXBzIGFuZCBkaXNhc3NlbWJseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0b29sIHRo
YXQgYWxsb3dzIHlvdSB0byBncm9rIHRoZSBvdXRwdXQgZnJvbSBKU0MncyBuZXcgUEJQIChQZXIg
Qnl0ZWNvZGUKKyAgICAgICAgUHJvZmlsZXIpLiBDdXJyZW50bHksIHRoaXMgc3RpbGwgZ2V0cyBj
b25mdXNlZCBhIGJpdCBhYm91dCB0aGUgZXhlY3V0aW9uIGNvdW50cworICAgICAgICBvZiBhIG1l
dGhvZCBydW5uaW5nIHN0YW5kYWxvbmUgdmVyc3VzIGEgbWV0aG9kIHJ1bm5pbmcgaW5saW5lZCwg
YnV0IG90aGVyIHRoYW4KKyAgICAgICAgdGhhdCwgaXQncyBwcmV0dHkgY29vbC4gU2VlIHRoZSBh
dHRhY2hlZCAic2FtcGxpbmcgcHJvZmlsaW5nIHNlc3Npb24iIGF0dGFjaGVkIHRvCisgICAgICAg
IHRoZSBidWcgdG8gc2VlIGl0IGluIGFjdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvZGlzcGxh
eS1wYnAtb3V0cHV0OiBBZGRlZC4KKwogMjAxMi0xMi0wMSAgWmFuIERvYmVyc2VrICA8emFuZG9i
ZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFtYdmZiRHJpdmVyXSBYdmZiRHJpdmVyVGVzdC50
ZXN0X25leHRfZnJlZV9kaXNwbGF5IGlzIGZsYWt5IG9uIGJ1aWxkZXJzIHVzaW5nIFh2ZmJEcml2
ZXIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wYnAtb3V0cHV0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wYnAtb3V0cHV0CShyZXZpc2lvbiAwKQorKysgVG9vbHMv
U2NyaXB0cy9kaXNwbGF5LXBicC1vdXRwdXQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAyIEBA
CisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgJ3J1YnlnZW1zJworCityZXF1aXJlICdqc29uJworcmVxdWlyZSAncmVh
ZGxpbmUnCisKK2NsYXNzIEJ5dGVjb2RlCisgICAgYXR0cl9hY2Nlc3NvciA6Ynl0ZWNvZGVJbmRl
eCwgOmRlc2NyaXB0aW9uLCA6dG9wQ291bnRzCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoYnl0
ZWNvZGVJbmRleCwgZGVzY3JpcHRpb24pCisgICAgICAgIEBieXRlY29kZUluZGV4ID0gYnl0ZWNv
ZGVJbmRleAorICAgICAgICBAZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgorICAgICAgICBAdG9w
Q291bnRzID0gW10KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkVG9wQ291bnQoY291bnQpCisg
ICAgICAgIEB0b3BDb3VudHMgPDwgY291bnQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdG90YWxF
eGVjdXRpb25Db3VudAorICAgICAgICBzdW0gPSAwCisgICAgICAgIEB0b3BDb3VudHMuZWFjaCB7
CisgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAgIHN1bSArPSB2YWx1ZS5jb3VudAor
ICAgICAgICB9CisgICAgICAgIHN1bQorICAgIGVuZAorICAgIAorICAgIGRlZiBleGVjdXRpb25D
b3VudChlbmdpbmUpCisgICAgICAgIHN1bSA9IDAKKyAgICAgICAgQHRvcENvdW50cy5lYWNoIHsK
KyAgICAgICAgICAgIHwgdmFsdWUgfAorICAgICAgICAgICAgaWYgdmFsdWUuZW5naW5lID09IGVu
Z2luZQorICAgICAgICAgICAgICAgIHN1bSArPSB2YWx1ZS5jb3VudAorICAgICAgICAgICAgZW5k
CisgICAgICAgIH0KKyAgICAgICAgc3VtCisgICAgZW5kCitlbmQKKworY2xhc3MgQnl0ZWNvZGVz
CisgICAgYXR0cl9hY2Nlc3NvciA6aGFzaAorICAgIGluY2x1ZGUgRW51bWVyYWJsZQorICAgIAor
ICAgIGRlZiBpbml0aWFsaXplKGpzb24pCisgICAgICAgIEBoYXNoID0ganNvblsiaGFzaCJdLnRv
X3MKKyAgICAgICAgQGJ5dGVjb2RlID0ge30KKyAgICAgICAganNvblsiYnl0ZWNvZGUiXS5lYWNo
IHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8CisgICAgICAgICAgICBpbmRleCA9IHN1Ykpzb25b
ImJ5dGVjb2RlSW5kZXgiXS50b19pCisgICAgICAgICAgICBAYnl0ZWNvZGVbaW5kZXhdID0gQnl0
ZWNvZGUubmV3KGluZGV4LCBzdWJKc29uWyJkZXNjcmlwdGlvbiJdLnRvX3MpCisgICAgICAgIH0K
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgZWFjaAorICAgICAgICBAYnl0ZWNvZGUudmFsdWVzLnNv
cnR7fGEsIGJ8IGEuYnl0ZWNvZGVJbmRleCA8PT4gYi5ieXRlY29kZUluZGV4fS5lYWNoIHsKKyAg
ICAgICAgICAgIHwgdmFsdWUgfAorICAgICAgICAgICAgeWllbGQgdmFsdWUKKyAgICAgICAgfQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBieXRlY29kZShieXRlY29kZUluZGV4KQorICAgICAgICBA
Ynl0ZWNvZGVbYnl0ZWNvZGVJbmRleF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdG90YWxNYXhF
eGVjdXRpb25Db3VudAorICAgICAgICBtYXggPSAwCisgICAgICAgIEBieXRlY29kZS5lYWNoX3Zh
bHVlIHsKKyAgICAgICAgICAgIHwgYnl0ZWNvZGUgfAorICAgICAgICAgICAgbWF4ID0gW21heCwg
Ynl0ZWNvZGUudG90YWxFeGVjdXRpb25Db3VudF0ubWF4CisgICAgICAgIH0KKyAgICAgICAgbWF4
CisgICAgZW5kCisgICAgCisgICAgZGVmIG1heEV4ZWN1dGlvbkNvdW50KGVuZ2luZSkKKyAgICAg
ICAgbWF4ID0gMAorICAgICAgICBAYnl0ZWNvZGUuZWFjaF92YWx1ZSB7CisgICAgICAgICAgICB8
IGJ5dGVjb2RlIHwKKyAgICAgICAgICAgIG1heCA9IFttYXgsIGJ5dGVjb2RlLmV4ZWN1dGlvbkNv
dW50KGVuZ2luZSldLm1heAorICAgICAgICB9CisgICAgICAgIG1heAorICAgIGVuZAorZW5kCisK
K2RlZiBvcmlnaW5TdGFja0Zyb21KU09OKGpzb24pCisgICAganNvbi5tYXAgeworICAgICAgICB8
IHN1Ykpzb24gfAorICAgICAgICAkYnl0ZWNvZGVzW3N1Ykpzb25bImJ5dGVjb2Rlc0lEIl0udG9f
aV0uYnl0ZWNvZGUoc3ViSnNvblsiYnl0ZWNvZGVJbmRleCJdLnRvX2kpCisgICAgfQorZW5kCisK
K2NsYXNzIENvbXBpbGVkQnl0ZWNvZGUKKyAgICBhdHRyX2FjY2Vzc29yIDpvcmlnaW4sIDpkZXNj
cmlwdGlvbgorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGpzb24pCisgICAgICAgIEBvcmlnaW4g
PSBvcmlnaW5TdGFja0Zyb21KU09OKGpzb25bIm9yaWdpbiJdKQorICAgICAgICBAZGVzY3JpcHRp
b24gPSBqc29uWyJkZXNjcmlwdGlvbiJdLnRvX3MKKyAgICBlbmQKK2VuZAorCitjbGFzcyBFeGVj
dXRpb25Db3VudGVyCisgICAgYXR0cl9hY2Nlc3NvciA6b3JpZ2luLCA6ZW5naW5lLCA6Y291bnQK
KyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShvcmlnaW4sIGVuZ2luZSwgY291bnQpCisgICAgICAg
IEBvcmlnaW4gPSBvcmlnaW4KKyAgICAgICAgQGVuZ2luZSA9IGVuZ2luZQorICAgICAgICBAY291
bnQgPSBjb3VudAorICAgIGVuZAorZW5kCisKK2NsYXNzIENvbXBpbGF0aW9uCisgICAgYXR0cl9h
Y2Nlc3NvciA6Ynl0ZWNvZGUsIDplbmdpbmUsIDpkZXNjcmlwdGlvbnMsIDpjb3VudGVycworICAg
IAorICAgIGRlZiBpbml0aWFsaXplKGpzb24pCisgICAgICAgIEBieXRlY29kZSA9ICRieXRlY29k
ZXNbanNvblsiYnl0ZWNvZGVzSUQiXS50b19pXQorICAgICAgICBAZW5naW5lID0ganNvblsiY29t
cGlsYXRpb25LaW5kIl0KKyAgICAgICAgQGRlc2NyaXB0aW9ucyA9IGpzb25bImRlc2NyaXB0aW9u
cyJdLm1hcCB7CisgICAgICAgICAgICB8IHN1Ykpzb24gfAorICAgICAgICAgICAgQ29tcGlsZWRC
eXRlY29kZS5uZXcoc3ViSnNvbikKKyAgICAgICAgfQorICAgICAgICBAY291bnRlcnMgPSB7fQor
ICAgICAgICBqc29uWyJjb3VudGVycyJdLmVhY2ggeworICAgICAgICAgICAgfCBzdWJKc29uIHwK
KyAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdpblN0YWNrRnJvbUpTT04oc3ViSnNvblsib3JpZ2lu
Il0pCisgICAgICAgICAgICBjb3VudGVyID0gRXhlY3V0aW9uQ291bnRlci5uZXcob3JpZ2luLCBA
ZW5naW5lLCBzdWJKc29uWyJleGVjdXRpb25Db3VudCJdLnRvX2kpCisgICAgICAgICAgICBAY291
bnRlcnNbb3JpZ2luXSA9IGNvdW50ZXIKKyAgICAgICAgICAgIG9yaWdpblstMV0uYWRkVG9wQ291
bnQoY291bnRlcikKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKKyRqc29uID0gSlNPTjo6cGFy
c2UoSU86OnJlYWQoQVJHVlswXSkpCiskYnl0ZWNvZGVzID0gJGpzb25bImJ5dGVjb2RlcyJdLm1h
cCB7CisgICAgfCBzdWJKc29uIHwKKyAgICBCeXRlY29kZXMubmV3KHN1Ykpzb24pCit9CiskY29t
cGlsYXRpb25zID0gJGpzb25bImNvbXBpbGF0aW9ucyJdLm1hcCB7CisgICAgfCBzdWJKc29uIHwK
KyAgICBDb21waWxhdGlvbi5uZXcoc3ViSnNvbikKK30KKyRlbmdpbmVzID0gWyJCYXNlbGluZSIs
ICJERkciXQorCitkZWYgbHBhZChzdHIsY2hhcnMpCisgIGlmIHN0ci5sZW5ndGg+Y2hhcnMKKyAg
ICBzdHIKKyAgZWxzZQorICAgICIlI3tjaGFyc31zIiUoc3RyKQorICBlbmQKK2VuZAorCitkZWYg
cnBhZChzdHIsIGNoYXJzKQorICAgIHdoaWxlIHN0ci5sZW5ndGggPCBjaGFycworICAgICAgICBz
dHIgKz0gIiAiCisgICAgZW5kCisgICAgc3RyCitlbmQKKworZGVmIGNlbnRlcihzdHIsIGNoYXJz
KQorICAgIHdoaWxlIHN0ci5sZW5ndGggPCBjaGFycworICAgICAgICBzdHIgKz0gIiAiCisgICAg
ICAgIGlmIHN0ci5sZW5ndGggPCBjaGFycworICAgICAgICAgICAgc3RyID0gIiAiICsgc3RyCisg
ICAgICAgIGVuZAorICAgIGVuZAorICAgIHN0cgorZW5kCisKK2RlZiBtYXlCZUhhc2goaGFzaCkK
KyAgICBoYXNoID1+IC9eIy8gb3IgaGFzaC5zaXplID09IDYKK2VuZAorCitkZWYgZ2V0SGFzaCho
YXNoKQorICAgIGlmIGhhc2ggPX4gL14jLworICAgICAgICAkfi5wb3N0X21hdGNoCisgICAgZWxz
ZQorICAgICAgICBoYXNoCisgICAgZW5kCitlbmQKKworbW9kdWxlIENvbW1hbmRzCisgICAgZGVm
IHNlbGYuQ01EX2hlbHAKKyAgICAgICAgcHV0cyAic3VtbWFyeSAgICAgUHJpbnQgYSBzdW1tYXJ5
IG9mIGNvZGUgYmxvY2sgZXhlY3V0aW9uIHJhdGVzLiIKKyAgICAgICAgcHV0cyAiZGlzcGxheSAg
ICAgRGlzcGxheSBkZXRhaWxzIGZvciBhIGNvZGUgYmxvY2suIgorICAgICAgICBwdXRzICJoZWxw
ICAgICAgICBQcmludCB0aGlzIG1lc3NhZ2UuIgorICAgICAgICBwdXRzICJxdWl0ICAgICAgICBR
dWl0LiIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5DTURfcXVpdAorICAgICAgICBleGl0
IDAKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5DTURfc3VtbWFyeQorICAgICAgICBoYXNo
Q29scyA9IDE0CisgICAgICAgIGNvdW50Q29scyA9IDEwICogJGVuZ2luZXMuc2l6ZQorICAgICAg
ICAKKyAgICAgICAgcHV0cyhycGFkKCJDb2RlQmxvY2siLCBoYXNoQ29scykgKyAiICIgKyBycGFk
KCRlbmdpbmVzLmpvaW4oIi8iKSArICIgQ291bnRzIiwgY291bnRDb2xzKSkKKyAgICAgICAgJGJ5
dGVjb2Rlcy5zb3J0IHsKKyAgICAgICAgICAgIHwgYSwgYiB8CisgICAgICAgICAgICBiLnRvdGFs
TWF4RXhlY3V0aW9uQ291bnQgPD0+IGEudG90YWxNYXhFeGVjdXRpb25Db3VudAorICAgICAgICB9
LmVhY2ggeworICAgICAgICAgICAgfCBieXRlY29kZSB8CisgICAgICAgICAgICBwdXRzKGNlbnRl
cigiIyIgKyBieXRlY29kZS5oYXNoLCBoYXNoQ29scykgKyAiICIgKworICAgICAgICAgICAgICAg
ICBjZW50ZXIoJGVuZ2luZXMubWFwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVu
Z2luZSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGUubWF4RXhlY3V0aW9u
Q291bnQoZW5naW5lKS50b19zCisgICAgICAgICAgICAgICAgICAgICAgICB9LmpvaW4oIi8iKSwg
Y291bnRDb2xzKSkKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLkNNRF9k
aXNwbGF5KCphcmdzKQorICAgICAgICBjYXNlIGFyZ3MubGVuZ3RoCisgICAgICAgIHdoZW4gMQor
ICAgICAgICAgICAgaGFzaCA9IGFyZ3NbMF0KKyAgICAgICAgICAgIGVuZ2luZSA9ICJCYXNlbGlu
ZSIKKyAgICAgICAgICAgICRjb21waWxhdGlvbnMuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBj
b21waWxhdGlvbiB8CisgICAgICAgICAgICAgICAgbmV4dCBpZiBjb21waWxhdGlvbi5ieXRlY29k
ZS5oYXNoICE9IGhhc2gKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiBjb21w
aWxhdGlvbi5lbmdpbmUgPT0gIkRGRyIKKyAgICAgICAgICAgICAgICAgICAgZW5naW5lID0gIkRG
RyIKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgd2hlbiAyCisgICAgICAgICAgICBpZiBtYXlCZUhhc2goYXJnc1sw
XSkKKyAgICAgICAgICAgICAgICBoYXNoID0gYXJnc1swXQorICAgICAgICAgICAgICAgIGVuZ2lu
ZSA9IGFyZ3NbMV0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbmdpbmUgPSBh
cmdzWzBdCisgICAgICAgICAgICAgICAgaGFzaCA9IGFyZ3NbMV0KKyAgICAgICAgICAgIGVuZAor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwdXRzICJVc2FnZTogc3VtbWFyeSA8Y29kZSBibG9j
ayBoYXNoPiA8ZW5naW5lPiIKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKyAgICAg
ICAgCisgICAgICAgIGNvdW50Q29scyA9IDEwICogJGVuZ2luZXMuc2l6ZQorICAgICAgICAkY29t
cGlsYXRpb25zLmVhY2ggeworICAgICAgICAgICAgfCBjb21waWxhdGlvbiB8CisgICAgICAgICAg
ICBuZXh0IGlmIGNvbXBpbGF0aW9uLmJ5dGVjb2RlLmhhc2ggIT0gaGFzaAorICAgICAgICAgICAg
bmV4dCBpZiBjb21waWxhdGlvbi5lbmdpbmUgIT0gZW5naW5lCisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHB1dHMocnBhZCgkZW5naW5lcy5qb2luKCIvIikgKyAiIENvdW50cyIsIGNvdW50Q29s
cykgKyAiIERpc2Fzc2VtYmx5IGZvciAje2hhc2h9IGluICN7ZW5naW5lfSIpCisgICAgICAgICAg
ICBjb21waWxhdGlvbi5kZXNjcmlwdGlvbnMuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBkZXNj
cmlwdGlvbiB8CisgICAgICAgICAgICAgICAgbmV4dCBpZiBkZXNjcmlwdGlvbi5kZXNjcmlwdGlv
biA9fiAvQ291bnRFeGVjdXRpb25cKC8KKyAgICAgICAgICAgICAgICBpZiBkZXNjcmlwdGlvbi5v
cmlnaW4uZW1wdHk/CisgICAgICAgICAgICAgICAgICAgIGNvdW50c1N0cmluZyA9ICIiCisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjb3VudHNTdHJpbmcgPSAkZW5n
aW5lcy5tYXAgeworICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdpbmUgfAorICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb24ub3JpZ2luWy0xXS5leGVjdXRpb25Db3VudChlbmdp
bmUpCisgICAgICAgICAgICAgICAgICAgIH0uam9pbigiLyIpCisgICAgICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uZGVzY3JpcHRpb24uc3BsaXQoIlxuIikuZWFj
aCB7CisgICAgICAgICAgICAgICAgICAgIHwgbGluZSB8CisgICAgICAgICAgICAgICAgICAgIHB1
dHMoY2VudGVyKGNvdW50c1N0cmluZywgY291bnRDb2xzKSArICIgIiArIGxpbmUuY2hvbXApCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgZW5kCitlbmQK
KworZGVmIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQsIGFyZ3MpCisgICAgaWYgQ29tbWFuZHMubWV0
aG9kcy5maW5kX2luZGV4KCJDTURfI3tjb21tYW5kfSIpCisgICAgICAgIENvbW1hbmRzLnNlbmQo
IkNNRF8je2NvbW1hbmR9IiwgKmFyZ3MpCisgICAgZWxzZQorICAgICAgICBwdXRzICJJbnZhbGlk
IGNvbW1hbmQ6ICN7Y29tbWFuZH0iCisgICAgZW5kCitlbmQKKworZXhlY3V0ZUNvbW1hbmQoInN1
bW1hcnkiLCBbXSkKKword2hpbGUgY29tbWFuZExpbmUgPSBSZWFkbGluZS5yZWFkbGluZSgiPiAi
LCB0cnVlKQorICAgIGNvbW1hbmRBcnJheSA9IGNvbW1hbmRMaW5lLnNwbGl0CisgICAgZXhlY3V0
ZUNvbW1hbmQoY29tbWFuZEFycmF5WzBdLCBjb21tYW5kQXJyYXlbMS4uLTFdKQorZW5kCisKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wYnAtb3V0cHV0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
</data>
<flag name="commit-queue"
          id="193139"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177152</attachid>
            <date>2012-12-02 14:13:26 -0800</date>
            <delta_ts>2012-12-02 15:05:10 -0800</delta_ts>
            <desc>try to break fewer things</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>132190</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzOSBA
QAorMjAxMi0xMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHByb2ZpbGluZyB0byBKU0MsIGNh
bGxlZCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBUaGlzIHdpbGwgY291bnQKKyAg
ICAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgYnl0ZWNvZGUgZXhlY3V0ZXMgaW4gdmFy
aW91cyBlbmdpbmVzLCBhbmQgd2lsbCByZWNvcmQgYm90aAorICAgICAgICB0aGUgY291bnRzIGFu
ZCBhbGwgZGlzYXNzZW1ibHkgYW5kIGJ5dGVjb2RlIGR1bXBzLCBpbnRvIGEgZGF0YWJhc2UgdGhh
dCBjYW4gYmUgYXQgYW55CisgICAgICAgIHRpbWUgdHVybmVkIGludG8gZWl0aGVyIGEgSlMgb2Jq
ZWN0IHVzaW5nIGFueSBnbG9iYWwgb2JqZWN0IG9yIGdsb2JhbCBkYXRhIG9mIHlvdXIKKyAgICAg
ICAgY2hvaWNlLCBvciBjYW4gYmUgdHVybmVkIGludG8gYSBKU09OIHN0cmluZywgb3Igc2F2ZWQg
dG8gYSBmaWxlLgorICAgICAgICAKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHVzZSBvZiB0
aGlzIGlzIHRoZSBuZXcgJy1wIDxmaWxlPicgZmxhZyB0byB0aGUganNjIGNvbW1hbmQtbGluZS4K
KyAgICAgICAgCisgICAgICAgIFRoZSBQQlAgaXMgYWx3YXlzIGNvbXBpbGVkIGluIGFuZCBub3Jt
YWxseSBpbmN1cnMgbm8gZXhlY3V0aW9uIHRpbWUgY29zdCwgYnV0IGlzIG9ubHkKKyAgICAgICAg
YWN0aXZhdGVkIHdoZW4geW91IGNyZWF0ZSBhIFBCUDo6RGF0YWJhc2UgYW5kIGluc3RhbGwgaXQg
aW4KKyAgICAgICAgSlNHbG9iYWxEYXRhOjptX3BlckJ5dGVjb2RlUHJvZmlsZXIuIEZyb20gdGhh
dCBwb2ludCBvbiwgYWxsIGNvZGUgYmxvY2tzIHdpbGwgYmUKKyAgICAgICAgY29tcGlsZWQgYWxv
bmcgd2l0aCBkaXNhc3NlbWJseSBhbmQgYnl0ZWNvZGUgZHVtcHMgc3RvcmVkIGludG8gdGhlIFBC
UDo6RGF0YWJhc2UsIGFuZAorICAgICAgICBhbGwgY29kZSBibG9ja3Mgd2lsbCBoYXZlIGV4ZWN1
dGlvbiBjb3VudHMsIHdoaWNoIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuCisgICAg
ICAgIFRoZSBkYXRhYmFzZSB3aWxsIGNvbnRpbnVlIHRvIGtlZXAgaW5mb3JtYXRpb24gYWJvdXQg
Y29kZSBibG9ja3MgYWxpdmUgZXZlbiBhZnRlciB0aGV5CisgICAgICAgIGFyZSBvdGhlcndpc2Ug
R0MnZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY3VycmVudGx5IHN0aWxsIGhhcyBzb21lIGds
aXRjaGVzLCBsaWtlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBjb3VudHMgZXhlY3V0aW9ucworICAg
ICAgICBpbiB0aGUgSklUcy4gRG9pbmcgZXhlY3V0aW9uIGNvdW50aW5nIGluIHRoZSBMTEludCBt
aWdodCByZXF1aXJlIGEgYml0IG9mIGEgcmV0aGluaworICAgICAgICBhYm91dCBob3cgdGhlIGNv
dW50aW5nIGlzIGV4cHJlc3NlZCAtIGN1cnJlbnRseSBpdCBpcyBpbXBsaWNpdCBpbiBieXRlY29k
ZSwgc28gdGhlcmUKKyAgICAgICAgaXMgbm8gZWFzeSB3YXkgdG8gInR1cm4gaXQgb24iIGluIHRo
ZSBMTEludC4gQWxzbywgcmlnaHQgbm93IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uCisgICAgICAg
IHJlY29yZGVkIGFib3V0IE9TUiBleGl0cyBvciBvdXQtb2YtbGluZSBzdHVicy4gQnV0LCBldmVu
IHNvLCBpdCdzIHF1aXRlIGNvb2wsIGFuZAorICAgICAgICBnaXZlcyB5b3UgYSBwZWVrIGludG8g
d2hhdCBKU0MgaXMgZG9pbmcgdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGJlIHBvc3NpYmxlLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmJhc2VsaW5l
Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oOgorICAgICAgICAoSW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wKToKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpyZXBvcnRUb1Byb2Zp
bGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1bXBIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpEaXNhc3NlbWJsZXI6OmNyZWF0ZUR1bXBMaXN0KToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNz
ZW1ibGVyLmg6CisgICAgICAgIChEaXNhc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkRp
c2Fzc2VtYmxlcjo6RHVtcGVkT3A6OkR1bXBlZE9wKToKKyAgICAgICAgKER1bXBlZE9wKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFw
aCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoTm9k
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRXhlY3V0aW9uQ291bnRlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6ZXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OkpJVCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxl
ci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcCk6CisgICAgICAgIChK
U0M6OkpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcik6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6OmR1bXBIZWFkZXIpOgorICAgICAgICAoSlND
OjpKSVREaXNhc3NlbWJsZXI6OmZpcnN0U2xvd0xhYmVsKToKKyAgICAgICAgKEpTQzo6SklURGlz
YXNzZW1ibGVyOjpkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SklU
RGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SklURGlz
YXNzZW1ibGVyOjpyZXBvcnRJbnN0cnVjdGlvbnMpOgorICAgICAgICAqIGppdC9KSVREaXNhc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpJVERpc2Fzc2VtYmxlcik6CisgICAgICAgIChEdW1wZWRPcCk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGluZSk6
CisgICAgICAgIChDb21tYW5kTGluZSk6CisgICAgICAgIChwcmludFVzYWdlU3RhdGVtZW50KToK
KyAgICAgICAgKENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChqc2NtYWlu
KToKKyAgICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZS5jcHA6IEFkZGVkLgorICAgICAgICAo
UEJQKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZTo6dG9KUyk6CisgICAgICAgICogcHJv
ZmlsZXIvUEJQQnl0ZWNvZGUuaDogQWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoQnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2RlOjpCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlBCUDo6Qnl0ZWNvZGU6OmJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpQQlA6
OkJ5dGVjb2RlOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OlBCUDo6Z2V0Qnl0ZWNvZGVJ
bmRleEZvckJ5dGVjb2RlKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjpCeXRl
Y29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6fkJ5dGVjb2Rlcyk6CisgICAg
ICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjppbmRleEZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAg
ICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6Zm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6
OlBCUDo6Qnl0ZWNvZGVzOjpkdW1wKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OnRv
SlMpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oOiBBZGRlZC4KKyAgICAgICAg
KFBCUCk6CisgICAgICAgIChCeXRlY29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rl
czo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OmlkKToKKyAgICAgICAg
KEpTQzo6UEJQOjpCeXRlY29kZXM6Omhhc2gpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rl
czo6c2l6ZSk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjphdCk6CisgICAgICAgICog
cHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAg
ICAgIChKU0M6OlBCUDo6Q29tcGlsYXRpb246OkNvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6
UEJQOjpDb21waWxhdGlvbjo6fkNvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21w
aWxhdGlvbjo6YWRkRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGF0aW9u
OjpleGVjdXRpb25Db3VudGVyRm9yKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxhdGlvbjo6
dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChQQlApOgorICAgICAgICAoQ29tcGlsYXRpb24pOgorICAgICAgICAoSlNDOjpQQlA6OkNv
bXBpbGF0aW9uOjpieXRlY29kZXMpOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGF0aW9uOjpr
aW5kKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6Cisg
ICAgICAgIChXVEYpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRl
Y29kZTo6Q29tcGlsZWRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRl
Y29kZTo6fkNvbXBpbGVkQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQQlA6OkNvbXBpbGVkQnl0
ZWNvZGU6OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaDog
QWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoQ29tcGlsZWRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRlY29kZTo6b3JpZ2luU3RhY2spOgorICAgICAgICAo
SlNDOjpQQlA6OkNvbXBpbGVkQnl0ZWNvZGU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwcm9m
aWxlci9QQlBEYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEpT
Qzo6UEJQOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNl
Ojp+RGF0YWJhc2UpOgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjphZGRCeXRlY29kZXMp
OgorICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAg
ICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbik6CisgICAgICAgIChK
U0M6OlBCUDo6RGF0YWJhc2U6Om5ld0NvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpE
YXRhYmFzZTo6dG9KUyk6CisgICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OnRvSlNPTik6Cisg
ICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OnNhdmUpOgorICAgICAgICAqIHByb2ZpbGVyL1BC
UERhdGFiYXNlLmg6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKERhdGFiYXNlKToK
KyAgICAgICAgKiBwcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmg6IEFkZGVkLgorICAgICAg
ICAoUEJQKToKKyAgICAgICAgKEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpQQlA6
OkV4ZWN1dGlvbkNvdW50ZXI6OkV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpQQlA6
OkV4ZWN1dGlvbkNvdW50ZXI6OmFkZHJlc3MpOgorICAgICAgICAoSlNDOjpQQlA6OkV4ZWN1dGlv
bkNvdW50ZXI6OmNvdW50KToKKyAgICAgICAgKiBwcm9maWxlci9QQlBPcmlnaW4uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpPcmlnaW4pOgor
ICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6ZHVtcCk6CisgICAgICAgIChKU0M6OlBCUDo6T3Jp
Z2luOjp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBPcmlnaW4uaDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoUEJQKToKKyAgICAgICAgKE9yaWdpbik6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luOjpPcmlnaW4pOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6b3Bl
cmF0b3IhKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46OmJ5dGVjb2Rlcyk6CisgICAgICAg
IChKU0M6OlBCUDo6T3JpZ2luOjpieXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW46Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQ
OjpPcmlnaW46OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5IYXNoOjplcXVhbCk6
CisgICAgICAgIChPcmlnaW5IYXNoKToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcHJvZmls
ZXIvUEJQT3JpZ2luU3RhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luU3RhY2s6Ok9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6UEJQOjpP
cmlnaW5TdGFjazo6fk9yaWdpblN0YWNrKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFj
azo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6Omhhc2gpOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6
dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoUEJQKToKKyAgICAgICAgKE9yaWdpblN0YWNrKToKKyAgICAg
ICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2spOgorICAgICAgICAoSlNDOjpQ
QlA6Ok9yaWdpblN0YWNrOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0
YWNrOjpzaXplKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6ZnJvbUJvdHRvbSk6
CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OmZyb21Ub3ApOgorICAgICAgICAoSlND
OjpQQlA6Ok9yaWdpblN0YWNrOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChK
U0M6OlBCUDo6T3JpZ2luU3RhY2tIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmln
aW5TdGFja0hhc2g6OmVxdWFsKToKKyAgICAgICAgKE9yaWdpblN0YWNrSGFzaCk6CisgICAgICAg
IChXVEYpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4
ZWN1dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6fkpTR2xv
YmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0Mp
OgorCiAyMDEyLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29kZUJsb2NrIHNob3VsZCBiZSBhYmxlIHRvIGR1bXAgYnl0ZWNvZGUgdG8gc29tZXRoaW5n
IG90aGVyIHRoYW4gV1RGOjpkYXRhRmlsZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMjMgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwCiAgICAgcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwCiAKKyAgICBwcm9maWxlci9QQlBCeXRlY29kZS5jcHAK
KyAgICBwcm9maWxlci9QQlBCeXRlY29kZS5oCisgICAgcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNw
cAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRp
b24uY3BwCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAorICAgIHByb2ZpbGVyL1BCUENv
bXBpbGF0aW9uS2luZC5jcHAKKyAgICBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAorICAg
IHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwCisgICAgcHJvZmlsZXIvUEJQQ29tcGls
ZWRCeXRlY29kZS5oCisgICAgcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCisgICAgcHJvZmlsZXIv
UEJQRGF0YWJhc2UuaAorICAgIHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAorICAgIHBy
b2ZpbGVyL1BCUE9yaWdpbi5jcHAKKyAgICBwcm9maWxlci9QQlBPcmlnaW4uaAorICAgIHByb2Zp
bGVyL1BCUE9yaWdpblN0YWNrLmNwcAorICAgIHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmgKICAg
ICBwcm9maWxlci9Qcm9maWxlLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3Bw
CiAgICAgcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0
NzEsMjMgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL0NhbGxJZGVudGlmaWVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBCeXRlY29kZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBC
eXRlY29kZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVz
LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHAgXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBPcmlnaW4uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9y
aWdpblN0YWNrLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdp
blN0YWNrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miwy
MyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwIFwKICAgICBwYXJz
ZXIvUGFyc2VyLmNwcCBcCiAgICAgcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIFwKKyAg
ICBwcm9maWxlci9QQlBCeXRlY29kZS5jcHAgXAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmgg
XAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAgXAorICAgIHByb2ZpbGVyL1BCUEJ5dGVj
b2Rlcy5oIFwKKyAgICBwcm9maWxlci9QQlBDb21waWxhdGlvbi5jcHAgXAorICAgIHByb2ZpbGVy
L1BCUENvbXBpbGF0aW9uLmggXAorICAgIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHAg
XAorICAgIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oIFwKKyAgICBwcm9maWxlci9QQlBD
b21waWxlZEJ5dGVjb2RlLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5o
IFwKKyAgICBwcm9maWxlci9QQlBEYXRhYmFzZS5jcHAgXAorICAgIHByb2ZpbGVyL1BCUERhdGFi
YXNlLmggXAorICAgIHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaCBcCisgICAgcHJvZmls
ZXIvUEJQT3JpZ2luLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQT3JpZ2luLmggXAorICAgIHByb2Zp
bGVyL1BCUE9yaWdpblN0YWNrLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaCBc
CiAgICAgcHJvZmlsZXIvUHJvZmlsZS5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0
b3IuY3BwIFwKICAgICBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgcHVibGljOgogICAgICAgICA6
IG1faW50ZXJhY3RpdmUoZmFsc2UpCiAgICAgICAgICwgbV9kdW1wKGZhbHNlKQogICAgICAgICAs
IG1fZXhpdENvZGUoZmFsc2UpCisgICAgICAgICwgbV9wcm9maWxlKGZhbHNlKQogICAgIHsKICAg
ICAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAgICAgfQpAQCAtMTM1LDYgKzEzNiw4
IEBAIHB1YmxpYzoKICAgICBib29sIG1fZXhpdENvZGU7CiAgICAgVmVjdG9yPFNjcmlwdD4gbV9z
Y3JpcHRzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOworICAgIGJvb2wgbV9wcm9m
aWxlOworICAgIFN0cmluZyBtX3Byb2ZpbGVyT3V0cHV0OwogCiAgICAgdm9pZCBwYXJzZUFyZ3Vt
ZW50cyhpbnQsIGNoYXIqKik7CiB9OwpAQCAtNjQ5LDYgKzY1Miw3IEBAIHN0YXRpYyBOT19SRVRV
Uk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW4KICNpZiBIQVZFKFNJR05BTF9IKQogICAgIGZwcmlu
dGYoc3RkZXJyLCAiICAtcyAgICAgICAgIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4
aXQgb24gYSBjcmFzaCAoVW5peCBwbGF0Zm9ybXMgb25seSlcbiIpOwogI2VuZGlmCisgICAgZnBy
aW50ZihzdGRlcnIsICIgIC1wIDxmaWxlPiAgT3V0cHV0cyBwcm9maWxpbmcgZGF0YSB0byBhIGZp
bGVcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAteCAgICAgICAgIE91dHB1dCBleGl0IGNv
ZGUgYmVmb3JlIHRlcm1pbmF0aW5nXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAg
ICAgZnByaW50ZihzdGRlcnIsICIgIC0tb3B0aW9ucyAgICAgICAgICAgICAgICAgIER1bXBzIGFs
bCBKU0MgVk0gb3B0aW9ucyBhbmQgZXhpdHNcbiIpOwpAQCAtNjg3LDYgKzY5MSwxMyBAQCB2b2lk
IENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnCiAgICAgICAgICAgICBtX2R1bXAg
PSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFz
dHJjbXAoYXJnLCAiLXAiKSkgeworICAgICAgICAgICAgaWYgKCsraSA9PSBhcmdjKQorICAgICAg
ICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIG1fcHJvZmlsZSA9
IHRydWU7CisgICAgICAgICAgICBtX3Byb2ZpbGVyT3V0cHV0ID0gYXJndltpXTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1zIikp
IHsKICNpZiBIQVZFKFNJR05BTF9IKQogICAgICAgICAgICAgc2lnbmFsKFNJR0lMTCwgX2V4aXQp
OwpAQCAtNzUwLDYgKzc2MSw5IEBAIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxEYXRhLmdldCgpKTsKICAgICBpbnQgcmVzdWx0
OwogCisgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlKQorICAgICAgICBnbG9iYWxEYXRhLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIgPSBhZG9wdFB0cihuZXcgUEJQOjpEYXRhYmFzZSgqZ2xvYmFsRGF0
YSkpOworICAgIAogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0
OjpjcmVhdGUoKmdsb2JhbERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpnbG9i
YWxEYXRhLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgIGJvb2wgc3VjY2Vz
cyA9IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlv
bnMubV9kdW1wKTsKICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCkBA
IC03NTksNiArNzczLDExIEBAIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAog
ICAgIGlmIChvcHRpb25zLm1fZXhpdENvZGUpCiAgICAgICAgIHByaW50ZigianNjIGV4aXRpbmcg
JWRcbiIsIHJlc3VsdCk7CisgICAgCisgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlKSB7CisgICAg
ICAgIGlmICghZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5zYXZlKG9wdGlvbnMu
bV9wcm9maWxlck91dHB1dC51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiY291bGQgbm90IHNhdmUgcHJvZmlsZXIgb3V0cHV0LlxuIik7CisgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUyNiw2ICsxNTI2LDc0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHBy
b2ZpbGVyXFBCUEJ5dGVjb2RlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQnl0ZWNvZGUuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQnl0
ZWNvZGVzLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5ccHJvZmlsZXJcUEJQQnl0ZWNvZGVzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUENvbXBpbGF0aW9uLmNw
cCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cHJvZmlsZXJcUEJQQ29tcGlsYXRpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQ29tcGlsYXRpb25LaW5kLmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJv
ZmlsZXJcUEJQQ29tcGlsYXRpb25LaW5kLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxw
cm9maWxlclxQQlBDb21waWxlZEJ5dGVjb2RlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUERhdGFiYXNlLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmls
ZXJcUEJQRGF0YWJhc2UuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQRXhlY3V0aW9uQ291bnRlci5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBP
cmlnaW4uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxwcm9maWxlclxQQlBPcmlnaW4uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQT3JpZ2luU3RhY2suY3BwIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9m
aWxlclxQQlBPcmlnaW5TdGFjay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQcm9maWxlLmNwcCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM2MzE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMjcgQEAKIAkJMEZGNDI3NzEx
NTkyNzVENTAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZG
IC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovOyB9OwogCQkwRkY0Mjc3MjE1OTI3NUQ4MDA0
Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkYxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVH
bG9iYWxTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkY3MTY4QzE1QTNCMjM1MDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcxNjhBMTVBM0Iy
MzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcyOUE1MTY2QUQzNTEwMDBGNUJBMyAvKiBQQlBC
eXRlY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGNzI5OTMxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QUQxNjZBRDM1QzAwMEY1
QkEzIC8qIFBCUEJ5dGVjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5jcHAg
Ki87IH07CisJCTBGRjcyOUFFMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTQxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5jcHAgKi87IH07CisJCTBGRjcyOUFGMTY2QUQz
NUMwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29t
cGlsYXRpb24uY3BwICovOyB9OworCQkwRkY3MjlCMDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29t
cGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRjcyOTk4MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuY3Bw
ICovOyB9OworCQkwRkY3MjlCMTE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3
Mjk5QTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAgKi87IH07CisJ
CTBGRjcyOUIyMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVC
QTMgLyogUEJQRGF0YWJhc2UuY3BwICovOyB9OworCQkwRkY3MjlCMzE2NkFEMzVDMDAwRjVCQTMg
LyogUEJQT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwICovOyB9Owor
CQkwRkY3MjlCNDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTExNjZBRDM0NzAw
MEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjUxNjZBRDM1QzAw
MEY1QkEzIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTU3NDJGNjMwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwICovOyB9
OworCQkwRkY3MjlCNjE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NDBFMUM0
RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgKi87IH07CisJCTBGRjcyOUI3MTY2
QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODM1NDBEQTQzQjQ0MDBCQzgzRjMgLyogUHJvZmls
ZU5vZGUuY3BwICovOyB9OworCQkwRkY3MjlCODE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgz
MkUwREE0MkNBRDAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjkxNjZB
RDM2MDAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVj
b2Rlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGRjcyOUJBMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTcxNjZBRDM0NzAwMEY1
QkEzIC8qIFBCUENvbXBpbGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGF0
aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGNzI5OTkxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcyOUJDMTY2QUQz
NjAwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5QjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
Q29tcGlsZWRCeXRlY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OUQxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUEV4
ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBFeGVjdXRpb25Db3VudGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5
QkYxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTAxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9y
aWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGRjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTIxNjZBRDM0NzAwMEY1
QkEzIC8qIFBCUE9yaWdpblN0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZGOTIyRDQxNEY0NkI0MTAwNDFBMjRFIC8qIExMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLzsgfTsKIAkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRCMTRF
RjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi87IH07CiAJCTBGRkZDOTU4MTRFRjkw
QTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1
MSwxMSArNTcyLDcgQEAKIAkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5n
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMw
M0ZFODBFNkE3MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLzsgfTsKIAkJOTMzNUYy
NEQxMkU2NzY1QjAwMkI1NTUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzNDVBODcxMkQ4MzhDNDAw
MzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwICovOyB9OwogCQk5NTM0QUFGQjBF
NUI3QTk2MDBCOEE0NUIgLyogSlNQcm9maWxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MkM2M0FDMEU0Nzc3RDYwMEMxMzkzNiAvKiBK
U1Byb2ZpbGVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTk1NzQyRjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NzQyRjYzMEREMTFG
NUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLzsgfTsKLQkJOTVBQjgzNDIwREE0MzIyNTAwQkM4
M0YzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1QUI4MzJFMERBNDJDQUQwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgKi87IH07
Ci0JCTk1QUI4MzU2MERBNDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODM1NDBEQTQzQjQ0MDBC
QzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwICovOyB9OwotCQk5NUNENDU3NjBFMUM0RkREMDA4NTM1
OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVy
YXRvci5jcHAgKi87IH07Ci0JCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAv
KiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1RTNC
QzA1MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFM0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8q
IENhbGxJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1OTg4
QkE5MEU0NzdCRUMwMEQyOEQ0RCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgKi87IH07CiAJCTk2
MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyog
TGFiZWxTY29wZS5oICovOyB9OwpAQCAtMTA3OSw2ICsxMDk2LDIzIEBACiAJCTBGRjQyNzZFMTU5
Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUds
b2JhbFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xv
YmFsU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjcxNjhBMTVBM0Iy
MzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkY3Mjk5MjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQnl0ZWNvZGUuY3BwOyBwYXRoID0gcHJvZmlsZXIv
UEJQQnl0ZWNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5MzE2
NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUEJQQnl0ZWNvZGUuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
QlBCeXRlY29kZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQ
Qnl0ZWNvZGVzLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk1MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRl
Y29kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQnl0ZWNvZGVzLmg7
IHBhdGggPSBwcm9maWxlci9QQlBCeXRlY29kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uLmNwcDsgcGF0
aCA9IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGNzI5OTcxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uLmg7IHBhdGggPSBwcm9m
aWxlci9QQlBDb21waWxhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3
Mjk5ODE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uS2luZC5jcHA7IHBhdGgg
PSBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUENvbXBpbGF0aW9uS2luZC5oOyBw
YXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRjcyOTlBMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUENvbXBpbGVkQnl0
ZWNvZGUuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBD
b21waWxlZEJ5dGVjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUENv
bXBpbGVkQnl0ZWNvZGUuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8q
IFBCUERhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBC
UERhdGFiYXNlLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUERhdGFiYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERhdGFi
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUERhdGFiYXNlLmg7IHBh
dGggPSBwcm9maWxlci9QQlBEYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291bnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBFeGVjdXRpb25Db3VudGVyLmg7IHBhdGgg
PSBwcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQT3JpZ2luLmNwcDsgcGF0aCA9IHByb2Zp
bGVyL1BCUE9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOUEw
MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUEJQT3JpZ2luLmg7IHBhdGggPSBwcm9maWxlci9QQlBPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9y
aWdpblN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBCUE9y
aWdpblN0YWNrLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9y
aWdpblN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUE9yaWdpblN0
YWNrLmg7IHBhdGggPSBwcm9maWxlci9QQlBPcmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
Qzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUxNiw2ICsyNTUwLDIzIEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTk1RTNCQzA0MEUxQUU2ODIwMEIyRDFD
MSAvKiBDYWxsSWRlbnRpZmllci5oICovLAorCQkJCTBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAv
KiBQQlBCeXRlY29kZS5jcHAgKi8sCisJCQkJMEZGNzI5OTMxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UEJ5dGVjb2RlLmggKi8sCisJCQkJMEZGNzI5OTQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVj
b2Rlcy5jcHAgKi8sCisJCQkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rl
cy5oICovLAorCQkJCTBGRjcyOTk2MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5j
cHAgKi8sCisJCQkJMEZGNzI5OTcxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmgg
Ki8sCisJCQkJMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5j
cHAgKi8sCisJCQkJMEZGNzI5OTkxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2lu
ZC5oICovLAorCQkJCTBGRjcyOTlBMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVj
b2RlLmNwcCAqLywKKwkJCQkwRkY3Mjk5QjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsZWRC
eXRlY29kZS5oICovLAorCQkJCTBGRjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBEYXRhYmFz
ZS5jcHAgKi8sCisJCQkJMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUERhdGFiYXNlLmgg
Ki8sCisJCQkJMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50ZXIu
aCAqLywKKwkJCQkwRkY3Mjk5RjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luLmNwcCAqLywK
KwkJCQkwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luLmggKi8sCisJCQkJMEZG
NzI5QTExNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpblN0YWNrLmNwcCAqLywKKwkJCQkwRkY3
MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suaCAqLywKIAkJCQk5NTc0MkY2
MzBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgKi8sCiAJCQkJOTU3NDJGNjQwREQxMUY1
QTAwMDkxN0ZCIC8qIFByb2ZpbGUuaCAqLywKIAkJCQk5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUg
LyogUHJvZmlsZUdlbmVyYXRvci5jcHAgKi8sCkBAIC0zMDc3LDYgKzMxMjgsMTUgQEAKIAkJCQkw
RkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hh
c2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2Rl
QmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QTUxNjZBRDM1MTAw
MEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCOTE2NkFE
MzYwMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlC
QTE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRjcyOUJCMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRjcyOUJDMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVj
b2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCRDE2NkFEMzYwMDAwRjVCQTMgLyogUEJQ
RGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAv
KiBQQlBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCRjE2NkFE
MzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlDMDE2
NkFEMzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzUz
NCwxMCArMzU5NCw2IEBACiAJCQkJMTQ4RjIxQkMxMDdFQzU0RDAwNDJFQzJDIC8qIFBhcnNlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2Vy
QXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFODYxNDFGM0ZGMTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1NzQyRjY1MEREMTFGNUEw
MDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1Q0Q0NTc2MEUxQzRG
REQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1
QUI4MzU2MERBNDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk5NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNzEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVy
dHlOYW1lQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUw
NDQ2IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2NjUsNiArMzcyMSwx
OCBAQAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29kZU9yaWdpbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlBRDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQnl0
ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8q
IFBCUEJ5dGVjb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlBRjE2NkFEMzVDMDAw
RjVCQTMgLyogUEJQQ29tcGlsYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjAx
NjZBRDM1QzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkY3MjlCMTE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMjE2NkFEMzVDMDAwRjVCQTMgLyogUEJQRGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjMxNjZBRDM1QzAwMEY1QkEzIC8qIFBC
UE9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNDE2NkFEMzVDMDAwRjVCQTMg
LyogUEJQT3JpZ2luU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjUxNjZBRDM1
QzAwMEY1QkEzIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjYxNjZB
RDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZGNzI5QjcxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGRjcyOUI4MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxNyw2ICsxOTE3LDkgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogCiBDb2RlQmxvY2s6On5Db2RlQmxv
Y2soKQogeworICAgIGlmIChtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKKyAg
ICAgICAgbV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5vdGlmeURlc3RydWN0
aW9uKHRoaXMpOworICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIFJlbW92ZSBteXNl
bGYgZnJvbSB0aGUgc2V0IG9mIERGRyBjb2RlIGJsb2Nrcy4gTm90ZSB0aGF0IEkgbWF5IG5vdCBi
ZSBpbiB0aGlzIHNldAogICAgIC8vIChiZWNhdXNlIEknbSBub3QgYSBERkcgY29kZSBibG9jayks
IGluIHdoaWNoIGNhc2UgdGhpcyBpcyBhIG5vLW9wIGFueXdheS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMTYwLDYgKzE2MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgQ29kZUJsb2NrKiBi
YXNlbGluZVZlcnNpb24oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRv
ciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTcz
LDYgKzc0LDExIEBAIENvZGVCbG9ja0hhc2ggSW5saW5lQ2FsbEZyYW1lOjpoYXNoKCkgY28KICAg
ICByZXR1cm4gZXhlY3V0YWJsZS0+aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7CiB9CiAK
K0NvZGVCbG9jayogSW5saW5lQ2FsbEZyYW1lOjpiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlLmdldCgp
KS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOworfQorCiB2b2lk
IElubGluZUNhbGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91
dC5wcmludCgiIyIsIGhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRhYmxlLmdldCgpKSwg
IiwgYmMjIiwgY2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHNwZWNpYWxpemF0aW9uS2luZCgp
LCAiPiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDggQEAgc3RydWN0IElu
bGluZUNhbGxGcmFtZSB7CiAgICAgCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7CiAg
ICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaygpIGNvbnN0OworICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzYzMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzI0LDYgKzE3MjQsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1
dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgSW5saW5lU3RhcnQ6
CiAgICAgY2FzZSBOb3A6CisgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICAgICAgbm9kZS5z
ZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA4LDYgKzIxMDgsMTIgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBtX2N1cnJlbnRJbmRleDsKICAgICAgICAg
bV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb247IC8vIFNvbWUgbWV0aG9k
cyB3YW50IHRvIHVzZSB0aGlzLCBhbmQgd2UnZCByYXRoZXIgbm90IHRocmVhZCBpdCB0aHJvdWdo
IGNhbGxzLgogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICAgICAgCisgICAgICAgIGlm
IChtX2dyYXBoLm1fY29tcGlsYXRpb24pIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQ291bnRF
eGVjdXRpb24sIE9wSW5mbyhtX2dyYXBoLm1fY29tcGlsYXRpb24tPmV4ZWN1dGlvbkNvdW50ZXJG
b3IoCisgICAgICAgICAgICAgICAgUEJQOjpPcmlnaW5TdGFjaygqbV9nbG9iYWxEYXRhLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIsIG1fY29kZUJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpKSkpKTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogCiAgICAg
ICAgIC8vID09PSBGdW5jdGlvbiBlbnRyeSBvcGNvZGVzID09PQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTM2MzE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MiwxMCArNDIsNTMgQEAgRGlzYXNzZW1ibGVyOjpEaXNhc3NlbWJsZXIoR3Jh
cGgmIGdyYXBoKQogCiB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogewotICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLmNvbXB1
dGVJZk5lY2Vzc2FyeShtX2dyYXBoKTsKKyAgICBWZWN0b3I8RHVtcGVkT3A+IG9wcyA9IGNyZWF0
ZUR1bXBMaXN0KGxpbmtCdWZmZXIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcHMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChvcHNbaV0udGV4dCk7Cit9CisKK3ZvaWQg
RGlzYXNzZW1ibGVyOjpkdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgZHVtcChX
VEY6OmRhdGFGaWxlKCksIGxpbmtCdWZmZXIpOworfQorCit2b2lkIERpc2Fzc2VtYmxlcjo6cmVw
b3J0VG9Qcm9maWxlcihQQlA6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiwgTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKK3sKKyAgICBWZWN0b3I8RHVtcGVkT3A+IG9wcyA9IGNyZWF0ZUR1bXBMaXN0
KGxpbmtCdWZmZXIpOwogICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgUEJQOjpPcmlnaW5TdGFjayBzdGFjazsKKyAgICAgICAgCisg
ICAgICAgIGlmIChvcHNbaV0uY29kZU9yaWdpbi5pc1NldCgpKQorICAgICAgICAgICAgc3RhY2sg
PSBQQlA6Ok9yaWdpblN0YWNrKCptX2dyYXBoLm1fZ2xvYmFsRGF0YS5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXIsIG1fZ3JhcGgubV9jb2RlQmxvY2ssIG9wc1tpXS5jb2RlT3JpZ2luKTsKKyAgICAgICAg
CisgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNv
ZGUoc3RhY2ssIG9wc1tpXS50ZXh0KSk7CisgICAgfQorfQorCit2b2lkIERpc2Fzc2VtYmxlcjo6
ZHVtcEhlYWRlcihQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQorewog
ICAgIG91dC5wcmludCgiR2VuZXJhdGVkIERGRyBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSwgIiwgaW5zdHJ1
Y3Rpb24gY291bnQgPSAiLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCks
ICI6XG4iKTsKICAgICBvdXQucHJpbnQoIiAgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtC
dWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIq
PihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAi
KTpcbiIpOworfQorCit2b2lkIERpc2Fzc2VtYmxlcjo6YXBwZW5kKFZlY3RvcjxEaXNhc3NlbWJs
ZXI6OkR1bXBlZE9wPiYgcmVzdWx0LCBTdHJpbmdQcmludFN0cmVhbSYgb3V0LCBDb2RlT3JpZ2lu
JiBwcmV2aW91c09yaWdpbikKK3sKKyAgICByZXN1bHQuYXBwZW5kKER1bXBlZE9wKHByZXZpb3Vz
T3JpZ2luLCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICBwcmV2aW91c09yaWdpbiA9IENvZGVPcmln
aW4oKTsKKyAgICBvdXQucmVzZXQoKTsKK30KKworVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVk
T3A+IERpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikK
K3sKKyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgVmVjdG9yPER1bXBlZE9wPiByZXN1
bHQ7CisgICAgCisgICAgQ29kZU9yaWdpbiBwcmV2aW91c09yaWdpbiA9IENvZGVPcmlnaW4oKTsK
KyAgICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0
LCBwcmV2aW91c09yaWdpbik7CisgICAgCisgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMuY29tcHV0
ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOwogICAgIAogICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIg
ICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVByZWZpeCA9ICIgICAgICAgICI7CkBA
IC01Nyw3ICsxMDAsOSBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0
CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZHVt
cERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZpb3Vz
TGFiZWwsIG1fbGFiZWxGb3JCbG9ja0luZGV4W2Jsb2NrSW5kZXhdLCBsYXN0Tm9kZUluZGV4KTsK
KyAgICAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAgICAgICAgIG1f
Z3JhcGguZHVtcEJsb2NrSGVhZGVyKG91dCwgcHJlZml4LCBibG9ja0luZGV4LCBHcmFwaDo6RHVt
cExpdmVQaGlzT25seSk7CisgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmln
aW4pOwogICAgICAgICBOb2RlSW5kZXggbGFzdE5vZGVJbmRleEZvckRpc2Fzc2VtYmx5ID0gYmxv
Y2stPmF0KDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgaWYgKCFtX2dyYXBoW2Jsb2NrLT5hdChpKV0ud2lsbEhhdmVD
b2RlR2VuT3JPU1IoKSAmJiAhT3B0aW9uczo6c2hvd0FsbERGR05vZGVzKCkpCkBAIC03NiwyMCAr
MTIxLDI1IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQKICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudExhYmVsID0gbV9lbmRPZk1haW5QYXRoOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgs
IGxpbmtCdWZmZXIsIHByZXZpb3VzTGFiZWwsIGN1cnJlbnRMYWJlbCwgbGFzdE5vZGVJbmRleEZv
ckRpc2Fzc2VtYmx5KTsKLSAgICAgICAgICAgIG1fZ3JhcGguZHVtcENvZGVPcmlnaW4ob3V0LCBw
cmVmaXgsIGxhc3ROb2RlSW5kZXgsIGJsb2NrLT5hdChpKSk7CisgICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKKyAgICAgICAgICAgIHByZXZpb3VzT3JpZ2lu
ID0gbV9ncmFwaFtibG9jay0+YXQoaSldLmNvZGVPcmlnaW47CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5kdW1wQ29kZU9yaWdpbihvdXQsIHByZWZpeCwgbGFzdE5vZGVJbmRleCwgYmxvY2stPmF0
KGkpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmln
aW4pOworICAgICAgICAgICAgICAgIHByZXZpb3VzT3JpZ2luID0gbV9ncmFwaFtibG9jay0+YXQo
aSldLmNvZGVPcmlnaW47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
b3V0LCBwcmVmaXgsIGJsb2NrLT5hdChpKSk7CiAgICAgICAgICAgICBsYXN0Tm9kZUluZGV4ID0g
YmxvY2stPmF0KGkpOwogICAgICAgICAgICAgbGFzdE5vZGVJbmRleEZvckRpc2Fzc2VtYmx5ID0g
YmxvY2stPmF0KGkpOwogICAgICAgICB9CiAgICAgfQogICAgIGR1bXBEaXNhc3NlbWJseShvdXQs
IGRpc2Fzc2VtYmx5UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2aW91c0xhYmVsLCBtX2VuZE9mTWFp
blBhdGgsIGxhc3ROb2RlSW5kZXgpOworICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNP
cmlnaW4pOwogICAgIG91dC5wcmludChwcmVmaXgsICIoRW5kIE9mIE1haW4gUGF0aClcbiIpOwor
ICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIGR1bXBEaXNhc3Nl
bWJseShvdXQsIGRpc2Fzc2VtYmx5UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2aW91c0xhYmVsLCBt
X2VuZE9mQ29kZSwgTm9Ob2RlKTsKLX0KLQotdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikKLXsKLSAgICBkdW1wKFdURjo6ZGF0YUZpbGUoKSwgbGlua0J1ZmZl
cik7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCYgcHJldmlvdXNMYWJlbCwgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGN1cnJlbnRMYWJlbCwgTm9kZUluZGV4IGNvbnRleHQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzNjMxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJM
aW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTY0LDggKzY1LDI0IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7CiAgICAgdm9pZCBkdW1w
KExpbmtCdWZmZXImKTsKKyAgICB2b2lkIHJlcG9ydFRvUHJvZmlsZXIoUEJQOjpDb21waWxhdGlv
biosIExpbmtCdWZmZXImKTsKICAgICAKIHByaXZhdGU6CisgICAgdm9pZCBkdW1wSGVhZGVyKFBy
aW50U3RyZWFtJiwgTGlua0J1ZmZlciYpOworICAgIAorICAgIHN0cnVjdCBEdW1wZWRPcCB7Cisg
ICAgICAgIER1bXBlZE9wKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ1N0cmluZyB0ZXh0KQorICAg
ICAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICAgICAsIHRleHQodGV4
dCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW47CisgICAgICAgIENTdHJpbmcgdGV4dDsKKyAgICB9OworICAgIHZvaWQgYXBwZW5k
KFZlY3RvcjxEdW1wZWRPcD4mLCBTdHJpbmdQcmludFN0cmVhbSYsIENvZGVPcmlnaW4mKTsKKyAg
ICBWZWN0b3I8RHVtcGVkT3A+IGNyZWF0ZUR1bXBMaXN0KExpbmtCdWZmZXImKTsKKyAgICAKICAg
ICB2b2lkIGR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCwg
TGlua0J1ZmZlciYsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCYgcHJldmlvdXNMYWJlbCwgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIGN1cnJlbnRMYWJlbCwgTm9kZUluZGV4IGNvbnRleHQpOwogICAgIAog
ICAgIEdyYXBoJiBtX2dyYXBoOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBkZmdPcE5hbWVzW10gPSB7CiBHcmFwaDo6R3JhcGgoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4
LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcykKICAgICA6IG1fZ2xv
YmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwg
bV9jb21waWxhdGlvbihnbG9iYWxEYXRhLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA/IGdsb2JhbERh
dGEubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5uZXdDb21waWxhdGlvbihjb2RlQmxvY2ssIFBCUDo6
REZHKSA6IDApCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2soY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
KQogICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgLCBtX29zckVudHJ5Qnl0ZWNvZGVJ
bmRleChvc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCkBAIC02MywxNSArNjQsMTUgQEAgc3RhdGljIHZv
aWQgcHJpbnRXaGl0ZVNwYWNlKFByaW50U3RyZWFtJgogICAgICAgICBvdXQucHJpbnQoIiAiKTsK
IH0KIAotdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
Y2hhciogcHJlZml4LCBOb2RlSW5kZXggcHJldk5vZGVJbmRleCwgTm9kZUluZGV4IG5vZGVJbmRl
eCkKK2Jvb2wgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNo
YXIqIHByZWZpeCwgTm9kZUluZGV4IHByZXZOb2RlSW5kZXgsIE5vZGVJbmRleCBub2RlSW5kZXgp
CiB7CiAgICAgaWYgKHByZXZOb2RlSW5kZXggPT0gTm9Ob2RlKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBOb2RlJiBjdXJyZW50Tm9kZSA9IGF0KG5v
ZGVJbmRleCk7CiAgICAgTm9kZSYgcHJldmlvdXNOb2RlID0gYXQocHJldk5vZGVJbmRleCk7CiAg
ICAgaWYgKHByZXZpb3VzTm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSA9PSBjdXJyZW50
Tm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgVmVjdG9yPENvZGVPcmlnaW4+IHByZXZpb3VzSW5s
aW5lU3RhY2sgPSBwcmV2aW91c05vZGUuY29kZU9yaWdpbi5pbmxpbmVTdGFjaygpOwogICAgIFZl
Y3RvcjxDb2RlT3JpZ2luPiBjdXJyZW50SW5saW5lU3RhY2sgPSBjdXJyZW50Tm9kZS5jb2RlT3Jp
Z2luLmlubGluZVN0YWNrKCk7CkBAIC04NCwxMSArODUsMTQgQEAgdm9pZCBHcmFwaDo6ZHVtcENv
ZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wg
aGFzUHJpbnRlZCA9IGZhbHNlOworICAgIAogICAgIC8vIFByaW50IHRoZSBwb3BzLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBpbmRleE9m
RGl2ZXJnZW5jZTspIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAgIHByaW50
V2hpdGVTcGFjZShvdXQsIGkgKiAyKTsKICAgICAgICAgb3V0LnByaW50KCI8LS0gIiwgKnByZXZp
b3VzSW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLCAiXG4iKTsKKyAgICAgICAgaGFzUHJp
bnRlZCA9IHRydWU7CiAgICAgfQogICAgIAogICAgIC8vIFByaW50IHRoZSBwdXNoZXMuCkBAIC05
Niw3ICsxMDAsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAog
ICAgICAgICBvdXQucHJpbnQocHJlZml4KTsKICAgICAgICAgcHJpbnRXaGl0ZVNwYWNlKG91dCwg
aSAqIDIpOwogICAgICAgICBvdXQucHJpbnQoIi0tPiAiLCAqY3VycmVudElubGluZVN0YWNrW2ld
LmlubGluZUNhbGxGcmFtZSwgIlxuIik7CisgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAg
IH0KKyAgICAKKyAgICByZXR1cm4gaGFzUHJpbnRlZDsKIH0KIAogaW50IEdyYXBoOjphbW91bnRP
Zk5vZGVXaGl0ZVNwYWNlKE5vZGUmIG5vZGUpCkBAIC0yNTQsNiArMjYxLDEzIEBAIHZvaWQgR3Jh
cGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgaWYgKGhhc1ByaW50ZWQp
CiAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CiAgICAgICAgIG91dC5wcmludChpbmRleGlu
Z1R5cGVUb1N0cmluZyhub2RlLmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIGhhc1ByaW50ZWQg
PSB0cnVlOworICAgIH0KKyAgICBpZiAobm9kZS5oYXNFeGVjdXRpb25Db3VudGVyKCkpIHsKKyAg
ICAgICAgaWYgKGhhc1ByaW50ZWQpCisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CisgICAg
ICAgIG91dC5wcmludChSYXdQb2ludGVyKG5vZGUuZXhlY3V0aW9uQ291bnRlcigpKSk7CisgICAg
ICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAob3AgPT0gSlNDb25zdGFudCkg
ewogICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgIiQiLCBub2RlLmNv
bnN0YW50TnVtYmVyKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAko
cmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTksOCArMTk5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHByaW50Tm9kZVdoaXRlU3BhY2UoUHJpbnRTdHJlYW0mLCBOb2RlJik7CiAKICAgICAvLyBE
dW1wIHRoZSBjb2RlIG9yaWdpbiBvZiB0aGUgZ2l2ZW4gbm9kZSBhcyBhIGRpZmYgZnJvbSB0aGUg
Y29kZSBvcmlnaW4gb2YgdGhlCi0gICAgLy8gcHJlY2VkaW5nIG5vZGUuCi0gICAgdm9pZCBkdW1w
Q29kZU9yaWdpbihQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZUluZGV4LCBO
b2RlSW5kZXgpOworICAgIC8vIHByZWNlZGluZyBub2RlLiBSZXR1cm5zIHRydWUgaWYgYW55dGhp
bmcgd2FzIHByaW50ZWQuCisgICAgYm9vbCBkdW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYsIGNv
bnN0IGNoYXIqIHByZWZpeCwgTm9kZUluZGV4LCBOb2RlSW5kZXgpOwogCiAgICAgQmxvY2tJbmRl
eCBibG9ja0luZGV4Rm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPEJsb2NrSW5kZXg+JiBibG9ja3Ms
IHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW4pOwogCkBAIC02NzEsNiArNjcxLDcgQEAgcHVibGljOgog
ICAgIAogICAgIEpTR2xvYmFsRGF0YSYgbV9nbG9iYWxEYXRhOwogICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7CisgICAgUEJQOjpDb21waWxhdGlvbiogbV9jb21waWxhdGlvbjsKICAgICBDb2Rl
QmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKIAogICAgIFZlY3RvcjwgT3duUHRyPEJhc2ljQmxvY2s+
ICwgOD4gbV9ibG9ja3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAg
SklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBtX2dyYXBoKGRmZykK
ICAgICAsIG1fY3VycmVudENvZGVPcmlnaW5JbmRleCgwKQogewotICAgIGlmIChzaG91bGRTaG93
RGlzYXNzZW1ibHkoKSkKKyAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkgfHwgbV9ncmFw
aC5tX2dsb2JhbERhdGEubV9wZXJCeXRlY29kZVByb2ZpbGVyKQogICAgICAgICBtX2Rpc2Fzc2Vt
YmxlciA9IGFkb3B0UHRyKG5ldyBEaXNhc3NlbWJsZXIoZGZnKSk7CiB9CiAKQEAgLTIzNiw4ICsy
MzYsMTAgQEAgYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZShKSVRDb2RlJiBlbnRyeQogICAgIGxp
bmsobGlua0J1ZmZlcik7CiAgICAgc3BlY3VsYXRpdmUubGlua09TUkVudHJpZXMobGlua0J1ZmZl
cik7CiAKLSAgICBpZiAobV9kaXNhc3NlbWJsZXIpCisgICAgaWYgKHNob3VsZFNob3dEaXNhc3Nl
bWJseSgpKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChsaW5rQnVmZmVyKTsKKyAgICBp
ZiAobV9ncmFwaC5tX2NvbXBpbGF0aW9uKQorICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0
VG9Qcm9maWxlcihtX2dyYXBoLm1fY29tcGlsYXRpb24sIGxpbmtCdWZmZXIpOwogCiAgICAgZW50
cnkgPSBKSVRDb2RlKAogICAgICAgICBsaW5rQnVmZmVyLmZpbmFsaXplQ29kZVdpdGhvdXREaXNh
c3NlbWJseSgpLApAQCAtMzI3LDggKzMyOSwxMCBAQCBib29sIEpJVENvbXBpbGVyOjpjb21waWxl
RnVuY3Rpb24oSklUQ29kCiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGxTdGFja0NoZWNrLCBjdGlf
c3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsQXJpdHlDaGVjaywgbV9jb2Rl
QmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0
aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwogICAgIAotICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKKyAg
ICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5k
dW1wKGxpbmtCdWZmZXIpOworICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pCisgICAgICAg
IG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fZ3JhcGgubV9jb21waWxhdGlvbiwg
bGlua0J1ZmZlcik7CiAKICAgICBlbnRyeVdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGFyaXR5Q2hlY2spOwogICAgIGVudHJ5ID0gSklUQ29kZSgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODU5LDYgKzg1OSwxNiBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIEFTU0VSVChoYXNBcmd1bWVudFBvc2l0aW9uU3RhcnQo
KSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNF
eGVjdXRpb25Db3VudGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IENvdW50RXhl
Y3V0aW9uOworICAgIH0KKyAgICAKKyAgICBQQlA6OkV4ZWN1dGlvbkNvdW50ZXIqIGV4ZWN1dGlv
bkNvdW50ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQQlA6OkV4ZWN1
dGlvbkNvdW50ZXIqPihtX29wSW5mbyk7CisgICAgfQogCiAgICAgYm9vbCBzaG91bGRHZW5lcmF0
ZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIFwKICAgICBtYWNybyhHYXJiYWdlVmFsdWUsIE5vZGVSZXN1bHRK
UyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgXAorICAgIC8qIENvdW50IGV4ZWN1dGlvbi4g
Ki9cCisgICAgbWFjcm8oQ291bnRFeGVjdXRpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBc
CiAgICAgLyogVGhpcyBpcyBhIHBzZXVkby10ZXJtaW5hbC4gSXQgbWVhbnMgdGhhdCBleGVjdXRp
b24gc2hvdWxkIGZhbGwgb3V0IG9mIERGRyBhdCAqL1wKICAgICAvKiB0aGlzIHBvaW50LCBidXQg
ZXhlY3V0aW9uIGRvZXMgY29udGludWUgaW4gdGhlIGJhc2ljIGJsb2NrIC0ganVzdCBpbiBhICov
XAogICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3MSw2ICs3
NzEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgSW5s
aW5lU3RhcnQ6CiAgICAgICAgIGNhc2UgTm9wOgorICAgICAgICBjYXNlIENvdW50RXhlY3V0aW9u
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMYXN0Tm9k
ZVR5cGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwNDQsNiArNTA0NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ291bnRFeGVjdXRpb246Cisg
ICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFic29s
dXRlQWRkcmVzcyhub2RlLmV4ZWN1dGlvbkNvdW50ZXIoKS0+YWRkcmVzcygpKSk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3Au
CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTM2
MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDkxMiw2ICs0OTEyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICBjYXNlIE5ld0Z1bmN0aW9uRXhwcmVzc2lvbjoK
ICAgICAgICAgY29tcGlsZU5ld0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlKTsKICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgQ291bnRFeGVjdXRpb246CisgICAgICAgIG1faml0LmFk
ZDY0KFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcyhub2Rl
LmV4ZWN1dGlvbkNvdW50ZXIoKS0+YWRkcmVzcygpKSk7CisgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBHYXJiYWdlVmFsdWU6CiAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQgdG8gdGhl
IHBvaW50IG9mIGNvZGUgZW1pc3Npb24gZm9yIGEgR2FyYmFnZVZhbHVlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgSklUOjpK
SVQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQgogICAgICwgbV9sYXN0UmVzdWx0Qnl0
ZWNvZGVSZWdpc3RlcihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKQogICAgICwgbV9q
dW1wVGFyZ2V0c1Bvc2l0aW9uKDApCiAjZW5kaWYKKyAgICAsIG1fY29tcGlsYXRpb24oMCkKICNp
ZiBVU0UoT1NfUkFORE9NTkVTUykKICAgICAsIG1fcmFuZG9tR2VuZXJhdG9yKGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAjZWxzZQpAQCAtMjMyLDYgKzIzMywxMyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFKQogICAg
ICAgICBkYXRhTG9nRigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBvZmZzZXQg
MHglbHguXG4iLCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKICNlbmRp
ZgorICAgICAgICAKKyAgICAgICAgaWYgKG1fY29tcGlsYXRpb24pIHsKKyAgICAgICAgICAgIGFk
ZDY0KAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMigxKSwKKyAgICAgICAgICAgICAgICBB
YnNvbHV0ZUFkZHJlc3MobV9jb21waWxhdGlvbi0+ZXhlY3V0aW9uQ291bnRlckZvcihQQlA6Ok9y
aWdpblN0YWNrKFBCUDo6T3JpZ2luKAorICAgICAgICAgICAgICAgICAgICBtX2NvbXBpbGF0aW9u
LT5ieXRlY29kZXMoKSwgbV9ieXRlY29kZU9mZnNldCkpKS0+YWRkcmVzcygpKSk7CisgICAgICAg
IH0KIAogICAgICAgICBzd2l0Y2ggKG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJ
bnN0cnVjdGlvbi0+dS5vcGNvZGUpKSB7CiAgICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfZGVs
X2J5X3ZhbCkKQEAgLTYzMSw4ICs2MzksMTAgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxl
KENvZGVQdHIqIGZ1bgogICAgIH0KICNlbmRpZgogICAgIAotICAgIGlmIChPcHRpb25zOjpzaG93
RGlzYXNzZW1ibHkoKSkKKyAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkgfHwgbV9n
bG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVy
ID0gYWRvcHRQdHIobmV3IEpJVERpc2Fzc2VtYmxlcihtX2NvZGVCbG9jaykpOworICAgIGlmICht
X2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKKyAgICAgICAgbV9jb21waWxhdGlv
biA9IG1fZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5uZXdDb21waWxhdGlvbiht
X2NvZGVCbG9jaywgUEJQOjpCYXNlbGluZSk7CiAgICAgCiAgICAgaWYgKG1fZGlzYXNzZW1ibGVy
KQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CkBAIC04
MjMsOCArODMzLDEwIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4K
ICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIGZ1bmN0
aW9uRW50cnlBcml0eUNoZWNrKQogICAgICAgICAqZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sgPSBw
YXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGFyaXR5Q2hlY2spOwogCi0gICAgaWYgKG1fZGlzYXNzZW1i
bGVyKQorICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSkKICAgICAgICAgbV9kaXNh
c3NlbWJsZXItPmR1bXAocGF0Y2hCdWZmZXIpOworICAgIGlmIChtX2NvbXBpbGF0aW9uKQorICAg
ICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2NvbXBpbGF0aW9uLCBwYXRj
aEJ1ZmZlcik7CiAgICAgCiAgICAgQ29kZVJlZiByZXN1bHQgPSBwYXRjaEJ1ZmZlci5maW5hbGl6
ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTQ3LDYgKzk0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2Vu
ZGlmCiAjZW5kaWYKICAgICAgICAgT3duUHRyPEpJVERpc2Fzc2VtYmxlcj4gbV9kaXNhc3NlbWJs
ZXI7CisgICAgICAgIFBCUDo6Q29tcGlsYXRpb24qIG1fY29tcGlsYXRpb247CiAgICAgICAgIFdl
YWtSYW5kb20gbV9yYW5kb21HZW5lcmF0b3I7CiAgICAgICAgIHN0YXRpYyBDb2RlUmVmIHN0cmlu
Z0dldEJ5VmFsU3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTM2MzE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDE4
ICs0OCwxMCBAQCBKSVREaXNhc3NlbWJsZXI6On5KSVREaXNhc3NlbWJsZXIoKQogCiB2b2lkIEpJ
VERpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogewotICAgIG91dC5wcmludCgiR2VuZXJhdGVkIEJhc2VsaW5lIEpJVCBjb2RlIGZvciAi
LCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUQ29kZTo6QmFzZWxpbmVKSVQp
LCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCksICJcbiIpOwotICAgIG91dC5wcmludCgiICAgQ29kZSBhdCBbIiwgUmF3UG9pbnRlcihsaW5r
QnVmZmVyLmRlYnVnQWRkcmVzcygpKSwgIiwgIiwgUmF3UG9pbnRlcihzdGF0aWNfY2FzdDxjaGFy
Kj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpKSwg
Iik6XG4iKTsKKyAgICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CiAgICAgZHVtcERpc2Fz
c2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckJ5dGVjb2Rl
SW5kZXhJbk1haW5QYXRoWzBdKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZmly
c3RTbG93TGFiZWw7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGFiZWxGb3JCeXRl
Y29kZUluZGV4SW5TbG93UGF0aC5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9sYWJlbEZv
ckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoW2ldLmlzU2V0KCkpIHsKLSAgICAgICAgICAgIGZpcnN0
U2xvd0xhYmVsID0gbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoW2ldOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZHVtcEZvckluc3RydWN0aW9ucyhv
dXQsIGxpbmtCdWZmZXIsICIgICAgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRo
LCBmaXJzdFNsb3dMYWJlbC5pc1NldCgpID8gZmlyc3RTbG93TGFiZWwgOiBtX2VuZE9mU2xvd1Bh
dGgpOworICAgIGR1bXBGb3JJbnN0cnVjdGlvbnMob3V0LCBsaW5rQnVmZmVyLCAiICAgICIsIG1f
bGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aCwgZmlyc3RTbG93TGFiZWwoKSk7CiAgICAg
b3V0LnByaW50KCIgICAgKEVuZCBPZiBNYWluIFBhdGgpXG4iKTsKICAgICBkdW1wRm9ySW5zdHJ1
Y3Rpb25zKG91dCwgbGlua0J1ZmZlciwgIiAgICAoUykgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5k
ZXhJblNsb3dQYXRoLCBtX2VuZE9mU2xvd1BhdGgpOwogICAgIG91dC5wcmludCgiICAgIChFbmQg
T2YgU2xvdyBQYXRoKVxuIik7CkBAIC03MSwyNyArNjQsOTQgQEAgdm9pZCBKSVREaXNhc3NlbWJs
ZXI6OmR1bXAoTGlua0J1ZmZlciYgbAogICAgIGR1bXAoV1RGOjpkYXRhRmlsZSgpLCBsaW5rQnVm
ZmVyKTsKIH0KIAotdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMoUHJp
bnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4
LCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgZW5kTGFiZWwpCit2b2lkIEpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcihQ
QlA6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3sK
KyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgCisgICAgZHVtcEhlYWRlcihvdXQsIGxp
bmtCdWZmZXIpOworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVk
Qnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICBvdXQu
cmVzZXQoKTsKKyAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBtX3N0YXJ0T2ZD
b2RlLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFpblBhdGhbMF0pOworICAgIGNvbXBpbGF0
aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFj
aygpLCBvdXQudG9DU3RyaW5nKCkpKTsKKyAgICAKKyAgICByZXBvcnRJbnN0cnVjdGlvbnMoY29t
cGlsYXRpb24sIGxpbmtCdWZmZXIsICIgICAgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1h
aW5QYXRoLCBmaXJzdFNsb3dMYWJlbCgpKTsKKyAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRp
b24oUEJQOjpDb21waWxlZEJ5dGVjb2RlKFBCUDo6T3JpZ2luU3RhY2soKSwgIiAgICAoRW5kIE9m
IE1haW4gUGF0aClcbiIpKTsKKyAgICByZXBvcnRJbnN0cnVjdGlvbnMoY29tcGlsYXRpb24sIGxp
bmtCdWZmZXIsICIgICAgKFMpICIsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aCwg
bV9lbmRPZlNsb3dQYXRoKTsKKyAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oUEJQOjpD
b21waWxlZEJ5dGVjb2RlKFBCUDo6T3JpZ2luU3RhY2soKSwgIiAgICAoRW5kIE9mIFNsb3cgUGF0
aClcbiIpKTsKKyAgICBvdXQucmVzZXQoKTsKKyAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5r
QnVmZmVyLCBtX2VuZE9mU2xvd1BhdGgsIG1fZW5kT2ZDb2RlKTsKKyAgICBjb21waWxhdGlvbi0+
YWRkRGVzY3JpcHRpb24oUEJQOjpDb21waWxlZEJ5dGVjb2RlKFBCUDo6T3JpZ2luU3RhY2soKSwg
b3V0LnRvQ1N0cmluZygpKSk7Cit9CisKK3ZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wSGVhZGVy
KFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgb3V0LnBy
aW50KCJHZW5lcmF0ZWQgQmFzZWxpbmUgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRU
eXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCksICIsIGluc3RydWN0aW9uIGNv
dW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CisgICAgb3V0
LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtCdWZmZXIuZGVidWdBZGRyZXNz
KCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVn
QWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAiKTpcbiIpOworfQorCitNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgSklURGlzYXNzZW1ibGVyOjpmaXJzdFNsb3dMYWJlbCgpCiB7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsYWJlbHMuc2l6ZSgpOykgeworICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBmaXJzdFNsb3dMYWJlbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbaV0uaXNTZXQoKSkg
eworICAgICAgICAgICAgZmlyc3RTbG93TGFiZWwgPSBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleElu
U2xvd1BhdGhbaV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZmlyc3RTbG93TGFiZWwuaXNTZXQoKSA/IGZpcnN0U2xvd0xhYmVsIDogbV9lbmRPZlNs
b3dQYXRoOworfQorCitWZWN0b3I8SklURGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gSklURGlzYXNz
ZW1ibGVyOjpkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKExpbmtCdWZmZXImIGxpbmtCdWZmZXIs
IGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVs
cywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVsKQoreworICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKKyAgICBWZWN0b3I8RHVtcGVkT3A+IHJlc3VsdDsKKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGFiZWxzLnNpemUoKTspIHsKICAgICAgICAgaWYgKCFsYWJlbHNb
aV0uaXNTZXQoKSkgewogICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KKyAgICAgICAgb3V0LnJlc2V0KCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoRHVt
cGVkT3AoKSk7CisgICAgICAgIHJlc3VsdC5sYXN0KCkuaW5kZXggPSBpOwogICAgICAgICBvdXQu
cHJpbnQocHJlZml4KTsKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGkp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIG5leHRJbmRleCA9IGkgKyAxOyA7IG5leHRJbmRleCsr
KSB7CiAgICAgICAgICAgICBpZiAobmV4dEluZGV4ID49IGxhYmVscy5zaXplKCkpIHsKICAgICAg
ICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBsYWJlbHNbaV0sIGVu
ZExhYmVsKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmVzdWx0
Lmxhc3QoKS5kaXNhc3NlbWJseSA9IG91dC50b0NTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxhYmVsc1tuZXh0
SW5kZXhdLmlzU2V0KCkpIHsKICAgICAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBs
aW5rQnVmZmVyLCBsYWJlbHNbaV0sIGxhYmVsc1tuZXh0SW5kZXhdKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQubGFzdCgpLmRpc2Fzc2VtYmx5ID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICAg
ICAgICAgIGkgPSBuZXh0SW5kZXg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMoUHJpbnRTdHJlYW0mIG91dCwg
TGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9B
c3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwp
Cit7CisgICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wZWRPcHMgPSBkdW1wVmVjdG9yRm9ySW5zdHJ1
Y3Rpb25zKGxpbmtCdWZmZXIsIHByZWZpeCwgbGFiZWxzLCBlbmRMYWJlbCk7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bXBlZE9wcy5zaXplKCk7ICsraSkKKyAgICAgICAg
b3V0LnByaW50KGR1bXBlZE9wc1tpXS5kaXNhc3NlbWJseSk7Cit9CisKK3ZvaWQgSklURGlzYXNz
ZW1ibGVyOjpyZXBvcnRJbnN0cnVjdGlvbnMoUEJQOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24s
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIqIHByZWZpeCwgVmVjdG9yPE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVuZExhYmVs
KQoreworICAgIFZlY3RvcjxEdW1wZWRPcD4gZHVtcGVkT3BzID0gZHVtcFZlY3RvckZvckluc3Ry
dWN0aW9ucyhsaW5rQnVmZmVyLCBwcmVmaXgsIGxhYmVscywgZW5kTGFiZWwpOworICAgIAorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1wZWRPcHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKAorICAgICAgICAgICAgUEJQOjpDb21waWxl
ZEJ5dGVjb2RlKAorICAgICAgICAgICAgICAgIFBCUDo6T3JpZ2luU3RhY2soUEJQOjpPcmlnaW4o
Y29tcGlsYXRpb24tPmJ5dGVjb2RlcygpLCBkdW1wZWRPcHNbaV0uaW5kZXgpKSwKKyAgICAgICAg
ICAgICAgICBkdW1wZWRPcHNbaV0uZGlzYXNzZW1ibHkpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklU
RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZl
ciYgbGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZyb20sIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCB0bykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3Nl
bWJsZXIuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXNhc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5j
bHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVk
ZSAiUEJQRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNTgsOSArNTksMjEgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZHVtcChMaW5r
QnVmZmVyJik7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiwgTGlua0J1ZmZlciYpOworICAg
IHZvaWQgcmVwb3J0VG9Qcm9maWxlcihQQlA6OkNvbXBpbGF0aW9uKiwgTGlua0J1ZmZlciYpOwog
CiBwcml2YXRlOgorICAgIHZvaWQgZHVtcEhlYWRlcihQcmludFN0cmVhbSYsIExpbmtCdWZmZXIm
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZmlyc3RTbG93TGFiZWwoKTsKKyAgICAKKyAg
ICBzdHJ1Y3QgRHVtcGVkT3AgeworICAgICAgICB1bnNpZ25lZCBpbmRleDsKKyAgICAgICAgQ1N0
cmluZyBkaXNhc3NlbWJseTsKKyAgICB9OworICAgIFZlY3RvcjxEdW1wZWRPcD4gZHVtcFZlY3Rv
ckZvckluc3RydWN0aW9ucyhMaW5rQnVmZmVyJiwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5k
TGFiZWwpOworICAgICAgICAKICAgICB2b2lkIGR1bXBGb3JJbnN0cnVjdGlvbnMoUHJpbnRTdHJl
YW0mLCBMaW5rQnVmZmVyJiwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpOworICAg
IHZvaWQgcmVwb3J0SW5zdHJ1Y3Rpb25zKFBCUDo6Q29tcGlsYXRpb24qLCBMaW5rQnVmZmVyJiwg
Y29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxz
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpOworICAgIAogICAgIHZvaWQgZHVtcERp
c2Fzc2VtYmx5KFByaW50U3RyZWFtJiwgTGlua0J1ZmZlciYsIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBmcm9tLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgdG8pOwogICAgIAogICAgIENvZGVCbG9jayog
bV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0
ZWNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQQnl0ZWNvZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQQlBCeXRlY29kZS5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitKU1ZhbHVlIEJ5dGVj
b2RlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVJbmRleCwganNO
dW1iZXIobV9ieXRlY29kZUluZGV4KSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVzY3JpcHRpb24sIGpzU3RyaW5nKGV4
ZWMsIFN0cmluZzo6ZnJvbVVURjgobV9kZXNjcmlwdGlvbikpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBQQlBCeXRlY29kZV9oCisjZGVmaW5lIFBCUEJ5dGVjb2RlX2gKKworI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQnl0ZWNvZGUgeworcHVibGljOgorICAg
IEJ5dGVjb2RlKCkKKyAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQnl0ZWNvZGUodW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgQ1N0cmluZyYgZGVzY3JpcHRpb24pCisgICAgICAg
IDogbV9ieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICwgbV9kZXNjcmlwdGlv
bihkZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7IH0KKyAgICBjb25zdCBDU3Ry
aW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KKyAgICAK
KyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7Citwcml2YXRlOgorICAgIHVuc2ln
bmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAgICBDU3RyaW5nIG1fZGVzY3JpcHRpb247Cit9OworCitp
bmxpbmUgdW5zaWduZWQgZ2V0Qnl0ZWNvZGVJbmRleEZvckJ5dGVjb2RlKEJ5dGVjb2RlKiBieXRl
Y29kZSkgeyByZXR1cm4gYnl0ZWNvZGUtPmJ5dGVjb2RlSW5kZXgoKTsgfQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6UEJQCisKKyNlbmRpZiAvLyBQQlBCeXRlY29kZV9oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUEJ5
dGVjb2Rlcy5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgewor
CitCeXRlY29kZXM6OkJ5dGVjb2RlcyhzaXplX3QgaWQsIENvZGVCbG9ja0hhc2ggaGFzaCkKKyAg
ICA6IG1faWQoaWQpCisgICAgLCBtX2hhc2goaGFzaCkKK3sKK30KKworQnl0ZWNvZGVzOjp+Qnl0
ZWNvZGVzKCkgeyB9CisKK3Vuc2lnbmVkIEJ5dGVjb2Rlczo6aW5kZXhGb3JCeXRlY29kZUluZGV4
KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJj
aDxCeXRlY29kZSwgdW5zaWduZWQsIGdldEJ5dGVjb2RlSW5kZXhGb3JCeXRlY29kZT4oY29uc3Rf
Y2FzdDxCeXRlY29kZSo+KG1fYnl0ZWNvZGUuYmVnaW4oKSksIG1fYnl0ZWNvZGUuc2l6ZSgpLCBi
eXRlY29kZUluZGV4KSAtIG1fYnl0ZWNvZGUuYmVnaW4oKTsKK30KKworY29uc3QgQnl0ZWNvZGUm
IEJ5dGVjb2Rlczo6Zm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25z
dAoreworICAgIHJldHVybiBhdChpbmRleEZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkp
OworfQorCit2b2lkIEJ5dGVjb2Rlczo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIG91dC5wcmludCgiIyIsIG1faGFzaCwgIigiLCBtX2lkLCAiKSIpOworfQorCitKU1ZhbHVl
IEJ5dGVjb2Rlczo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3Qq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVj
b2Rlc0lELCBqc051bWJlcihtX2lkKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzaCwganNTdHJpbmcoZXhlYywgU3Ry
aW5nOjpmcm9tVVRGOCh0b0NTdHJpbmcobV9oYXNoKSkpKTsKKyAgICAKKyAgICBKU0FycmF5KiBz
dHJlYW0gPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2J5dGVjb2RlLnNpemUoKTsgKytpKQorICAgICAgICBzdHJlYW0tPnB1dERp
cmVjdEluZGV4KGV4ZWMsIGksIG1fYnl0ZWNvZGVbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0
ZWNvZGUsIHN0cmVhbSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UEJQQnl0ZWNvZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUEJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQ
Qnl0ZWNvZGVzX2gKKyNkZWZpbmUgUEJQQnl0ZWNvZGVzX2gKKworI2luY2x1ZGUgIkNvZGVCbG9j
a0hhc2guaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGUuaCIK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBQQlAgeworCitjbGFzcyBCeXRlY29kZXMgeworcHVibGljOgorICAgIEJ5dGVjb2RlcyhzaXpl
X3QgaWQsIENvZGVCbG9ja0hhc2gpOworICAgIH5CeXRlY29kZXMoKTsKKyAgICAKKyAgICB2b2lk
IGFwcGVuZChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUpIHsgbV9ieXRlY29kZS5hcHBlbmQoYnl0
ZWNvZGUpOyB9CisgICAgCisgICAgc2l6ZV90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQor
ICAgIENvZGVCbG9ja0hhc2ggaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQorICAgIAor
ICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIG5vdCBpbmRleGVkIGJ5IGJ5
dGVjb2RlIGluZGV4LgorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVj
b2RlLnNpemUoKTsgfQorICAgIGNvbnN0IEJ5dGVjb2RlJiBhdCh1bnNpZ25lZCBpKSBjb25zdCB7
IHJldHVybiBtX2J5dGVjb2RlW2ldOyB9CisgICAgCisgICAgdW5zaWduZWQgaW5kZXhGb3JCeXRl
Y29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0OworICAgIGNvbnN0IEJ5dGVj
b2RlJiBmb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0OworICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorICAgIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgc2l6ZV90IG1faWQ7
CisgICAgQ29kZUJsb2NrSGFzaCBtX2hhc2g7CisgICAgVmVjdG9yPEJ5dGVjb2RlPiBtX2J5dGVj
b2RlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYgLy8gUEJQQnl0
ZWNvZGVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBp
bGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UEJQQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQ29tcGlsYXRpb24uaCIKKworI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworQ29tcGlsYXRpb246OkNvbXBpbGF0aW9u
KEJ5dGVjb2RlcyogYnl0ZWNvZGVzLCBDb21waWxhdGlvbktpbmQga2luZCkKKyAgICA6IG1fYnl0
ZWNvZGVzKGJ5dGVjb2RlcykKKyAgICAsIG1fa2luZChraW5kKQoreworfQorCitDb21waWxhdGlv
bjo6fkNvbXBpbGF0aW9uKCkgeyB9CisKK3ZvaWQgQ29tcGlsYXRpb246OmFkZERlc2NyaXB0aW9u
KGNvbnN0IENvbXBpbGVkQnl0ZWNvZGUmIGNvbXBpbGVkQnl0ZWNvZGUpCit7CisgICAgbV9kZXNj
cmlwdGlvbnMuYXBwZW5kKGNvbXBpbGVkQnl0ZWNvZGUpOworfQorCitFeGVjdXRpb25Db3VudGVy
KiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihjb25zdCBPcmlnaW5TdGFjayYgb3Jp
Z2luKQoreworICAgIEhhc2hNYXA8T3JpZ2luU3RhY2ssIE93blB0cjxFeGVjdXRpb25Db3VudGVy
PiA+OjppdGVyYXRvciBpdGVyID0gbV9jb3VudGVycy5maW5kKG9yaWdpbik7CisgICAgaWYgKGl0
ZXIgIT0gbV9jb3VudGVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLmdldCgp
OworICAgIAorICAgIE93blB0cjxFeGVjdXRpb25Db3VudGVyPiBjb3VudGVyID0gYWRvcHRQdHIo
bmV3IEV4ZWN1dGlvbkNvdW50ZXIoKSk7CisgICAgRXhlY3V0aW9uQ291bnRlciogcmVzdWx0ID0g
Y291bnRlci5nZXQoKTsKKyAgICBtX2NvdW50ZXJzLmFkZChvcmlnaW4sIGNvdW50ZXIucmVsZWFz
ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pT
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpzTnVtYmVy
KG1fYnl0ZWNvZGVzLT5pZCgpKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsYXRpb25LaW5kLCBqc1N0cmluZyhl
eGVjLCBTdHJpbmc6OmZyb21VVEY4KHRvQ1N0cmluZyhtX2tpbmQpKSkpOworICAgIAorICAgIEpT
QXJyYXkqIGRlc2NyaXB0aW9ucyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGVzY3JpcHRpb25zLnNpemUoKTsgKytpKQorICAg
ICAgICBkZXNjcmlwdGlvbnMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG1fZGVzY3JpcHRpb25z
W2ldLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlc2NyaXB0aW9ucywgZGVzY3JpcHRpb25zKTsKKyAg
ICAKKyAgICBKU0FycmF5KiBjb3VudGVycyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7
CisgICAgSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+ID46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IG1fY291bnRlcnMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPE9y
aWdpblN0YWNrLCBPd25QdHI8RXhlY3V0aW9uQ291bnRlcj4gPjo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fY291bnRlcnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBK
U09iamVjdCogY291bnRlckVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAg
ICAgIGNvdW50ZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLm9yaWdpbiwgaXRlci0+a2V5LnRvSlMoZXhlYykpOworICAgICAgICBjb3Vu
dGVyRW50cnktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5leGVjdXRpb25Db3VudCwganNOdW1iZXIoaXRlci0+dmFsdWUtPmNvdW50KCkpKTsKKyAg
ICAgICAgY291bnRlcnMtPnB1c2goZXhlYywgY291bnRlckVudHJ5KTsKKyAgICB9CisgICAgcmVz
dWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y291bnRlcnMsIGNvdW50ZXJzKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBDb21waWxhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBDb21waWxhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBQQlBDb21waWxhdGlvbl9oCisjZGVmaW5lIFBCUENvbXBpbGF0aW9uX2gKKworI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQQlBDb21waWxhdGlvbktpbmQuaCIKKyNpbmNs
dWRlICJQQlBDb21waWxlZEJ5dGVjb2RlLmgiCisjaW5jbHVkZSAiUEJQRXhlY3V0aW9uQ291bnRl
ci5oIgorI2luY2x1ZGUgIlBCUE9yaWdpblN0YWNrLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBCeXRlY29kZXM7CisKKy8vIFJlcHJlc2VudHMgdGhl
IGFjdCBvZiBleGVjdXRpbmcgc29tZSBieXRlY29kZXMgaW4gc29tZSBlbmdpbmUsIGFuZCBkb2Vz
CisvLyBhbGwgb2YgdGhlIGNvdW50aW5nIGZvciB0aG9zZSBleGVjdXRpb25zLgorCitjbGFzcyBD
b21waWxhdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNP
UFlBQkxFKENvbXBpbGF0aW9uKTsKK3B1YmxpYzoKKyAgICBDb21waWxhdGlvbihCeXRlY29kZXMq
LCBDb21waWxhdGlvbktpbmQpOworICAgIH5Db21waWxhdGlvbigpOworICAgIAorICAgIEJ5dGVj
b2RlcyogYnl0ZWNvZGVzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZXM7IH0KKyAgICBDb21w
aWxhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIAorICAgIHZv
aWQgYWRkRGVzY3JpcHRpb24oY29uc3QgQ29tcGlsZWRCeXRlY29kZSYpOworICAgIEV4ZWN1dGlv
bkNvdW50ZXIqIGV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smKTsKKyAgICAK
KyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAg
IEJ5dGVjb2RlcyogbV9ieXRlY29kZXM7CisgICAgQ29tcGlsYXRpb25LaW5kIG1fa2luZDsKKyAg
ICBWZWN0b3I8Q29tcGlsZWRCeXRlY29kZT4gbV9kZXNjcmlwdGlvbnM7CisgICAgSGFzaE1hcDxP
cmlnaW5TdGFjaywgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+ID4gbV9jb3VudGVyczsKK307CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUENvbXBpbGF0aW9uX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2lu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENv
bXBpbGF0aW9uS2luZC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQQ29tcGlsYXRpb25LaW5kLmgiCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlBCUDo6Q29tcGlsYXRpb25LaW5kIGtpbmQp
Cit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBKU0M6OlBCUDo6TExJbnQ6CisgICAg
ICAgIG91dC5wcmludCgiTExJbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQ
QlA6OkJhc2VsaW5lOgorICAgICAgICBvdXQucHJpbnQoIkJhc2VsaW5lIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEpTQzo6UEJQOjpERkc6CisgICAgICAgIG91dC5wcmludCgiREZHIik7
CisgICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICBDUkFTSCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxh
dGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uS2lu
ZF9oCisjZGVmaW5lIFBCUENvbXBpbGF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgUEJQIHsKKworZW51bSBDb21waWxhdGlvbktpbmQgeworICAgIExMSW50LAorICAgIEJh
c2VsaW5lLAorICAgIERGRworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1l
c3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mLCBKU0M6OlBCUDo6Q29tcGlsYXRpb25LaW5kKTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKKyNlbmRpZiAvLyBQQlBDb21waWxhdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBp
bGVkQnl0ZWNvZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQQlBDb21waWxlZEJ5dGVjb2RlLmgiCisKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK0NvbXBpbGVkQnl0
ZWNvZGU6OkNvbXBpbGVkQnl0ZWNvZGUoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbiwgY29uc3Qg
Q1N0cmluZyYgZGVzY3JpcHRpb24pCisgICAgOiBtX29yaWdpbihvcmlnaW4pCisgICAgLCBtX2Rl
c2NyaXB0aW9uKGRlc2NyaXB0aW9uKQoreworfQorCitDb21waWxlZEJ5dGVjb2RlOjp+Q29tcGls
ZWRCeXRlY29kZSgpCit7Cit9CisKK0pTVmFsdWUgQ29tcGlsZWRCeXRlY29kZTo6dG9KUyhFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm9yaWdpbiwgbV9vcmlnaW4udG9KUyhleGVj
KSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZGVzY3JpcHRpb24sIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgo
bV9kZXNjcmlwdGlvbikpKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBDb21waWxlZEJ5dGVjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2RlLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBQQlBDb21waWxlZEJ5dGVjb2RlX2gKKyNkZWZpbmUgUEJQQ29t
cGlsZWRCeXRlY29kZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUEJQT3Jp
Z2luU3RhY2suaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgQ29tcGlsZWRCeXRlY29kZSB7CitwdWJsaWM6
CisgICAgLy8gSXQncyB2YWxpZCB0byBoYXZlIGFuIGVtcHR5IE9yaWdpblN0YWNrLCB3aGljaCBp
bmRpY2F0ZXMgdGhhdCB0aGlzIGlzIHNvbWUKKyAgICAvLyBzb3J0IG9mIG5vbi1ieXRlY29kZS1y
ZWxhdGVkIG1hY2hpbmUgY29kZS4KKyAgICBDb21waWxlZEJ5dGVjb2RlKGNvbnN0IE9yaWdpblN0
YWNrJiwgY29uc3QgQ1N0cmluZyYgZGVzY3JpcHRpb24pOworICAgIH5Db21waWxlZEJ5dGVjb2Rl
KCk7CisgICAgCisgICAgY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpblN0YWNrKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW47IH0KKyAgICBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KKyAgICAKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIE9yaWdpblN0YWNrIG1fb3JpZ2luOwor
ICAgIENTdHJpbmcgbV9kZXNjcmlwdGlvbjsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQ
QlAKKworI2VuZGlmIC8vIFBCUENvbXBpbGVkQnl0ZWNvZGVfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2UuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEJQRGF0YWJhc2Uu
aCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBQQlAgeworCitEYXRhYmFzZTo6RGF0YWJhc2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQorICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCit7Cit9CisKK0RhdGFiYXNlOjp+RGF0
YWJhc2UoKQoreworfQorCitCeXRlY29kZXMqIERhdGFiYXNlOjphZGRCeXRlY29kZXMoQ29kZUJs
b2NrSGFzaCBoYXNoKQoreworICAgIG1fYnl0ZWNvZGVzLmFwcGVuZChCeXRlY29kZXMobV9ieXRl
Y29kZXMuc2l6ZSgpLCBoYXNoKSk7CisgICAgcmV0dXJuICZtX2J5dGVjb2Rlcy5sYXN0KCk7Cit9
CisKK0J5dGVjb2RlcyogRGF0YWJhc2U6OmVuc3VyZUJ5dGVjb2Rlc0ZvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKK3sKKyAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgCisgICAgY29kZUJs
b2NrID0gY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKTsKKyAgICAKKyAgICBIYXNoTWFwPENv
ZGVCbG9jayosIEJ5dGVjb2Rlcyo+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29kZXNNYXAuZmlu
ZChjb2RlQmxvY2spOworICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVzTWFwLmVuZCgpKQorICAg
ICAgICByZXR1cm4gaXRlci0+dmFsdWU7CisgICAgCisgICAgQnl0ZWNvZGVzKiByZXN1bHQgPSBh
ZGRCeXRlY29kZXMoY29kZUJsb2NrLT5oYXNoKCkpOworICAgIAorICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCA9IDA7IGJ5dGVjb2RlSW5kZXggPCBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKTspIHsKKyAgICAgICAgb3V0LnJlc2V0KCk7CisgICAgICAgIGNvZGVCbG9jay0+
ZHVtcEJ5dGVjb2RlKG91dCwgYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5k
KEJ5dGVjb2RlKGJ5dGVjb2RlSW5kZXgsIG91dC50b0NTdHJpbmcoKSkpOworICAgICAgICAKKyAg
ICAgICAgYnl0ZWNvZGVJbmRleCArPSBvcGNvZGVMZW5ndGgoCisgICAgICAgICAgICBtX2dsb2Jh
bERhdGEuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKAorICAgICAgICAgICAgICAgIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNvZGUpKTsKKyAgICB9CisgICAg
CisgICAgbV9ieXRlY29kZXNNYXAuYWRkKGNvZGVCbG9jaywgcmVzdWx0KTsKKyAgICAKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIERhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbihDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBtX2J5dGVjb2Rlc01hcC5yZW1vdmUoY29kZUJsb2Nr
KTsKK30KKworQ29tcGlsYXRpb24qIERhdGFiYXNlOjpuZXdDb21waWxhdGlvbihCeXRlY29kZXMq
IGJ5dGVjb2RlcywgQ29tcGlsYXRpb25LaW5kIGtpbmQpCit7CisgICAgT3duUHRyPENvbXBpbGF0
aW9uPiBjb21waWxhdGlvbiA9IGFkb3B0UHRyKG5ldyBDb21waWxhdGlvbihieXRlY29kZXMsIGtp
bmQpKTsKKyAgICBDb21waWxhdGlvbiogcmVzdWx0ID0gY29tcGlsYXRpb24uZ2V0KCk7CisgICAg
bV9jb21waWxhdGlvbnMuYXBwZW5kKGNvbXBpbGF0aW9uLnJlbGVhc2UoKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworQ29tcGlsYXRpb24qIERhdGFiYXNlOjpuZXdDb21waWxhdGlvbihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29tcGlsYXRpb25LaW5kIGtpbmQpCit7CisgICAgcmV0dXJuIG5l
d0NvbXBpbGF0aW9uKGVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2spLCBraW5kKTsKK30KKwor
SlNWYWx1ZSBEYXRhYmFzZTo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNP
YmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpT
QXJyYXkqIGJ5dGVjb2RlcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnl0ZWNvZGVzLnNpemUoKTsgKytpKQorICAgICAgICBi
eXRlY29kZXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG1fYnl0ZWNvZGVzW2ldLnRvSlMoZXhl
YykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ5dGVjb2RlcywgYnl0ZWNvZGVzKTsKKyAgICAKKyAgICBKU0FycmF5KiBj
b21waWxhdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2NvbXBpbGF0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgY29t
cGlsYXRpb25zLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBtX2NvbXBpbGF0aW9uc1tpXS0+dG9K
UyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsYXRpb25zLCBjb21waWxhdGlvbnMpOworICAgIAorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6dG9KU09OKCkgY29uc3QKK3sK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZSgKKyAgICAgICAgbV9nbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KG1fZ2xvYmFsRGF0YSwganNOdWxsKCkpKTsKKyAgICAKKyAgICByZXR1cm4gSlNPTlN0cmluZ2lm
eShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgdG9KUyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSksIDApOworfQorCitib29sIERhdGFiYXNlOjpzYXZlKGNvbnN0IGNoYXIqIGZpbGVuYW1l
KSBjb25zdAoreworICAgIE93blB0cjxGaWxlUHJpbnRTdHJlYW0+IG91dCA9IEZpbGVQcmludFN0
cmVhbTo6b3BlbihmaWxlbmFtZSwgInciKTsKKyAgICBpZiAoIW91dCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIG91dC0+cHJpbnQodG9KU09OKCkpOworICAgIHJldHVybiB0cnVl
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBQQlBEYXRhYmFzZV9oCisjZGVmaW5lIFBCUERhdGFiYXNlX2gKKworI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQQlBCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJQQlBD
b21waWxhdGlvbi5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGF0aW9uS2luZC5oIgorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgUEJQIHsKKworY2xhc3MgRGF0YWJhc2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OyBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhYmFzZSk7CitwdWJsaWM6CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgRGF0YWJhc2UoSlNHbG9iYWxEYXRhJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
fkRhdGFiYXNlKCk7CisgICAgCisgICAgQnl0ZWNvZGVzKiBlbnN1cmVCeXRlY29kZXNGb3IoQ29k
ZUJsb2NrKik7CisgICAgdm9pZCBub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqKTsKKyAgICAK
KyAgICBDb21waWxhdGlvbiogbmV3Q29tcGlsYXRpb24oQ29kZUJsb2NrKiwgQ29tcGlsYXRpb25L
aW5kKTsKKyAgICBDb21waWxhdGlvbiogbmV3Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiwgQ29tcGls
YXRpb25LaW5kKTsKKyAgICAKKyAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YWJhc2UgdG8gYSBKYXZh
U2NyaXB0IG9iamVjdCB0aGF0IGlzIHN1aXRhYmxlIGZvciBKU09OIHN0cmluZ2lmaWNhdGlvbi4K
KyAgICAvLyBOb3RlIHRoYXQgaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byB1c2UgYW4gRXhl
Y1N0YXRlKiBhc3NvY2lhdGVkIHdpdGggYSBnbG9iYWwKKyAgICAvLyBvYmplY3QgdGhhdCBpcyAi
Y2xlYW4iIC0gaS5lLiBhcnJheSBhbmQgb2JqZWN0IHByb3RvdHlwZXMgaGF2ZW4ndCBoYWQgc3Ry
YW5nZSB0aGluZ3MKKyAgICAvLyBkb25lIHRvIHRoZW0uIEFuZCB5ZXMsIGl0IHNob3VsZCBiZSBh
cHByb3ByaWF0ZSB0byBqdXN0IHVzZSBhIGdsb2JhbEV4ZWMgaGVyZS4KKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgCisgICAgLy8gQ29u
dmVydHMgdGhlIGRhdGFiYXNlIHRvIGEgSmF2YVNjcmlwdCBvYmplY3QgdXNpbmcgYSBwcml2YXRl
IHRlbXBvcmFyeSBnbG9iYWwgb2JqZWN0LAorICAgIC8vIGFuZCB0aGVuIHJldHVybnMgdGhlIEpT
T04gcmVwcmVzZW50YXRpb24gb2YgdGhhdCBvYmplY3QuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHRvSlNPTigpIGNvbnN0OworICAgIAorICAgIC8vIFNhdmVzIHRoZSBKU09OIHJlcHJl
c2VudGF0aW9uIChmcm9tIHRvSlNPTigpKSB0byB0aGUgZ2l2ZW4gZmlsZS4gUmV0dXJucyBmYWxz
ZSBpZiB0aGUKKyAgICAvLyBzYXZlIGZhaWxlZC4KKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IHNhdmUoY29uc3QgY2hhciogZmlsZW5hbWUpIGNvbnN0OworCitwcml2YXRlOgorICAgIEJ5dGVj
b2RlcyogYWRkQnl0ZWNvZGVzKENvZGVCbG9ja0hhc2gpOworICAgIAorICAgIEpTR2xvYmFsRGF0
YSYgbV9nbG9iYWxEYXRhOworICAgIFNlZ21lbnRlZFZlY3RvcjxCeXRlY29kZXM+IG1fYnl0ZWNv
ZGVzOworICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNvZGVzKj4gbV9ieXRlY29kZXNNYXA7
CisgICAgVmVjdG9yPE93blB0cjxDb21waWxhdGlvbj4gPiBtX2NvbXBpbGF0aW9uczsKK307CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUERhdGFiYXNlX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRXhlY3V0
aW9uQ291bnRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBC
UEV4ZWN1dGlvbkNvdW50ZXJfaAorI2RlZmluZSBQQlBFeGVjdXRpb25Db3VudGVyX2gKKworI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworY2xhc3MgRXhlY3V0aW9uQ291
bnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxF
KEV4ZWN1dGlvbkNvdW50ZXIpOworcHVibGljOgorICAgIEV4ZWN1dGlvbkNvdW50ZXIoKSA6IG1f
Y291bnRlcigwKSB7IH0KKyAgICAKKyAgICB1aW50NjRfdCogYWRkcmVzcygpIHsgcmV0dXJuICZt
X2NvdW50ZXI7IH0KKyAgICAKKyAgICB1aW50NjRfdCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y291bnRlcjsgfQorCitwcml2YXRlOgorICAgIHVpbnQ2NF90IG1fY291bnRlcjsKK307CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUEV4ZWN1dGlvbkNvdW50ZXJf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmln
aW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQQlBPcmlnaW4uaCIKKworI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
UEJQQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiUEJQRGF0YWJhc2UuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBQQlAgeworCitPcmlnaW46Ok9yaWdpbihEYXRhYmFzZSYgZGF0YWJhc2Us
IENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIDogbV9i
eXRlY29kZXMoZGF0YWJhc2UuZW5zdXJlQnl0ZWNvZGVzRm9yKGNvZGVCbG9jaykpCisgICAgLCBt
X2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKK3sKK30KKwordm9pZCBPcmlnaW46OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoKm1fYnl0ZWNvZGVzLCAi
OmJjIyIsIG1fYnl0ZWNvZGVJbmRleCk7Cit9CisKK0pTVmFsdWUgT3JpZ2luOjp0b0pTKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpzTnVtYmVyKG1fYnl0ZWNvZGVz
LT5pZCgpKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVJbmRleCwganNOdW1iZXIobV9ieXRlY29kZUluZGV4
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUE9yaWdpbl9oCisjZGVmaW5lIFBCUE9yaWdp
bl9oCisKKyNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb2RlQmxvY2s7CisKK25hbWVzcGFjZSBQQlAgewor
CitjbGFzcyBCeXRlY29kZXM7CitjbGFzcyBEYXRhYmFzZTsKKworY2xhc3MgT3JpZ2luIHsKK3B1
YmxpYzoKKyAgICBPcmlnaW4oKQorICAgICAgICA6IG1fYnl0ZWNvZGVJbmRleChzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmln
aW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fYnl0ZWNvZGVJ
bmRleChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSAxKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgT3JpZ2luKEJ5dGVjb2RlcyogYnl0ZWNvZGVzLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQorICAgICAgICA6IG1fYnl0ZWNvZGVzKGJ5dGVjb2RlcykKKyAgICAgICAgLCBt
X2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2J5
dGVjb2RlSW5kZXggPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSAxKTsK
KyAgICB9CisgICAgCisgICAgT3JpZ2luKERhdGFiYXNlJiwgQ29kZUJsb2NrKiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biBtX2J5dGVjb2RlSW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
OyB9CisgICAgCisgICAgQnl0ZWNvZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5
dGVjb2RlczsgfQorICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2J5dGVjb2RlSW5kZXg7IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3JpZ2lu
JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9yaWdpbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAgICAK
KyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsK
KyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7Cit9OworCitpbmxpbmUgYm9vbCBPcmlnaW46
Om9wZXJhdG9yPT0oY29uc3QgT3JpZ2luJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9i
eXRlY29kZXMgPT0gb3RoZXIubV9ieXRlY29kZXMKKyAgICAgICAgJiYgbV9ieXRlY29kZUluZGV4
ID09IG90aGVyLm1fYnl0ZWNvZGVJbmRleDsKK30KKworaW5saW5lIHVuc2lnbmVkIE9yaWdpbjo6
aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6UHRySGFzaDxCeXRlY29kZXMqPjo6aGFz
aChtX2J5dGVjb2RlcykgKyBtX2J5dGVjb2RlSW5kZXg7Cit9CisKK2lubGluZSBib29sIE9yaWdp
bjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2J5dGVj
b2RlSW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworfQorCitz
dHJ1Y3QgT3JpZ2luSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgT3JpZ2lu
JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBPcmlnaW4mIGEsIGNvbnN0IE9yaWdpbiYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8SlNDOjpQQlA6Ok9yaWdpbj4geworICAgIHR5cGVkZWYgSlNDOjpQQlA6Ok9yaWdp
bkhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRz
OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlBCUDo6T3JpZ2luPiA6IFNpbXBs
ZUNsYXNzSGFzaFRyYWl0czxKU0M6OlBCUDo6T3JpZ2luPiB7IH07CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gUEJQT3JpZ2luX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpblN0YWNrLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUE9yaWdpblN0
YWNrLmgiCisKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIFBCUCB7CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpCit7CisgICAgbV9zdGFjay5hcHBlbmQoT3JpZ2luKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKSk7Cit9CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhjb25zdCBPcmln
aW4mIG9yaWdpbikKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChvcmlnaW4pOworfQorCitPcmlnaW5T
dGFjazo6T3JpZ2luU3RhY2soRGF0YWJhc2UmIGRhdGFiYXNlLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAgICBWZWN0b3I8Q29kZU9yaWdp
bj4gc3RhY2sgPSBjb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7CisgICAgCisgICAgYXBwZW5kKE9y
aWdpbihkYXRhYmFzZSwgY29kZUJsb2NrLCBzdGFja1swXS5ieXRlY29kZUluZGV4KSk7CisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHN0YWNrLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGFwcGVuZChPcmlnaW4oCisgICAgICAgICAgICBkYXRhYmFzZS5lbnN1cmVCeXRlY29kZXNG
b3Ioc3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jaygpKSwKKyAgICAg
ICAgICAgIHN0YWNrW2ldLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICB9Cit9CisKK09yaWdpblN0YWNr
Ojp+T3JpZ2luU3RhY2soKSB7IH0KKwordm9pZCBPcmlnaW5TdGFjazo6YXBwZW5kKGNvbnN0IE9y
aWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RhY2suYXBwZW5kKG9yaWdpbik7Cit9CisKK2Jvb2wg
T3JpZ2luU3RhY2s6Om9wZXJhdG9yPT0oY29uc3QgT3JpZ2luU3RhY2smIG90aGVyKSBjb25zdAor
eworICAgIGlmIChtX3N0YWNrLnNpemUoKSAhPSBvdGhlci5tX3N0YWNrLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc3RhY2suc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX3N0YWNrW2ldICE9IG90aGVyLm1fc3RhY2tbaV0p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVl
OworfQorCit1bnNpZ25lZCBPcmlnaW5TdGFjazo6aGFzaCgpIGNvbnN0Cit7CisgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gbV9zdGFjay5zaXplKCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9zdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgcmVzdWx0ICo9IDM7CisgICAgICAgIHJl
c3VsdCArPSBtX3N0YWNrW2ldLmhhc2goKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBPcmlnaW5TdGFjazo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0YWNrLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChpKQorICAgICAgICAgICAgb3V0LnByaW50KCIgLS0+ICIpOworICAgICAgICBv
dXQucHJpbnQobV9zdGFja1tpXSk7CisgICAgfQorfQorCitKU1ZhbHVlIE9yaWdpblN0YWNrOjp0
b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3N0YWNrLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIGksIG1fc3RhY2tbaV0udG9KUyhleGVjKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFjay5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFBCUE9yaWdpblN0YWNrX2gKKyNkZWZpbmUgUEJQT3JpZ2lu
U3RhY2tfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBCUE9yaWdpbi5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJs
b2NrOworc3RydWN0IENvZGVPcmlnaW47CisKK25hbWVzcGFjZSBQQlAgeworCitjbGFzcyBEYXRh
YmFzZTsKKworY2xhc3MgT3JpZ2luU3RhY2sgeworcHVibGljOgorICAgIE9yaWdpblN0YWNrKCkg
eyB9CisgICAgCisgICAgT3JpZ2luU3RhY2soV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBl
KTsKKyAgICAKKyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhjb25zdCBPcmlnaW4mKTsKKyAgICAK
KyAgICBleHBsaWNpdCBPcmlnaW5TdGFjayhEYXRhYmFzZSYsIENvZGVCbG9jayosIGNvbnN0IENv
ZGVPcmlnaW4mKTsKKyAgICAKKyAgICB+T3JpZ2luU3RhY2soKTsKKyAgICAKKyAgICB2b2lkIGFw
cGVuZChjb25zdCBPcmlnaW4mKTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhY2suaXNFbXB0eSgpOyB9CisgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhY2suc2l6ZSgpOyB9CisgICAgY29uc3QgT3JpZ2luJiBmcm9tQm90
dG9tKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tbaV07IH0KKyAgICBjb25zdCBP
cmlnaW4mIGZyb21Ub3AodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9zdGFja1ttX3N0YWNr
LnNpemUoKSAtIGkgLSAxXTsgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmln
aW5TdGFjayYpIGNvbnN0OworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKyAgICAKKyAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgIAorcHJpdmF0ZToKKyAgICBWZWN0b3I8T3JpZ2luLCAxPiBtX3N0YWNrOworfTsKKwor
aW5saW5lIGJvb2wgT3JpZ2luU3RhY2s6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zdGFjay5zaXplKCkgPT0gMSAmJiBtX3N0YWNrWzBdLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7Cit9CisKK3N0cnVjdCBPcmlnaW5TdGFja0hhc2ggeworICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE9yaWdpblN0YWNrJiBrZXkpIHsgcmV0dXJuIGtleS5o
YXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBPcmlnaW5TdGFjayYgYSwgY29u
c3QgT3JpZ2luU3RhY2smIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpQQlAKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpT
Qzo6UEJQOjpPcmlnaW5TdGFjaz4geworICAgIHR5cGVkZWYgSlNDOjpQQlA6Ok9yaWdpblN0YWNr
SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UEJQOjpPcmlnaW5TdGFjaz4gOiBT
aW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpQQlA6Ok9yaWdpblN0YWNrPiB7IH07CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUEJQT3JpZ2luU3RhY2tfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwzMCBAQAogICAgIG1hY3Jv
KGFyZ3VtZW50cykgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oYmluZCkgXAorICAg
IG1hY3JvKGJ5dGVjb2RlKSBcCisgICAgbWFjcm8oYnl0ZWNvZGVJbmRleCkgXAorICAgIG1hY3Jv
KGJ5dGVjb2RlcykgXAorICAgIG1hY3JvKGJ5dGVjb2Rlc0lEKSBcCiAgICAgbWFjcm8oY2FsbCkg
XAogICAgIG1hY3JvKGNhbGxlZSkgXAogICAgIG1hY3JvKGNhbGxlcikgXAorICAgIG1hY3JvKGNv
bXBpbGF0aW9uS2luZCkgXAorICAgIG1hY3JvKGNvbXBpbGF0aW9ucykgXAogICAgIG1hY3JvKGNv
bXBpbGUpIFwKICAgICBtYWNybyhjb25maWd1cmFibGUpIFwKICAgICBtYWNybyhjb25zdHJ1Y3Rv
cikgXAorICAgIG1hY3JvKGNvdW50ZXJzKSBcCisgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKKyAg
ICBtYWNybyhkZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhlbnVtZXJhYmxlKSBcCiAgICAgbWFj
cm8oZXZhbCkgXAogICAgIG1hY3JvKGV4ZWMpIFwKKyAgICBtYWNybyhleGVjdXRpb25Db3VudCkg
XAogICAgIG1hY3JvKGZyb21DaGFyQ29kZSkgXAogICAgIG1hY3JvKGdsb2JhbCkgXAogICAgIG1h
Y3JvKGdldCkgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCisgICAgbWFjcm8oaGFzaCkg
XAogICAgIG1hY3JvKGlnbm9yZUNhc2UpIFwKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3Jv
KGlucHV0KSBcCkBAIC01Niw2ICs2Nyw3IEBACiAgICAgbWFjcm8obmFtZSkgXAogICAgIG1hY3Jv
KG5vdykgXAogICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKG9yaWdpbikgXAogICAgIG1h
Y3JvKHBhcnNlKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNy
byhwcm90b3R5cGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGlvbkhhcm5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsOCBAQCBpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEV4ZWNTdGF0CiAgICAg
ICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgogICAgICAgICBM
TEludDo6Z2V0RW50cnlwb2ludChleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay5nZXQoKSwg
aml0Q29kZSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIGlmIChleGVjLT5nbG9iYWxEYXRhKCkubV9wZXJC
eXRlY29kZVByb2ZpbGVyKQorICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLm1fcGVyQnl0
ZWNvZGVQcm9maWxlci0+ZW5zdXJlQnl0ZWNvZGVzRm9yKGNvZGVCbG9jay5nZXQoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkBAIC01Niw2
ICs1OCw4IEBAIGlubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbigKICAgICAg
ICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCiAgICAgICAgIExM
SW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBraW5kLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENv
ZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgaWYgKGV4ZWMtPmds
b2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCisgICAgICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRlY29kZXNGb3IoY29kZUJs
b2NrLmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2Vsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNp
b24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDEwICsyNDUsMTYgQEAgSlNHbG9iYWxEYXRhOjpK
U0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0
KCk7CiAgICAgCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKCp0aGlzKTsKKyAg
ICAKKyAgICBpZiAoT3B0aW9uczo6ZW5hYmxlUEJQKCkpCisgICAgICAgIG1fcGVyQnl0ZWNvZGVQ
cm9maWxlciA9IGFkb3B0UHRyKG5ldyBQQlA6OkRhdGFiYXNlKCp0aGlzKSk7CiB9CiAKIEpTR2xv
YmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiB7CisgICAgLy8gQ2xlYXIgdGhpcyBmaXJzdCB0byBl
bnN1cmUgdGhhdCBub2JvZHkgdHJpZXMgdG8gcmVtb3ZlIHRoZW1zZWx2ZXMgZnJvbSBpdC4KKyAg
ICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIuY2xlYXIoKTsKKyAgICAKICAgICBBU1NFUlQoIW1fYXBp
TG9jay5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKICAgICBoZWFwLmRpZFN0YXJ0Vk1T
aHV0ZG93bigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVt
ZXJpY1N0cmluZ3MuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlByaXZh
dGVOYW1lLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgi
CkBAIC0zNTIsNiArMzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGRvdWJsZSBjYWNo
ZWREYXRlU3RyaW5nVmFsdWU7CiAKICAgICAgICAgUHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVy
OworICAgICAgICBPd25QdHI8UEJQOjpEYXRhYmFzZT4gbV9wZXJCeXRlY29kZVByb2ZpbGVyOwog
ICAgICAgICBSZWdFeHBDYWNoZSogbV9yZWdFeHBDYWNoZTsKICAgICAgICAgQnVtcFBvaW50ZXJB
bGxvY2F0b3IgbV9yZWdFeHBBbGxvY2F0b3I7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB2KGJvb2wsIHNob3dERkdEaXNhc3NlbWJseSwgZmFsc2UpIFwK
ICAgICB2KGJvb2wsIHNob3dBbGxERkdOb2RlcywgZmFsc2UpIFwKICAgICBcCisgICAgdihib29s
LCBlbmFibGVQQlAsIGZhbHNlKSBcCisgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1PcHRp
bWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwMCkgXAogICAgIFwKICAgICB2
KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgMTgwKSBcCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0xMi0wMSAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYWJs
ZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBJUiBkdW1wcyBh
bmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1hZGUgc29tZSBtaW5vciBjaGFuZ2VzIHRvIHN1cHBvcnQgdGhlIFBCUCAoUGVyIEJ5
dGVjb2RlIFByb2ZpbGVyKS4gRmlsZU91dHB1dFN0cmVhbQorICAgICAgICBub3cgaGFzIGFuIG9w
ZW4oKSBtZXRob2QsIGFuZCBEYXRhTG9nIHVzZXMgaXQuIFN0cmluZ1ByaW50U3RyZWFtIGhhcyBh
IHJlc2V0KCkgbWV0aG9kLAorICAgICAgICB3aGljaCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBz
YW1lIFN0cmluZ1ByaW50U3RyZWFtIGZvciBjcmVhdGluZyBtdWx0aXBsZSBzdHJpbmdzLgorICAg
ICAgICBTZWdtZW50ZWRWZWN0b3Igbm93IGhhcyBhIGNvbnN0IG9wZXJhdG9yW10uIEFuZCwgV1RG
U3RyaW5nIG5vdyBjYW4gZG8gZnJvbVVURjgoKSBvbgorICAgICAgICBhIENTdHJpbmcgZGlyZWN0
bHkuCisKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxp
emVMb2dGaWxlT25jZSk6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKiB3dGYvU2VnbWVudGVkVmVjdG9y
Lmg6CisgICAgICAgIChXVEY6OlNlZ21lbnRlZFZlY3Rvcjo6YXQpOgorICAgICAgICAoU2VnbWVu
dGVkVmVjdG9yKToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9yOjpvcGVyYXRvcltdKToK
KyAgICAgICAgKiB3dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmdQcmludFN0cmVhbTo6cmVzZXQpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKFN0cmluZ1ByaW50U3RyZWFtKToKKyAgICAgICAg
KiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZyb21VVEY4
KToKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAg
ICAgIChTdHJpbmcpOgorCiAyMDEyLTExLTMwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQGRpZ2lhLmNvbT4sIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBkaWdpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBTZXBhcmF0ZSBRdCBXZWJLaXQgaW50byBRdCBXZWJLaXQgYW5kIFF0IFdl
YktpdCBXaWRnZXRzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291
cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDEwICs3Myw4IEBA
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxlT25jZSgpCiAjZW5kaWYKIAogICAgIGlmIChm
aWxlbmFtZSkgewotICAgICAgICBGSUxFKiByYXdGaWxlID0gZm9wZW4oYWN0dWFsRmlsZW5hbWUs
ICJ3Iik7Ci0gICAgICAgIGlmIChyYXdGaWxlKQotICAgICAgICAgICAgZmlsZSA9IG5ldyBGaWxl
UHJpbnRTdHJlYW0ocmF3RmlsZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZmlsZSA9IEZpbGVQ
cmludFN0cmVhbTo6b3BlbihhY3R1YWxGaWxlbmFtZSwgInciKS5sZWFrUHRyKCk7CisgICAgICAg
IGlmICghZmlsZSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2FybmluZzogQ291bGQg
bm90IG9wZW4gbG9nIGZpbGUgJXMgZm9yIHdyaXRpbmcuXG4iLCBhY3R1YWxGaWxlbmFtZSk7CiAg
ICAgfQogI2VuZGlmIC8vIERBVEFfTE9HX1RPX0ZJTEUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zp
bGVQcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsZVByaW50
U3RyZWFtLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvRmlsZVByaW50
U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTUgQEAgRmlsZVByaW50U3Ry
ZWFtOjp+RmlsZVByaW50U3RyZWFtKCkKICAgICBmY2xvc2UobV9maWxlKTsKIH0KIAorUGFzc093
blB0cjxGaWxlUHJpbnRTdHJlYW0+IEZpbGVQcmludFN0cmVhbTo6b3Blbihjb25zdCBjaGFyKiBm
aWxlbmFtZSwgY29uc3QgY2hhciogbW9kZSkKK3sKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oZmls
ZW5hbWUsIG1vZGUpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8
RmlsZVByaW50U3RyZWFtPigpOworICAgIAorICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZVBy
aW50U3RyZWFtKGZpbGUpKTsKK30KKwogdm9pZCBGaWxlUHJpbnRTdHJlYW06OnZwcmludGYoY29u
c3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpCiB7CiAgICAgdmZwcmludGYobV9maWxl
LCBmb3JtYXQsIGFyZ0xpc3QpOwpJbmRleDogU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmgJKHJldmlz
aW9uIDEzNjMxOCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEZpbGVQcmludFN0cmVhbV9oCiAKICNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNDEsNiArNDIsOCBAQCBw
dWJsaWM6CiAgICAgRmlsZVByaW50U3RyZWFtKEZJTEUqLCBBZG9wdGlvbk1vZGUgPSBBZG9wdCk7
CiAgICAgdmlydHVhbCB+RmlsZVByaW50U3RyZWFtKCk7CiAgICAgCisgICAgc3RhdGljIFBhc3NP
d25QdHI8RmlsZVByaW50U3RyZWFtPiBvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb25zdCBj
aGFyKiBtb2RlKTsKKyAgICAKICAgICBGSUxFKiBmaWxlKCkgeyByZXR1cm4gbV9maWxlOyB9CiAg
ICAgCiAgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FU
VFJJQlVURV9QUklOVEYoMiwgMCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAkocmV2
aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyOCwxMSArMTI4LDIxIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAg
ICAgcmV0dXJuIHNlZ21lbnRGb3IoaW5kZXgpLT5hdChzdWJzY3JpcHRGb3IoaW5kZXgpKTsKICAg
ICAgICAgfQogCisgICAgICAgIGNvbnN0IFQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VnbWVudGVkVmVjdG9yPFQsIFNl
Z21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4qPih0aGlzKS0+YXQoaW5kZXgpOworICAgICAgICB9
CisKICAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgICAgIH0KIAorICAgICAgICBjb25zdCBUJiBv
cGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGF0KGluZGV4KTsKKyAgICAgICAgfQorCiAgICAgICAgIFQmIGxhc3QoKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9T
dHJpbmdQcmludFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDEyIEBAIENT
dHJpbmcgU3RyaW5nUHJpbnRTdHJlYW06OnRvQ1N0cmluZygpCiAgICAgcmV0dXJuIENTdHJpbmco
bV9idWZmZXIsIG1fbmV4dCk7CiB9CiAKK3ZvaWQgU3RyaW5nUHJpbnRTdHJlYW06OnJlc2V0KCkK
K3sKKyAgICBtX25leHQgPSAwOworICAgIG1fYnVmZmVyWzBdID0gMDsKK30KKwogdm9pZCBTdHJp
bmdQcmludFN0cmVhbTo6aW5jcmVhc2VTaXplKHNpemVfdCBuZXdTaXplKQogewogICAgIEFTU0VS
VChuZXdTaXplID4gbV9zaXplKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAko
cmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0KSBXVEZfQVRUUklCVVRFX1BSSU5U
RigyLCAwKTsKICAgICAKICAgICBDU3RyaW5nIHRvQ1N0cmluZygpOworICAgIHZvaWQgcmVzZXQo
KTsKICAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZWFzZVNpemUoc2l6ZV90KTsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEyLDYgKzkxMiwx
MSBAQCBTdHJpbmcgU3RyaW5nOjpmcm9tVVRGOChjb25zdCBMQ2hhciogc3RyCiAgICAgcmV0dXJu
IGZyb21VVEY4KHN0cmluZywgc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0
cmluZykpKTsKIH0KIAorU3RyaW5nIFN0cmluZzo6ZnJvbVVURjgoY29uc3QgQ1N0cmluZyYgcykK
K3sKKyAgICByZXR1cm4gZnJvbVVURjgocy5kYXRhKCkpOworfQorCiBTdHJpbmcgU3RyaW5nOjpm
cm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciogc3RyaW5nLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBTdHJpbmcgdXRmOCA9IGZyb21VVEY4KHN0cmluZywgc2l6ZSk7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw2ICs0NDAsNyBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29u
c3QgTENoYXIqKTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqIHMsIHNp
emVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihzKSwgbGVuZ3RoKTsgfTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNo
YXIqIHMpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihz
KSk7IH07CisgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBDU3RyaW5nJik7CiAKICAg
ICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQg
d2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYt
OC4KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhM
YXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzYzMTgpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMi0w
MSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQg
YmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBJUiBk
dW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgdG9vbCB0aGF0IGFsbG93cyB5b3UgdG8gZ3JvayB0aGUgb3V0
cHV0IGZyb20gSlNDJ3MgbmV3IFBCUCAoUGVyIEJ5dGVjb2RlCisgICAgICAgIFByb2ZpbGVyKS4g
Q3VycmVudGx5LCB0aGlzIHN0aWxsIGdldHMgY29uZnVzZWQgYSBiaXQgYWJvdXQgdGhlIGV4ZWN1
dGlvbiBjb3VudHMKKyAgICAgICAgb2YgYSBtZXRob2QgcnVubmluZyBzdGFuZGFsb25lIHZlcnN1
cyBhIG1ldGhvZCBydW5uaW5nIGlubGluZWQsIGJ1dCBvdGhlciB0aGFuCisgICAgICAgIHRoYXQs
IGl0J3MgcHJldHR5IGNvb2wuIFNlZSB0aGUgYXR0YWNoZWQgInNhbXBsaW5nIHByb2ZpbGluZyBz
ZXNzaW9uIiBhdHRhY2hlZCB0bworICAgICAgICB0aGUgYnVnIHRvIHNlZSBpdCBpbiBhY3Rpb24u
CisKKyAgICAgICAgKiBTY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dDogQWRkZWQuCisKIDIwMTIt
MTItMDEgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBb
WHZmYkRyaXZlcl0gWHZmYkRyaXZlclRlc3QudGVzdF9uZXh0X2ZyZWVfZGlzcGxheSBpcyBmbGFr
eSBvbiBidWlsZGVycyB1c2luZyBYdmZiRHJpdmVyCkluZGV4OiBUb29scy9TY3JpcHRzL2Rpc3Bs
YXktcGJwLW91dHB1dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rpc3BsYXktcGJwLW91
dHB1dAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wYnAtb3V0cHV0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwMiBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICdydWJ5Z2VtcycKKwor
cmVxdWlyZSAnanNvbicKK3JlcXVpcmUgJ3JlYWRsaW5lJworCitjbGFzcyBCeXRlY29kZQorICAg
IGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2RlSW5kZXgsIDpkZXNjcmlwdGlvbiwgOnRvcENvdW50cwor
ICAgIAorICAgIGRlZiBpbml0aWFsaXplKGJ5dGVjb2RlSW5kZXgsIGRlc2NyaXB0aW9uKQorICAg
ICAgICBAYnl0ZWNvZGVJbmRleCA9IGJ5dGVjb2RlSW5kZXgKKyAgICAgICAgQGRlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb24KKyAgICAgICAgQHRvcENvdW50cyA9IFtdCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGFkZFRvcENvdW50KGNvdW50KQorICAgICAgICBAdG9wQ291bnRzIDw8IGNvdW50Cisg
ICAgZW5kCisgICAgCisgICAgZGVmIHRvdGFsRXhlY3V0aW9uQ291bnQKKyAgICAgICAgc3VtID0g
MAorICAgICAgICBAdG9wQ291bnRzLmVhY2ggeworICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAg
ICAgICAgICBzdW0gKz0gdmFsdWUuY291bnQKKyAgICAgICAgfQorICAgICAgICBzdW0KKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgZXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAgICAgICBzdW0gPSAw
CisgICAgICAgIEB0b3BDb3VudHMuZWFjaCB7CisgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAg
ICAgICAgIGlmIHZhbHVlLmVuZ2luZSA9PSBlbmdpbmUKKyAgICAgICAgICAgICAgICBzdW0gKz0g
dmFsdWUuY291bnQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIHN1bQorICAg
IGVuZAorZW5kCisKK2NsYXNzIEJ5dGVjb2RlcworICAgIGF0dHJfYWNjZXNzb3IgOmhhc2gKKyAg
ICBpbmNsdWRlIEVudW1lcmFibGUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShqc29uKQorICAg
ICAgICBAaGFzaCA9IGpzb25bImhhc2giXS50b19zCisgICAgICAgIEBieXRlY29kZSA9IHt9Cisg
ICAgICAgIGpzb25bImJ5dGVjb2RlIl0uZWFjaCB7CisgICAgICAgICAgICB8IHN1Ykpzb24gfAor
ICAgICAgICAgICAgaW5kZXggPSBzdWJKc29uWyJieXRlY29kZUluZGV4Il0udG9faQorICAgICAg
ICAgICAgQGJ5dGVjb2RlW2luZGV4XSA9IEJ5dGVjb2RlLm5ldyhpbmRleCwgc3ViSnNvblsiZGVz
Y3JpcHRpb24iXS50b19zKQorICAgICAgICB9CisgICAgZW5kCisgICAgCisgICAgZGVmIGVhY2gK
KyAgICAgICAgQGJ5dGVjb2RlLnZhbHVlcy5zb3J0e3xhLCBifCBhLmJ5dGVjb2RlSW5kZXggPD0+
IGIuYnl0ZWNvZGVJbmRleH0uZWFjaCB7CisgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAg
ICAgIHlpZWxkIHZhbHVlCisgICAgICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYnl0ZWNv
ZGUoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgQGJ5dGVjb2RlW2J5dGVjb2RlSW5kZXhdCisgICAg
ZW5kCisgICAgCisgICAgZGVmIHRvdGFsTWF4RXhlY3V0aW9uQ291bnQKKyAgICAgICAgbWF4ID0g
MAorICAgICAgICBAYnl0ZWNvZGUuZWFjaF92YWx1ZSB7CisgICAgICAgICAgICB8IGJ5dGVjb2Rl
IHwKKyAgICAgICAgICAgIG1heCA9IFttYXgsIGJ5dGVjb2RlLnRvdGFsRXhlY3V0aW9uQ291bnRd
Lm1heAorICAgICAgICB9CisgICAgICAgIG1heAorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXhF
eGVjdXRpb25Db3VudChlbmdpbmUpCisgICAgICAgIG1heCA9IDAKKyAgICAgICAgQGJ5dGVjb2Rl
LmVhY2hfdmFsdWUgeworICAgICAgICAgICAgfCBieXRlY29kZSB8CisgICAgICAgICAgICBtYXgg
PSBbbWF4LCBieXRlY29kZS5leGVjdXRpb25Db3VudChlbmdpbmUpXS5tYXgKKyAgICAgICAgfQor
ICAgICAgICBtYXgKKyAgICBlbmQKK2VuZAorCitkZWYgb3JpZ2luU3RhY2tGcm9tSlNPTihqc29u
KQorICAgIGpzb24ubWFwIHsKKyAgICAgICAgfCBzdWJKc29uIHwKKyAgICAgICAgJGJ5dGVjb2Rl
c1tzdWJKc29uWyJieXRlY29kZXNJRCJdLnRvX2ldLmJ5dGVjb2RlKHN1Ykpzb25bImJ5dGVjb2Rl
SW5kZXgiXS50b19pKQorICAgIH0KK2VuZAorCitjbGFzcyBDb21waWxlZEJ5dGVjb2RlCisgICAg
YXR0cl9hY2Nlc3NvciA6b3JpZ2luLCA6ZGVzY3JpcHRpb24KKyAgICAKKyAgICBkZWYgaW5pdGlh
bGl6ZShqc29uKQorICAgICAgICBAb3JpZ2luID0gb3JpZ2luU3RhY2tGcm9tSlNPTihqc29uWyJv
cmlnaW4iXSkKKyAgICAgICAgQGRlc2NyaXB0aW9uID0ganNvblsiZGVzY3JpcHRpb24iXS50b19z
CisgICAgZW5kCitlbmQKKworY2xhc3MgRXhlY3V0aW9uQ291bnRlcgorICAgIGF0dHJfYWNjZXNz
b3IgOm9yaWdpbiwgOmVuZ2luZSwgOmNvdW50CisgICAgCisgICAgZGVmIGluaXRpYWxpemUob3Jp
Z2luLCBlbmdpbmUsIGNvdW50KQorICAgICAgICBAb3JpZ2luID0gb3JpZ2luCisgICAgICAgIEBl
bmdpbmUgPSBlbmdpbmUKKyAgICAgICAgQGNvdW50ID0gY291bnQKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBDb21waWxhdGlvbgorICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2RlLCA6ZW5naW5lLCA6
ZGVzY3JpcHRpb25zLCA6Y291bnRlcnMKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShqc29uKQor
ICAgICAgICBAYnl0ZWNvZGUgPSAkYnl0ZWNvZGVzW2pzb25bImJ5dGVjb2Rlc0lEIl0udG9faV0K
KyAgICAgICAgQGVuZ2luZSA9IGpzb25bImNvbXBpbGF0aW9uS2luZCJdCisgICAgICAgIEBkZXNj
cmlwdGlvbnMgPSBqc29uWyJkZXNjcmlwdGlvbnMiXS5tYXAgeworICAgICAgICAgICAgfCBzdWJK
c29uIHwKKyAgICAgICAgICAgIENvbXBpbGVkQnl0ZWNvZGUubmV3KHN1Ykpzb24pCisgICAgICAg
IH0KKyAgICAgICAgQGNvdW50ZXJzID0ge30KKyAgICAgICAganNvblsiY291bnRlcnMiXS5lYWNo
IHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8CisgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW5T
dGFja0Zyb21KU09OKHN1Ykpzb25bIm9yaWdpbiJdKQorICAgICAgICAgICAgY291bnRlciA9IEV4
ZWN1dGlvbkNvdW50ZXIubmV3KG9yaWdpbiwgQGVuZ2luZSwgc3ViSnNvblsiZXhlY3V0aW9uQ291
bnQiXS50b19pKQorICAgICAgICAgICAgQGNvdW50ZXJzW29yaWdpbl0gPSBjb3VudGVyCisgICAg
ICAgICAgICBvcmlnaW5bLTFdLmFkZFRvcENvdW50KGNvdW50ZXIpCisgICAgICAgIH0KKyAgICBl
bmQKK2VuZAorCiskanNvbiA9IEpTT046OnBhcnNlKElPOjpyZWFkKEFSR1ZbMF0pKQorJGJ5dGVj
b2RlcyA9ICRqc29uWyJieXRlY29kZXMiXS5tYXAgeworICAgIHwgc3ViSnNvbiB8CisgICAgQnl0
ZWNvZGVzLm5ldyhzdWJKc29uKQorfQorJGNvbXBpbGF0aW9ucyA9ICRqc29uWyJjb21waWxhdGlv
bnMiXS5tYXAgeworICAgIHwgc3ViSnNvbiB8CisgICAgQ29tcGlsYXRpb24ubmV3KHN1Ykpzb24p
Cit9CiskZW5naW5lcyA9IFsiQmFzZWxpbmUiLCAiREZHIl0KKworZGVmIGxwYWQoc3RyLGNoYXJz
KQorICBpZiBzdHIubGVuZ3RoPmNoYXJzCisgICAgc3RyCisgIGVsc2UKKyAgICAiJSN7Y2hhcnN9
cyIlKHN0cikKKyAgZW5kCitlbmQKKworZGVmIHJwYWQoc3RyLCBjaGFycykKKyAgICB3aGlsZSBz
dHIubGVuZ3RoIDwgY2hhcnMKKyAgICAgICAgc3RyICs9ICIgIgorICAgIGVuZAorICAgIHN0cgor
ZW5kCisKK2RlZiBjZW50ZXIoc3RyLCBjaGFycykKKyAgICB3aGlsZSBzdHIubGVuZ3RoIDwgY2hh
cnMKKyAgICAgICAgc3RyICs9ICIgIgorICAgICAgICBpZiBzdHIubGVuZ3RoIDwgY2hhcnMKKyAg
ICAgICAgICAgIHN0ciA9ICIgIiArIHN0cgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBzdHIK
K2VuZAorCitkZWYgbWF5QmVIYXNoKGhhc2gpCisgICAgaGFzaCA9fiAvXiMvIG9yIGhhc2guc2l6
ZSA9PSA2CitlbmQKKworZGVmIGdldEhhc2goaGFzaCkKKyAgICBpZiBoYXNoID1+IC9eIy8KKyAg
ICAgICAgJH4ucG9zdF9tYXRjaAorICAgIGVsc2UKKyAgICAgICAgaGFzaAorICAgIGVuZAorZW5k
CisKK21vZHVsZSBDb21tYW5kcworICAgIGRlZiBzZWxmLkNNRF9oZWxwCisgICAgICAgIHB1dHMg
InN1bW1hcnkgICAgIFByaW50IGEgc3VtbWFyeSBvZiBjb2RlIGJsb2NrIGV4ZWN1dGlvbiByYXRl
cy4iCisgICAgICAgIHB1dHMgImRpc3BsYXkgICAgIERpc3BsYXkgZGV0YWlscyBmb3IgYSBjb2Rl
IGJsb2NrLiIKKyAgICAgICAgcHV0cyAiaGVscCAgICAgICAgUHJpbnQgdGhpcyBtZXNzYWdlLiIK
KyAgICAgICAgcHV0cyAicXVpdCAgICAgICAgUXVpdC4iCisgICAgZW5kCisgICAgCisgICAgZGVm
IHNlbGYuQ01EX3F1aXQKKyAgICAgICAgZXhpdCAwCisgICAgZW5kCisgICAgCisgICAgZGVmIHNl
bGYuQ01EX3N1bW1hcnkKKyAgICAgICAgaGFzaENvbHMgPSAxNAorICAgICAgICBjb3VudENvbHMg
PSAxMCAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgCisgICAgICAgIHB1dHMocnBhZCgiQ29kZUJs
b2NrIiwgaGFzaENvbHMpICsgIiAiICsgcnBhZCgkZW5naW5lcy5qb2luKCIvIikgKyAiIENvdW50
cyIsIGNvdW50Q29scykpCisgICAgICAgICRieXRlY29kZXMuc29ydCB7CisgICAgICAgICAgICB8
IGEsIGIgfAorICAgICAgICAgICAgYi50b3RhbE1heEV4ZWN1dGlvbkNvdW50IDw9PiBhLnRvdGFs
TWF4RXhlY3V0aW9uQ291bnQKKyAgICAgICAgfS5lYWNoIHsKKyAgICAgICAgICAgIHwgYnl0ZWNv
ZGUgfAorICAgICAgICAgICAgcHV0cyhjZW50ZXIoIiMiICsgYnl0ZWNvZGUuaGFzaCwgaGFzaENv
bHMpICsgIiAiICsKKyAgICAgICAgICAgICAgICAgY2VudGVyKCRlbmdpbmVzLm1hcCB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdpbmUgfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ5dGVjb2RlLm1heEV4ZWN1dGlvbkNvdW50KGVuZ2luZSkudG9fcworICAgICAgICAg
ICAgICAgICAgICAgICAgfS5qb2luKCIvIiksIGNvdW50Q29scykpCisgICAgICAgIH0KKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgc2VsZi5DTURfZGlzcGxheSgqYXJncykKKyAgICAgICAgY2FzZSBh
cmdzLmxlbmd0aAorICAgICAgICB3aGVuIDEKKyAgICAgICAgICAgIGhhc2ggPSBhcmdzWzBdCisg
ICAgICAgICAgICBlbmdpbmUgPSAiQmFzZWxpbmUiCisgICAgICAgICAgICAkY29tcGlsYXRpb25z
LmVhY2ggeworICAgICAgICAgICAgICAgIHwgY29tcGlsYXRpb24gfAorICAgICAgICAgICAgICAg
IG5leHQgaWYgY29tcGlsYXRpb24uYnl0ZWNvZGUuaGFzaCAhPSBoYXNoCisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgY29tcGlsYXRpb24uZW5naW5lID09ICJERkciCisgICAg
ICAgICAgICAgICAgICAgIGVuZ2luZSA9ICJERkciCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAgIHdoZW4gMgorICAg
ICAgICAgICAgaWYgbWF5QmVIYXNoKGFyZ3NbMF0pCisgICAgICAgICAgICAgICAgaGFzaCA9IGFy
Z3NbMF0KKyAgICAgICAgICAgICAgICBlbmdpbmUgPSBhcmdzWzFdCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZW5naW5lID0gYXJnc1swXQorICAgICAgICAgICAgICAgIGhhc2gg
PSBhcmdzWzFdCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHV0
cyAiVXNhZ2U6IHN1bW1hcnkgPGNvZGUgYmxvY2sgaGFzaD4gPGVuZ2luZT4iCisgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBjb3VudENvbHMgPSAxMCAq
ICRlbmdpbmVzLnNpemUKKyAgICAgICAgJGNvbXBpbGF0aW9ucy5lYWNoIHsKKyAgICAgICAgICAg
IHwgY29tcGlsYXRpb24gfAorICAgICAgICAgICAgbmV4dCBpZiBjb21waWxhdGlvbi5ieXRlY29k
ZS5oYXNoICE9IGhhc2gKKyAgICAgICAgICAgIG5leHQgaWYgY29tcGlsYXRpb24uZW5naW5lICE9
IGVuZ2luZQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdXRzKHJwYWQoJGVuZ2luZXMuam9p
bigiLyIpICsgIiBDb3VudHMiLCBjb3VudENvbHMpICsgIiBEaXNhc3NlbWJseSBmb3IgI3toYXNo
fSBpbiAje2VuZ2luZX0iKQorICAgICAgICAgICAgY29tcGlsYXRpb24uZGVzY3JpcHRpb25zLmVh
Y2ggeworICAgICAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gfAorICAgICAgICAgICAgICAgIG5l
eHQgaWYgZGVzY3JpcHRpb24uZGVzY3JpcHRpb24gPX4gL0NvdW50RXhlY3V0aW9uXCgvCisgICAg
ICAgICAgICAgICAgaWYgZGVzY3JpcHRpb24ub3JpZ2luLmVtcHR5PworICAgICAgICAgICAgICAg
ICAgICBjb3VudHNTdHJpbmcgPSAiIgorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgY291bnRzU3RyaW5nID0gJGVuZ2luZXMubWFwIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHwgZW5naW5lIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLm9y
aWdpblstMV0uZXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAgICAgICAgICAgICAgICAgICB9Lmpv
aW4oIi8iKQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9u
LmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmVhY2ggeworICAgICAgICAgICAgICAgICAgICB8IGxp
bmUgfAorICAgICAgICAgICAgICAgICAgICBwdXRzKGNlbnRlcihjb3VudHNTdHJpbmcsIGNvdW50
Q29scykgKyAiICIgKyBsaW5lLmNob21wKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBleGVjdXRlQ29tbWFuZChjb21tYW5k
LCBhcmdzKQorICAgIGlmIENvbW1hbmRzLm1ldGhvZHMuZmluZF9pbmRleCgiQ01EXyN7Y29tbWFu
ZH0iKQorICAgICAgICBDb21tYW5kcy5zZW5kKCJDTURfI3tjb21tYW5kfSIsICphcmdzKQorICAg
IGVsc2UKKyAgICAgICAgcHV0cyAiSW52YWxpZCBjb21tYW5kOiAje2NvbW1hbmR9IgorICAgIGVu
ZAorZW5kCisKK2V4ZWN1dGVDb21tYW5kKCJzdW1tYXJ5IiwgW10pCisKK3doaWxlIGNvbW1hbmRM
aW5lID0gUmVhZGxpbmUucmVhZGxpbmUoIj4gIiwgdHJ1ZSkKKyAgICBjb21tYW5kQXJyYXkgPSBj
b21tYW5kTGluZS5zcGxpdAorICAgIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmRBcnJheVswXSwgY29t
bWFuZEFycmF5WzEuLi0xXSkKK2VuZAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9TY3Jp
cHRzL2Rpc3BsYXktcGJwLW91dHB1dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCg==
</data>
<flag name="commit-queue"
          id="193169"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177154</attachid>
            <date>2012-12-02 15:05:10 -0800</date>
            <delta_ts>2012-12-03 23:18:56 -0800</delta_ts>
            <desc>fix more bots</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>134311</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0MCBA
QAorMjAxMi0xMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byByZXBvcnQgcHJvZmlsaW5nIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoZSBJUiBkdW1wcyBhbmQgZGlzYXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHByb2ZpbGluZyB0byBKU0MsIGNh
bGxlZCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBUaGlzIHdpbGwgY291bnQKKyAg
ICAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgYnl0ZWNvZGUgZXhlY3V0ZXMgaW4gdmFy
aW91cyBlbmdpbmVzLCBhbmQgd2lsbCByZWNvcmQgYm90aAorICAgICAgICB0aGUgY291bnRzIGFu
ZCBhbGwgZGlzYXNzZW1ibHkgYW5kIGJ5dGVjb2RlIGR1bXBzLCBpbnRvIGEgZGF0YWJhc2UgdGhh
dCBjYW4gYmUgYXQgYW55CisgICAgICAgIHRpbWUgdHVybmVkIGludG8gZWl0aGVyIGEgSlMgb2Jq
ZWN0IHVzaW5nIGFueSBnbG9iYWwgb2JqZWN0IG9yIGdsb2JhbCBkYXRhIG9mIHlvdXIKKyAgICAg
ICAgY2hvaWNlLCBvciBjYW4gYmUgdHVybmVkIGludG8gYSBKU09OIHN0cmluZywgb3Igc2F2ZWQg
dG8gYSBmaWxlLgorICAgICAgICAKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHVzZSBvZiB0
aGlzIGlzIHRoZSBuZXcgJy1wIDxmaWxlPicgZmxhZyB0byB0aGUganNjIGNvbW1hbmQtbGluZS4K
KyAgICAgICAgCisgICAgICAgIFRoZSBQQlAgaXMgYWx3YXlzIGNvbXBpbGVkIGluIGFuZCBub3Jt
YWxseSBpbmN1cnMgbm8gZXhlY3V0aW9uIHRpbWUgY29zdCwgYnV0IGlzIG9ubHkKKyAgICAgICAg
YWN0aXZhdGVkIHdoZW4geW91IGNyZWF0ZSBhIFBCUDo6RGF0YWJhc2UgYW5kIGluc3RhbGwgaXQg
aW4KKyAgICAgICAgSlNHbG9iYWxEYXRhOjptX3BlckJ5dGVjb2RlUHJvZmlsZXIuIEZyb20gdGhh
dCBwb2ludCBvbiwgYWxsIGNvZGUgYmxvY2tzIHdpbGwgYmUKKyAgICAgICAgY29tcGlsZWQgYWxv
bmcgd2l0aCBkaXNhc3NlbWJseSBhbmQgYnl0ZWNvZGUgZHVtcHMgc3RvcmVkIGludG8gdGhlIFBC
UDo6RGF0YWJhc2UsIGFuZAorICAgICAgICBhbGwgY29kZSBibG9ja3Mgd2lsbCBoYXZlIGV4ZWN1
dGlvbiBjb3VudHMsIHdoaWNoIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuCisgICAg
ICAgIFRoZSBkYXRhYmFzZSB3aWxsIGNvbnRpbnVlIHRvIGtlZXAgaW5mb3JtYXRpb24gYWJvdXQg
Y29kZSBibG9ja3MgYWxpdmUgZXZlbiBhZnRlciB0aGV5CisgICAgICAgIGFyZSBvdGhlcndpc2Ug
R0MnZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY3VycmVudGx5IHN0aWxsIGhhcyBzb21lIGds
aXRjaGVzLCBsaWtlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBjb3VudHMgZXhlY3V0aW9ucworICAg
ICAgICBpbiB0aGUgSklUcy4gRG9pbmcgZXhlY3V0aW9uIGNvdW50aW5nIGluIHRoZSBMTEludCBt
aWdodCByZXF1aXJlIGEgYml0IG9mIGEgcmV0aGluaworICAgICAgICBhYm91dCBob3cgdGhlIGNv
dW50aW5nIGlzIGV4cHJlc3NlZCAtIGN1cnJlbnRseSBpdCBpcyBpbXBsaWNpdCBpbiBieXRlY29k
ZSwgc28gdGhlcmUKKyAgICAgICAgaXMgbm8gZWFzeSB3YXkgdG8gInR1cm4gaXQgb24iIGluIHRo
ZSBMTEludC4gQWxzbywgcmlnaHQgbm93IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uCisgICAgICAg
IHJlY29yZGVkIGFib3V0IE9TUiBleGl0cyBvciBvdXQtb2YtbGluZSBzdHVicy4gQnV0LCBldmVu
IHNvLCBpdCdzIHF1aXRlIGNvb2wsIGFuZAorICAgICAgICBnaXZlcyB5b3UgYSBwZWVrIGludG8g
d2hhdCBKU0MgaXMgZG9pbmcgdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGJlIHBvc3NpYmxlLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZGVmOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFt
ZTo6YmFzZWxpbmVDb2RlQmxvY2spOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlT3JpZ2luLmg6CisgICAgICAgIChJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcv
REZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1
bXApOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OnJl
cG9ydFRvUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6ZHVtcEhl
YWRlcik6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjphcHBlbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QpOgorICAgICAgICAqIGRm
Zy9ERkdEaXNhc3NlbWJsZXIuaDoKKyAgICAgICAgKERpc2Fzc2VtYmxlcik6CisgICAgICAgIChK
U0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpEdW1wZWRPcDo6RHVtcGVkT3ApOgorICAgICAgICAoRHVt
cGVkT3ApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcENvZGVPcmlnaW4p
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguaDoKKyAgICAgICAgKEdyYXBoKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpKSVRDb21waWxlcik6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFeGVjdXRpb25Db3Vu
dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpleGVjdXRpb25Db3VudGVyKToKKyAgICAg
ICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6SklUKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklU
RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wKToK
KyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpyZXBvcnRUb1Byb2ZpbGVyKToKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcEhlYWRlcik6Cisg
ICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6Zmlyc3RTbG93TGFiZWwpOgorICAgICAgICAo
SlNDOjpKSVREaXNhc3NlbWJsZXI6OmR1bXBWZWN0b3JGb3JJbnN0cnVjdGlvbnMpOgorICAgICAg
ICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMpOgorICAgICAgICAo
SlNDOjpKSVREaXNhc3NlbWJsZXI6OnJlcG9ydEluc3RydWN0aW9ucyk6CisgICAgICAgICogaml0
L0pJVERpc2Fzc2VtYmxlci5oOgorICAgICAgICAoSklURGlzYXNzZW1ibGVyKToKKyAgICAgICAg
KER1bXBlZE9wKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNv
bW1hbmRMaW5lKToKKyAgICAgICAgKENvbW1hbmRMaW5lKToKKyAgICAgICAgKHByaW50VXNhZ2VT
dGF0ZW1lbnQpOgorICAgICAgICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAgICAg
ICAgKGpzY21haW4pOgorICAgICAgICAqIHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcDogQWRkZWQu
CisgICAgICAgIChQQlApOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2RlOjp0b0pTKToKKyAg
ICAgICAgKiBwcm9maWxlci9QQlBCeXRlY29kZS5oOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6Cisg
ICAgICAgIChCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGU6OkJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZTo6Ynl0ZWNvZGVJbmRleCk6CisgICAgICAg
IChKU0M6OlBCUDo6Qnl0ZWNvZGU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6UEJQOjpn
ZXRCeXRlY29kZUluZGV4Rm9yQnl0ZWNvZGUpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUEJ5dGVj
b2Rlcy5jcHA6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRl
Y29kZXM6OkJ5dGVjb2Rlcyk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjp+Qnl0ZWNv
ZGVzKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OmluZGV4Rm9yQnl0ZWNvZGVJbmRl
eCk6CisgICAgICAgIChKU0M6OlBCUDo6Qnl0ZWNvZGVzOjpmb3JCeXRlY29kZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OmR1bXApOgorICAgICAgICAoSlNDOjpQQlA6OkJ5
dGVjb2Rlczo6dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmg6IEFkZGVk
LgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEJ5dGVjb2Rlcyk6CisgICAgICAgIChKU0M6OlBC
UDo6Qnl0ZWNvZGVzOjphcHBlbmQpOgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6aWQp
OgorICAgICAgICAoSlNDOjpQQlA6OkJ5dGVjb2Rlczo6aGFzaCk6CisgICAgICAgIChKU0M6OlBC
UDo6Qnl0ZWNvZGVzOjpzaXplKToKKyAgICAgICAgKEpTQzo6UEJQOjpCeXRlY29kZXM6OmF0KToK
KyAgICAgICAgKiBwcm9maWxlci9QQlBDb21waWxhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
UEJQKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxhdGlvbjo6Q29tcGlsYXRpb24pOgorICAg
ICAgICAoSlNDOjpQQlA6OkNvbXBpbGF0aW9uOjp+Q29tcGlsYXRpb24pOgorICAgICAgICAoSlND
OjpQQlA6OkNvbXBpbGF0aW9uOjphZGREZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OlBCUDo6
Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAoSlNDOjpQQlA6OkNv
bXBpbGF0aW9uOjp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBDb21waWxhdGlvbi5oOiBB
ZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChDb21waWxhdGlvbik6CisgICAgICAgIChK
U0M6OlBCUDo6Q29tcGlsYXRpb246OmJ5dGVjb2Rlcyk6CisgICAgICAgIChKU0M6OlBCUDo6Q29t
cGlsYXRpb246OmtpbmQpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5j
cHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAg
ICAoUEJQKToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcHJvZmlsZXIvUEJQQ29tcGlsZWRC
eXRlY29kZS5jcHA6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEpTQzo6UEJQOjpD
b21waWxlZEJ5dGVjb2RlOjpDb21waWxlZEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UEJQOjpD
b21waWxlZEJ5dGVjb2RlOjp+Q29tcGlsZWRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBCUDo6
Q29tcGlsZWRCeXRlY29kZTo6dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUEJQQ29tcGlsZWRC
eXRlY29kZS5oOiBBZGRlZC4KKyAgICAgICAgKFBCUCk6CisgICAgICAgIChDb21waWxlZEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UEJQOjpDb21waWxlZEJ5dGVjb2RlOjpvcmlnaW5TdGFjayk6
CisgICAgICAgIChKU0M6OlBCUDo6Q29tcGlsZWRCeXRlY29kZTo6ZGVzY3JpcHRpb24pOgorICAg
ICAgICAqIHByb2ZpbGVyL1BCUERhdGFiYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChQQlApOgor
ICAgICAgICAoSlNDOjpQQlA6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChKU0M6OlBC
UDo6RGF0YWJhc2U6On5EYXRhYmFzZSk6CisgICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OmFk
ZEJ5dGVjb2Rlcyk6CisgICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6OmVuc3VyZUJ5dGVjb2Rl
c0Zvcik6CisgICAgICAgIChKU0M6OlBCUDo6RGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKToK
KyAgICAgICAgKEpTQzo6UEJQOjpEYXRhYmFzZTo6bmV3Q29tcGlsYXRpb24pOgorICAgICAgICAo
SlNDOjpQQlA6OkRhdGFiYXNlOjp0b0pTKToKKyAgICAgICAgKEpTQzo6UEJQOjpEYXRhYmFzZTo6
dG9KU09OKToKKyAgICAgICAgKEpTQzo6UEJQOjpEYXRhYmFzZTo6c2F2ZSk6CisgICAgICAgICog
cHJvZmlsZXIvUEJQRGF0YWJhc2UuaDogQWRkZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAo
RGF0YWJhc2UpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaDogQWRk
ZWQuCisgICAgICAgIChQQlApOgorICAgICAgICAoRXhlY3V0aW9uQ291bnRlcik6CisgICAgICAg
IChKU0M6OlBCUDo6RXhlY3V0aW9uQ291bnRlcjo6RXhlY3V0aW9uQ291bnRlcik6CisgICAgICAg
IChKU0M6OlBCUDo6RXhlY3V0aW9uQ291bnRlcjo6YWRkcmVzcyk6CisgICAgICAgIChKU0M6OlBC
UDo6RXhlY3V0aW9uQ291bnRlcjo6Y291bnQpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUE9yaWdp
bi5jcHA6IEFkZGVkLgorICAgICAgICAoUEJQKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46
Ok9yaWdpbik6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2luOjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6UEJQOjpPcmlnaW46OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVyL1BCUE9yaWdpbi5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChQQlApOgorICAgICAgICAoT3JpZ2luKToK
KyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46Ok9yaWdpbik6CisgICAgICAgIChKU0M6OlBCUDo6
T3JpZ2luOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbjo6Ynl0ZWNvZGVz
KToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46OmJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAo
SlNDOjpQQlA6Ok9yaWdpbjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlBCUDo6T3JpZ2lu
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW46Omhhc2gpOgorICAgICAg
ICAoSlNDOjpQQlA6Ok9yaWdpbjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAo
SlNDOjpQQlA6Ok9yaWdpbkhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpbkhh
c2g6OmVxdWFsKToKKyAgICAgICAgKE9yaWdpbkhhc2gpOgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKiBwcm9maWxlci9QQlBPcmlnaW5TdGFjay5jcHA6IEFkZGVkLgorICAgICAgICAoUEJQKToK
KyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6T3JpZ2luU3RhY2spOgorICAgICAgICAo
SlNDOjpQQlA6Ok9yaWdpblN0YWNrOjp+T3JpZ2luU3RhY2spOgorICAgICAgICAoSlNDOjpQQlA6
Ok9yaWdpblN0YWNrOjphcHBlbmQpOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0YWNrOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6aGFzaCk6CisgICAg
ICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpQQlA6Ok9y
aWdpblN0YWNrOjp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9QQlBPcmlnaW5TdGFjay5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChQQlApOgorICAgICAgICAoT3JpZ2luU3Rh
Y2spOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0YWNrOjpPcmlnaW5TdGFjayk6CisgICAg
ICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OlBC
UDo6T3JpZ2luU3RhY2s6OnNpemUpOgorICAgICAgICAoSlNDOjpQQlA6Ok9yaWdpblN0YWNrOjpm
cm9tQm90dG9tKToKKyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFjazo6ZnJvbVRvcCk6Cisg
ICAgICAgIChKU0M6OlBCUDo6T3JpZ2luU3RhY2s6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToK
KyAgICAgICAgKEpTQzo6UEJQOjpPcmlnaW5TdGFja0hhc2g6Omhhc2gpOgorICAgICAgICAoSlND
OjpQQlA6Ok9yaWdpblN0YWNrSGFzaDo6ZXF1YWwpOgorICAgICAgICAoT3JpZ2luU3RhY2tIYXNo
KToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oOgorICAgICAgICAoSlNDOjpw
cmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhl
Y3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxE
YXRhOjp+SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgor
ICAgICAgICAoSlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAg
ICAgICAgKEpTQyk6CisKIDIwMTItMTItMDEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb2RlQmxvY2sgc2hvdWxkIGJlIGFibGUgdG8gZHVtcCBieXRlY29kZSB0
byBzb21ldGhpbmcgb3RoZXIgdGhhbiBXVEY6OmRhdGFGaWxlKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3MiwyMyBA
QCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHBhcnNlci9QYXJzZXJBcmVuYS5jcHAK
ICAgICBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5jcHAKIAorICAgIHByb2ZpbGVyL1BCUEJ5
dGVjb2RlLmNwcAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmgKKyAgICBwcm9maWxlci9QQlBC
eXRlY29kZXMuY3BwCisgICAgcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmgKKyAgICBwcm9maWxlci9Q
QlBDb21waWxhdGlvbi5jcHAKKyAgICBwcm9maWxlci9QQlBDb21waWxhdGlvbi5oCisgICAgcHJv
ZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNwcAorICAgIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9u
S2luZC5oCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAKKyAgICBwcm9maWxl
ci9QQlBDb21waWxlZEJ5dGVjb2RlLmgKKyAgICBwcm9maWxlci9QQlBEYXRhYmFzZS5jcHAKKyAg
ICBwcm9maWxlci9QQlBEYXRhYmFzZS5oCisgICAgcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRl
ci5oCisgICAgcHJvZmlsZXIvUEJQT3JpZ2luLmNwcAorICAgIHByb2ZpbGVyL1BCUE9yaWdpbi5o
CisgICAgcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwCisgICAgcHJvZmlsZXIvUEJQT3JpZ2lu
U3RhY2suaAogICAgIHByb2ZpbGVyL1Byb2ZpbGUuY3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZUdl
bmVyYXRvci5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzYzMTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpA
QCAtNDcxLDYgKzQ3MSwyMyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1BCUEJ5dGVjb2RlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
QlBCeXRlY29kZXMuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0
ZWNvZGVzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlv
bi5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbi5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVjb2Rl
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luLmNwcCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQT3JpZ2luU3RhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVy
YXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJh
dG9yLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNjMxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsNiArMTgyLDIzIEBAIFNPVVJDRVMgKz0gXAogICAgIHBhcnNlci9QYXJzZXJBcmVuYS5jcHAg
XAogICAgIHBhcnNlci9QYXJzZXIuY3BwIFwKICAgICBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNo
ZS5jcHAgXAorICAgIHByb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQ
Qnl0ZWNvZGUuaCBcCisgICAgcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmNwcCBcCisgICAgcHJvZmls
ZXIvUEJQQnl0ZWNvZGVzLmggXAorICAgIHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmNwcCBcCisg
ICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaCBcCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRp
b25LaW5kLmNwcCBcCisgICAgcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmggXAorICAgIHBy
b2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuY3BwIFwKKyAgICBwcm9maWxlci9QQlBDb21waWxl
ZEJ5dGVjb2RlLmggXAorICAgIHByb2ZpbGVyL1BCUERhdGFiYXNlLmNwcCBcCisgICAgcHJvZmls
ZXIvUEJQRGF0YWJhc2UuaCBcCisgICAgcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oIFwK
KyAgICBwcm9maWxlci9QQlBPcmlnaW4uY3BwIFwKKyAgICBwcm9maWxlci9QQlBPcmlnaW4uaCBc
CisgICAgcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwIFwKKyAgICBwcm9maWxlci9QQlBPcmln
aW5TdGFjay5oIFwKICAgICBwcm9maWxlci9Qcm9maWxlLmNwcCBcCiAgICAgcHJvZmlsZXIvUHJv
ZmlsZUdlbmVyYXRvci5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcCBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9pbnRlcmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCBtX2R1bXAoZmFsc2Up
CiAgICAgICAgICwgbV9leGl0Q29kZShmYWxzZSkKKyAgICAgICAgLCBtX3Byb2ZpbGUoZmFsc2Up
CiAgICAgewogICAgICAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAgICB9CkBAIC0x
MzUsNiArMTM2LDggQEAgcHVibGljOgogICAgIGJvb2wgbV9leGl0Q29kZTsKICAgICBWZWN0b3I8
U2NyaXB0PiBtX3NjcmlwdHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1bWVudHM7CisgICAg
Ym9vbCBtX3Byb2ZpbGU7CisgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAKICAgICB2b2lk
IHBhcnNlQXJndW1lbnRzKGludCwgY2hhcioqKTsKIH07CkBAIC02NDksNiArNjUyLDcgQEAgc3Rh
dGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbgogI2lmIEhBVkUoU0lHTkFMX0gp
CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1zICAgICAgICAgSW5zdGFsbHMgc2lnbmFsIGhhbmRs
ZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIChVbml4IHBsYXRmb3JtcyBvbmx5KVxuIik7CiAjZW5k
aWYKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXAgPGZpbGU+ICBPdXRwdXRzIHByb2ZpbGluZyBk
YXRhIHRvIGEgZmlsZVxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC14ICAgICAgICAgT3V0
cHV0IGV4aXQgY29kZSBiZWZvcmUgdGVybWluYXRpbmdcbiIpOwogICAgIGZwcmludGYoc3RkZXJy
LCAiXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1vcHRpb25zICAgICAgICAgICAgICAg
ICAgRHVtcHMgYWxsIEpTQyBWTSBvcHRpb25zIGFuZCBleGl0c1xuIik7CkBAIC02ODcsNiArNjkx
LDEzIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmcKICAgICAgICAg
ICAgIG1fZHVtcCA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoIXN0cmNtcChhcmcsICItcCIpKSB7CisgICAgICAgICAgICBpZiAoKytpID09IGFy
Z2MpCisgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudCgpOworICAgICAgICAgICAg
bV9wcm9maWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQgPSBhcmd2W2ld
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAo
YXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgICAgICAgICBzaWduYWwoU0lH
SUxMLCBfZXhpdCk7CkBAIC03NTAsNiArNzYxLDkgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogICAgIEpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbERhdGEuZ2V0KCkpOwogICAg
IGludCByZXN1bHQ7CiAKKyAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUpCisgICAgICAgIGdsb2Jh
bERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IGFkb3B0UHRyKG5ldyBQQlA6OkRhdGFiYXNl
KCpnbG9iYWxEYXRhKSk7CisgICAgCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBH
bG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7CiAgICAg
Ym9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLm1fc2Ny
aXB0cywgb3B0aW9ucy5tX2R1bXApOwogICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3RpdmUgJiYg
c3VjY2VzcykKQEAgLTc1OSw2ICs3NzMsMTEgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogCiAgICAgaWYgKG9wdGlvbnMubV9leGl0Q29kZSkKICAgICAgICAgcHJpbnRmKCJq
c2MgZXhpdGluZyAlZFxuIiwgcmVzdWx0KTsKKyAgICAKKyAgICBpZiAob3B0aW9ucy5tX3Byb2Zp
bGUpIHsKKyAgICAgICAgaWYgKCFnbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPnNh
dmUob3B0aW9ucy5tX3Byb2ZpbGVyT3V0cHV0LnV0ZjgoKS5kYXRhKCkpKQorICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3Qgc2F2ZSBwcm9maWxlciBvdXRwdXQuXG4iKTsKKyAg
ICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDEzNjMxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQCBFWFBP
UlRTCiAgICAgPz8wQ29sbGF0b3JAV1RGQEBRQUVAUEJEQFoKICAgICA/PzBDU3RyaW5nQFdURkBA
UUFFQFBCREBaCiAgICAgPz8wQ1N0cmluZ0BXVEZAQFFBRUBQQkRJQFoKKyAgICA/PzBEYXRhYmFz
ZUBQQlBASlNDQEBRQUVAQUFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/PzBEYXRlSW5zdGFuY2VA
SlNDQEBJQUVAUEFWRXhlY1N0YXRlQDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrQEpTQ0BAUUFFQFBBVkhlYXBAMUBAWgogICAgID8/MERyb3BBbGxM
b2Nrc0BKU0xvY2tASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDJAQFoKQEAgLTM0LDYgKzM1LDcgQEAg
RVhQT1JUUwogICAgID8/MUFycmF5QnVmZmVyVmlld0BXVEZAQFVBRUBYWgogICAgID8/MUNsaWVu
dERhdGFASlNHbG9iYWxEYXRhQEpTQ0BAVUFFQFhaCiAgICAgPz8xQ29sbGF0b3JAV1RGQEBRQUVA
WFoKKyAgICA/PzFEYXRhYmFzZUBQQlBASlNDQEBRQUVAWFoKICAgICA/PzFEZWJ1Z2dlckBKU0NA
QFVBRUBYWgogICAgID8/MURyb3BBbGxMb2Nrc0BKU0xvY2tASlNDQEBRQUVAWFoKICAgICA/PzFK
U0dsb2JhbERhdGFASlNDQEBRQUVAWFoKQEAgLTMzOCw2ICszNDAsNyBAQCBFWFBPUlRTCiAgICAg
P3Jlc3RvcmVBbGxAUHJvZmlsZUBKU0NAQFFBRVhYWgogICAgID9yZXRyaWV2ZUNhbGxlckZyb21W
TUNvZGVASW50ZXJwcmV0ZXJASlNDQEBRQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAUEFW
SlNGdW5jdGlvbkAyQEBaCiAgICAgP3JldHJpZXZlTGFzdENhbGxlckBJbnRlcnByZXRlckBKU0NA
QFFCRVhQQVZFeGVjU3RhdGVAMkBBQUgxQUFWU3RyaW5nQFdURkBAQUFWSlNWYWx1ZUAyQEBaCisg
ICAgP3NhdmVARGF0YWJhc2VAUEJQQEpTQ0BAUUJFX05QQkRAWgogICAgID9zZXRDb25maWd1cmFi
bGVAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUFFWF9OQFoKICAgICA/c2V0RGVzY3JpcHRvckBQ
cm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYVkpTVmFsdWVAMkBJQFoKICAgICA/c2V0RW51bWVy
YWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYX05AWgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlz
aW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTI2LDYgKzE1MjYsNzQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQQnl0ZWNvZGUuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBCeXRl
Y29kZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxwcm9maWxlclxQQlBCeXRlY29kZXMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBCeXRlY29kZXMuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmls
ZXJcUEJQQ29tcGlsYXRpb24uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBDb21waWxhdGlvbi5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBD
b21waWxhdGlvbktpbmQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBDb21waWxhdGlvbktpbmQuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUEJQ
Q29tcGlsZWRCeXRlY29kZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUENvbXBpbGVkQnl0ZWNvZGUuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJc
UEJQRGF0YWJhc2UuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBEYXRhYmFzZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQQlBFeGVjdXRpb25D
b3VudGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHByb2ZpbGVyXFBCUE9yaWdpbi5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUE9yaWdpbi5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxwcm9maWxlclxQ
QlBPcmlnaW5TdGFjay5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFBCUE9yaWdpblN0YWNrLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFByb2ZpbGUu
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3
MSwyNyBAQAogCQkwRkY0Mjc3MTE1OTI3NUQ1MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0
Mjc2RTE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgKi87IH07CiAJ
CTBGRjQyNzcyMTU5Mjc1RDgwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RjE1OTI3NUQy
MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQ
cm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QTUxNjZB
RDM1MTAwMEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNv
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkY3MjlBRDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTIxNjZBRDM0NzAwMEY1QkEz
IC8qIFBCUEJ5dGVjb2RlLmNwcCAqLzsgfTsKKwkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8q
IFBCUEJ5dGVjb2Rlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkY3Mjk5NDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCAqLzsg
fTsKKwkJMEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUENvbXBpbGF0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTk2MTY2QUQz
NDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5jcHAgKi87IH07CisJCTBGRjcyOUIwMTY2QUQz
NUMwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UENvbXBpbGF0aW9uS2luZC5jcHAgKi87IH07CisJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAv
KiBQQlBDb21waWxlZEJ5dGVjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlBMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5
dGVjb2RlLmNwcCAqLzsgfTsKKwkJMEZGNzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFBCUERhdGFi
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5jcHAgKi87IH07CisJCTBGRjcy
OUIzMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UE9yaWdpbi5jcHAgKi87IH07CisJCTBGRjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBPcmln
aW5TdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovOyB9Owor
CQkwRkY3MjlCNTE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTc0MkY2MzBERDExRjVBMDAwOTE3RkIg
LyogUHJvZmlsZS5jcHAgKi87IH07CisJCTBGRjcyOUI2MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9m
aWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAq
LzsgfTsKKwkJMEZGNzI5QjcxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzU0MERBNDNC
NDQwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgKi87IH07CisJCTBGRjcyOUI4MTY2QUQzNUMw
MDBGNUJBMyAvKiBQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NUFCODMyRTBEQTQyQ0FEMDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwICov
OyB9OworCQkwRkY3MjlCOTE2NkFEMzYwMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NTE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBp
bGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCQjE2NkFEMzYwMDAw
RjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQQ29tcGls
YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlCMTY2
QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1QkEz
IC8qIFBCUERhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRTE2NkFE
MzYwMDAwRjVCQTMgLyogUEJQRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyogUEJQT3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MjlBMDE2NkFE
MzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUE9yaWdp
blN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0
MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsg
fTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBD
NzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNTUxLDExICs1NzIsNyBAQAogCQk5MzMwNDAyQzBFNkE3NjQwMDA3
ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMzAzRkU4MEU2QTcyQjUwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3Mu
Y3BwICovOyB9OwogCQk5MzM1RjI0RDEyRTY3NjVCMDAyQjU1NTMgLyogU3RyaW5nUmVjdXJzaW9u
Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzM0NUE4NzEyRDgzOEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAg
Ki87IH07CiAJCTk1MzRBQUZCMEU1QjdBOTYwMEI4QTQ1QiAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyQzYzQUMw
RTQ3NzdENjAwQzEzOTM2IC8qIEpTUHJvZmlsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTU3NDJGNjUwREQxMUY1QTAwMDkxN0ZC
IC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTU3NDJGNjMwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwICovOyB9OwotCQk5
NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgzMkUwREE0MkNBRDAwQkM4M0YzIC8q
IFByb2ZpbGVyLmNwcCAqLzsgfTsKLQkJOTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2Zp
bGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk1QUI4MzU0MERBNDNCNDQwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgKi87IH07Ci0JCTk1
Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQwMDg1
MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLzsgfTsKLQkJOTVDRDQ1NzcwRTFDNEZERDAw
ODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2Vu
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJOTVDRDQ1
NzcwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAv
KiBQcm9maWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUUzQkMw
NDBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUY2RTY5NTBFNUI1Rjk3MDA5MUU4NjAg
LyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmlsZXJQcml2
YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2MDA5N0E1
MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CkBAIC0xMDc5LDYgKzEwOTYs
MjMgQEAKIAkJMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb2x2ZUdsb2JhbFN0
YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzZGMTU5Mjc1RDIw
MDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5T2Zmc2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBCeXRlY29kZS5j
cHA7IHBhdGggPSBwcm9maWxlci9QQlBCeXRlY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRjcyOTkzMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBCeXRlY29kZS5oOyBwYXRoID0gcHJvZmls
ZXIvUEJQQnl0ZWNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTQx
NjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBQQlBCeXRlY29kZXMuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQnl0
ZWNvZGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTUxNjZBRDM0
NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQQlBCeXRlY29kZXMuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUEJ5dGVjb2Rlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5NjE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
Q29tcGlsYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQ
Q29tcGlsYXRpb24uY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQ
Q29tcGlsYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQQ29tcGls
YXRpb24uaDsgcGF0aCA9IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRjcyOTk4MTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlv
bktpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUEJQQ29tcGls
YXRpb25LaW5kLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk5MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
QlBDb21waWxhdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUEJQ
Q29tcGlsYXRpb25LaW5kLmg7IHBhdGggPSBwcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8q
IFBCUENvbXBpbGVkQnl0ZWNvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUEJQQ29tcGlsZWRCeXRlY29kZS5jcHA7IHBhdGggPSBwcm9maWxlci9QQlBDb21waWxl
ZEJ5dGVjb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUIxNjZB
RDM0NzAwMEY1QkEzIC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUEJQQ29tcGlsZWRCeXRlY29kZS5oOyBwYXRoID0gcHJvZmlsZXIvUEJQ
Q29tcGlsZWRCeXRlY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5
QzE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gUEJQRGF0YWJhc2UuY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQRGF0
YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5RDE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUEJQRGF0YWJhc2UuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUERhdGFiYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBFeGVj
dXRpb25Db3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBCUEV4ZWN1
dGlvbkNvdW50ZXIuaDsgcGF0aCA9IHByb2ZpbGVyL1BCUEV4ZWN1dGlvbkNvdW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFBC
UE9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQQlBPcmln
aW4uY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZGNzI5QTAxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUE9yaWdpbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQQlBPcmlnaW4uaDsgcGF0aCA9IHByb2ZpbGVy
L1BCUE9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMTE2NkFE
MzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gUEJQT3JpZ2luU3RhY2suY3BwOyBwYXRoID0gcHJvZmlsZXIvUEJQT3Jp
Z2luU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMjE2NkFE
MzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUEJQT3JpZ2luU3RhY2suaDsgcGF0aCA9IHByb2ZpbGVyL1BCUE9yaWdpblN0YWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0
RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8q
IERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0g
ZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTE2LDYg
KzI1NTAsMjMgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTVF
M0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi8sCisJCQkJMEZGNzI5
OTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBCUEJ5dGVjb2RlLmNwcCAqLywKKwkJCQkwRkY3Mjk5MzE2
NkFEMzQ3MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCAqLywKKwkJCQkwRkY3Mjk5NDE2NkFEMzQ3
MDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCAqLywKKwkJCQkwRkY3Mjk5NTE2NkFEMzQ3MDAw
RjVCQTMgLyogUEJQQnl0ZWNvZGVzLmggKi8sCisJCQkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEz
IC8qIFBCUENvbXBpbGF0aW9uLmNwcCAqLywKKwkJCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMg
LyogUEJQQ29tcGlsYXRpb24uaCAqLywKKwkJCQkwRkY3Mjk5ODE2NkFEMzQ3MDAwRjVCQTMgLyog
UEJQQ29tcGlsYXRpb25LaW5kLmNwcCAqLywKKwkJCQkwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMg
LyogUEJQQ29tcGlsYXRpb25LaW5kLmggKi8sCisJCQkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEz
IC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuY3BwICovLAorCQkJCTBGRjcyOTlCMTY2QUQzNDcwMDBG
NUJBMyAvKiBQQlBDb21waWxlZEJ5dGVjb2RlLmggKi8sCisJCQkJMEZGNzI5OUMxNjZBRDM0NzAw
MEY1QkEzIC8qIFBCUERhdGFiYXNlLmNwcCAqLywKKwkJCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVC
QTMgLyogUEJQRGF0YWJhc2UuaCAqLywKKwkJCQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyog
UEJQRXhlY3V0aW9uQ291bnRlci5oICovLAorCQkJCTBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAv
KiBQQlBPcmlnaW4uY3BwICovLAorCQkJCTBGRjcyOUEwMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBP
cmlnaW4uaCAqLywKKwkJCQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUEJQT3JpZ2luU3Rh
Y2suY3BwICovLAorCQkJCTBGRjcyOUEyMTY2QUQzNDcwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFj
ay5oICovLAogCQkJCTk1NzQyRjYzMEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLywK
IAkJCQk5NTc0MkY2NDBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5oICovLAogCQkJCTk1Q0Q0
NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLywKQEAgLTMwNzcs
NiArMzEyOCwxNSBAQAogCQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMyMDBE
NjE5NzEgLyogQ29kZUJsb2NrSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NkVCQjMxNjY3
NkVGNjAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRjcyOUI5MTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBCeXRlY29kZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRjcyOUJBMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUENvbXBp
bGF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEz
IC8qIFBCUENvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJEMTY2
QUQzNjAwMDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5
QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFBCUEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRjcyOUJGMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBPcmlnaW4uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGRjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0zNTM0LDEwICszNTk0LDYgQEAKIAkJCQkxNDhGMjFCQzEwN0VDNTRE
MDA0MkVDMkMgLyogUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzky
MTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkU4
NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJOTU3NDJGNjUwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJOTVDRDQ1NzYwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJOTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBQcm9m
aWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0ZCNjBBNDEwM0Y3REMyMDAxN0EyODYgLyog
UHJvcGVydHlEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REU3MTA3RUM3
RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eU5hbWVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQ2OURFODEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzY2NSw2ICszNzIxLDE4IEBACiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8q
IENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3
MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2
MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUFEMTY2QUQz
NUMwMDBGNUJBMyAvKiBQQlBCeXRlY29kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlB
RTE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGRjcyOUFGMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBDb21waWxhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRkY3MjlCMDE2NkFEMzVDMDAwRjVCQTMgLyogUEJQQ29tcGlsYXRpb25LaW5k
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBD
b21waWxlZEJ5dGVjb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcyOUIyMTY2QUQzNUMw
MDBGNUJBMyAvKiBQQlBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCMzE2
NkFEMzVDMDAwRjVCQTMgLyogUEJQT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjcy
OUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQQlBPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkY3MjlCNTE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkY3MjlCNjE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRkY3MjlCNzE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZU5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjgxNjZBRDM1QzAwMEY1QkEzIC8qIFBy
b2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE3
LDYgKzE5MTcsOSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAK
IENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiB7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+bV9wZXJC
eXRlY29kZVByb2ZpbGVyKQorICAgICAgICBtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9m
aWxlci0+bm90aWZ5RGVzdHJ1Y3Rpb24odGhpcyk7CisgICAgCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgLy8gUmVtb3ZlIG15c2VsZiBmcm9tIHRoZSBzZXQgb2YgREZHIGNvZGUgYmxvY2tzLiBO
b3RlIHRoYXQgSSBtYXkgbm90IGJlIGluIHRoaXMgc2V0CiAgICAgLy8gKGJlY2F1c2UgSSdtIG5v
dCBhIERGRyBjb2RlIGJsb2NrKSwgaW4gd2hpY2ggY2FzZSB0aGlzIGlzIGEgbm8tb3AgYW55d2F5
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2
aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklU
VHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisjZWxzZQor
ICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lVmVyc2lvbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHZpc2l0
QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgi
CiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNzMsNiArNzQsMTEgQEAgQ29kZUJsb2NrSGFzaCBJbmxpbmVDYWxs
RnJhbWU6Omhhc2goKSBjbwogICAgIHJldHVybiBleGVjdXRhYmxlLT5oYXNoRm9yKHNwZWNpYWxp
emF0aW9uS2luZCgpKTsKIH0KIAorQ29kZUJsb2NrKiBJbmxpbmVDYWxsRnJhbWU6OmJhc2VsaW5l
Q29kZUJsb2NrKCkgY29uc3QKK3sKKyAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUuZ2V0KCkpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlv
bktpbmQoKSk7Cit9CisKIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIjIiwgaGFzaCgpLCAiOjwiLCBSYXdQb2ludGVy
KGV4ZWN1dGFibGUuZ2V0KCkpLCAiLCBiYyMiLCBjYWxsZXIuYnl0ZWNvZGVJbmRleCwgIiwgIiwg
c3BlY2lhbGl6YXRpb25LaW5kKCksICI+Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2
ICsxMDgsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAKICAgICBDb2RlQmxvY2tI
YXNoIGhhc2goKSBjb25zdDsKICAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
KCkgY29uc3Q7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHAJKHJldmlzaW9uIDEzNjMxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MjQsNiArMTcyNCw3IEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICBjYXNlIFBoYW50b206CiAg
ICAgY2FzZSBJbmxpbmVTdGFydDoKICAgICBjYXNlIE5vcDoKKyAgICBjYXNlIENvdW50RXhlY3V0
aW9uOgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMDgsNiArMjEwOCwx
MiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbiArIG1fY3Vy
cmVudEluZGV4OwogICAgICAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJbnN0cnVj
dGlvbjsgLy8gU29tZSBtZXRob2RzIHdhbnQgdG8gdXNlIHRoaXMsIGFuZCB3ZSdkIHJhdGhlciBu
b3QgdGhyZWFkIGl0IHRocm91Z2ggY2FsbHMuCiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9jb21waWxhdGlvbikgeworICAgICAgICAg
ICAgYWRkVG9HcmFwaChDb3VudEV4ZWN1dGlvbiwgT3BJbmZvKG1fZ3JhcGgubV9jb21waWxhdGlv
bi0+ZXhlY3V0aW9uQ291bnRlckZvcigKKyAgICAgICAgICAgICAgICBQQlA6Ok9yaWdpblN0YWNr
KCptX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlciwgbV9jb2RlQmxvY2ssIGN1cnJl
bnRDb2RlT3JpZ2luKCkpKSkpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBzd2l0Y2gg
KG9wY29kZUlEKSB7CiAKICAgICAgICAgLy8gPT09IEZ1bmN0aW9uIGVudHJ5IG9wY29kZXMgPT09
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3Bw
CShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEwICs0Miw1MyBAQCBEaXNhc3NlbWJs
ZXI6OkRpc2Fzc2VtYmxlcihHcmFwaCYgZ3JhcGgpCiAKIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7Ci0gICAgbV9ncmFw
aC5tX2RvbWluYXRvcnMuY29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOworICAgIFZlY3RvcjxE
dW1wZWRPcD4gb3BzID0gY3JlYXRlRHVtcExpc3QobGlua0J1ZmZlcik7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG9wcy5zaXplKCk7ICsraSkKKyAgICAgICAgb3V0LnByaW50KG9wc1tp
XS50ZXh0KTsKK30KKwordm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKK3sKKyAgICBkdW1wKFdURjo6ZGF0YUZpbGUoKSwgbGlua0J1ZmZlcik7Cit9CisKK3Zv
aWQgRGlzYXNzZW1ibGVyOjpyZXBvcnRUb1Byb2ZpbGVyKFBCUDo6Q29tcGlsYXRpb24qIGNvbXBp
bGF0aW9uLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQoreworICAgIFZlY3RvcjxEdW1wZWRPcD4g
b3BzID0gY3JlYXRlRHVtcExpc3QobGlua0J1ZmZlcik7CiAgICAgCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG9wcy5zaXplKCk7ICsraSkgeworICAgICAgICBQQlA6Ok9yaWdpblN0YWNr
IHN0YWNrOworICAgICAgICAKKyAgICAgICAgaWYgKG9wc1tpXS5jb2RlT3JpZ2luLmlzU2V0KCkp
CisgICAgICAgICAgICBzdGFjayA9IFBCUDo6T3JpZ2luU3RhY2soKm1fZ3JhcGgubV9nbG9iYWxE
YXRhLm1fcGVyQnl0ZWNvZGVQcm9maWxlciwgbV9ncmFwaC5tX2NvZGVCbG9jaywgb3BzW2ldLmNv
ZGVPcmlnaW4pOworICAgICAgICAKKyAgICAgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9u
KFBCUDo6Q29tcGlsZWRCeXRlY29kZShzdGFjaywgb3BzW2ldLnRleHQpKTsKKyAgICB9Cit9CisK
K3ZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpCit7CiAgICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgREZHIEpJVCBjb2Rl
IGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2dyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2Rl
OjpERkdKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fZ3JhcGgubV9jb2RlQmxvY2st
Pmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIpOwogICAgIG91dC5wcmludCgiICAgIENvZGUgYXQg
WyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50
ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1
ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7Cit9CisKK3ZvaWQgRGlzYXNzZW1ibGVyOjphcHBl
bmQoVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+JiByZXN1bHQsIFN0cmluZ1ByaW50U3Ry
ZWFtJiBvdXQsIENvZGVPcmlnaW4mIHByZXZpb3VzT3JpZ2luKQoreworICAgIHJlc3VsdC5hcHBl
bmQoRHVtcGVkT3AocHJldmlvdXNPcmlnaW4sIG91dC50b0NTdHJpbmcoKSkpOworICAgIHByZXZp
b3VzT3JpZ2luID0gQ29kZU9yaWdpbigpOworICAgIG91dC5yZXNldCgpOworfQorCitWZWN0b3I8
RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1ibGVyOjpjcmVhdGVEdW1wTGlzdChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKQoreworICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICBW
ZWN0b3I8RHVtcGVkT3A+IHJlc3VsdDsKKyAgICAKKyAgICBDb2RlT3JpZ2luIHByZXZpb3VzT3Jp
Z2luID0gQ29kZU9yaWdpbigpOworICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKKyAg
ICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKKyAgICAKKyAgICBtX2dyYXBo
Lm1fZG9taW5hdG9ycy5jb21wdXRlSWZOZWNlc3NhcnkobV9ncmFwaCk7CiAgICAgCiAgICAgY29u
c3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5UHJl
Zml4ID0gIiAgICAgICAgIjsKQEAgLTU3LDcgKzEwMCw5IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBkaXNhc3NlbWJseVByZWZpeCwg
bGlua0J1ZmZlciwgcHJldmlvdXNMYWJlbCwgbV9sYWJlbEZvckJsb2NrSW5kZXhbYmxvY2tJbmRl
eF0sIGxhc3ROb2RlSW5kZXgpOworICAgICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3Vz
T3JpZ2luKTsKICAgICAgICAgbV9ncmFwaC5kdW1wQmxvY2tIZWFkZXIob3V0LCBwcmVmaXgsIGJs
b2NrSW5kZXgsIEdyYXBoOjpEdW1wTGl2ZVBoaXNPbmx5KTsKKyAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAgICAgICAgIE5vZGVJbmRleCBsYXN0Tm9kZUluZGV4
Rm9yRGlzYXNzZW1ibHkgPSBibG9jay0+YXQoMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYmxvY2stPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZ3JhcGhbYmxv
Y2stPmF0KGkpXS53aWxsSGF2ZUNvZGVHZW5Pck9TUigpICYmICFPcHRpb25zOjpzaG93QWxsREZH
Tm9kZXMoKSkKQEAgLTc2LDIwICsxMjEsMjUgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dAogICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGFiZWwgPSBtX2VuZE9m
TWFpblBhdGg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0
LCBkaXNhc3NlbWJseVByZWZpeCwgbGlua0J1ZmZlciwgcHJldmlvdXNMYWJlbCwgY3VycmVudExh
YmVsLCBsYXN0Tm9kZUluZGV4Rm9yRGlzYXNzZW1ibHkpOwotICAgICAgICAgICAgbV9ncmFwaC5k
dW1wQ29kZU9yaWdpbihvdXQsIHByZWZpeCwgbGFzdE5vZGVJbmRleCwgYmxvY2stPmF0KGkpKTsK
KyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOworICAgICAg
ICAgICAgcHJldmlvdXNPcmlnaW4gPSBtX2dyYXBoW2Jsb2NrLT5hdChpKV0uY29kZU9yaWdpbjsK
KyAgICAgICAgICAgIGlmIChtX2dyYXBoLmR1bXBDb2RlT3JpZ2luKG91dCwgcHJlZml4LCBsYXN0
Tm9kZUluZGV4LCBibG9jay0+YXQoaSkpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgb3V0LCBwcmV2aW91c09yaWdpbik7CisgICAgICAgICAgICAgICAgcHJldmlvdXNPcmlnaW4g
PSBtX2dyYXBoW2Jsb2NrLT5hdChpKV0uY29kZU9yaWdpbjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fZ3JhcGguZHVtcChvdXQsIHByZWZpeCwgYmxvY2stPmF0KGkpKTsKICAgICAgICAg
ICAgIGxhc3ROb2RlSW5kZXggPSBibG9jay0+YXQoaSk7CiAgICAgICAgICAgICBsYXN0Tm9kZUlu
ZGV4Rm9yRGlzYXNzZW1ibHkgPSBibG9jay0+YXQoaSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
ZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZp
b3VzTGFiZWwsIG1fZW5kT2ZNYWluUGF0aCwgbGFzdE5vZGVJbmRleCk7CisgICAgYXBwZW5kKHJl
c3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIihFbmQg
T2YgTWFpbiBQYXRoKVxuIik7CisgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdp
bik7CiAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZm
ZXIsIHByZXZpb3VzTGFiZWwsIG1fZW5kT2ZDb2RlLCBOb05vZGUpOwotfQotCi12b2lkIERpc2Fz
c2VtYmxlcjo6ZHVtcChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQotewotICAgIGR1bXAoV1RGOjpk
YXRhRmlsZSgpLCBsaW5rQnVmZmVyKTsKKyAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3Vz
T3JpZ2luKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIERpc2Fzc2VtYmxl
cjo6ZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwg
TGlua0J1ZmZlciYgbGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsJiBwcmV2aW91c0xh
YmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgY3VycmVudExhYmVsLCBOb2RlSW5kZXggY29udGV4
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuaAko
cmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtNjQsOCArNjUs
MjQgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIExpbmtCdWZm
ZXImKTsKICAgICB2b2lkIGR1bXAoTGlua0J1ZmZlciYpOworICAgIHZvaWQgcmVwb3J0VG9Qcm9m
aWxlcihQQlA6OkNvbXBpbGF0aW9uKiwgTGlua0J1ZmZlciYpOwogICAgIAogcHJpdmF0ZToKKyAg
ICB2b2lkIGR1bXBIZWFkZXIoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7CisgICAgCisgICAg
c3RydWN0IER1bXBlZE9wIHsKKyAgICAgICAgRHVtcGVkT3AoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDU3RyaW5nIHRleHQpCisgICAgICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKKyAg
ICAgICAgICAgICwgdGV4dCh0ZXh0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKKyAgICAgICAgQ1N0cmluZyB0ZXh0OworICAg
IH07CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPER1bXBlZE9wPiYsIFN0cmluZ1ByaW50U3RyZWFt
JiwgQ29kZU9yaWdpbiYpOworICAgIFZlY3RvcjxEdW1wZWRPcD4gY3JlYXRlRHVtcExpc3QoTGlu
a0J1ZmZlciYpOworICAgIAogICAgIHZvaWQgZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiwg
Y29uc3QgY2hhciogcHJlZml4LCBMaW5rQnVmZmVyJiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsJiBw
cmV2aW91c0xhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgY3VycmVudExhYmVsLCBOb2RlSW5k
ZXggY29udGV4dCk7CiAgICAgCiAgICAgR3JhcGgmIG1fZ3JhcGg7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKIEdyYXBoOjpHcmFwaChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBv
c3JFbnRyeUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFuZGxl
VmFsdWVzKQogICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX2NvZGVCbG9j
ayhjb2RlQmxvY2spCisgICAgLCBtX2NvbXBpbGF0aW9uKGdsb2JhbERhdGEubV9wZXJCeXRlY29k
ZVByb2ZpbGVyID8gZ2xvYmFsRGF0YS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5ld0NvbXBpbGF0
aW9uKGNvZGVCbG9jaywgUEJQOjpERkcpIDogMCkKICAgICAsIG1fcHJvZmlsZWRCbG9jayhjb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCkpCiAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkKICAgICAs
IG1fb3NyRW50cnlCeXRlY29kZUluZGV4KG9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKQEAgLTYzLDE1
ICs2NCwxNSBAQCBzdGF0aWMgdm9pZCBwcmludFdoaXRlU3BhY2UoUHJpbnRTdHJlYW0mCiAgICAg
ICAgIG91dC5wcmludCgiICIpOwogfQogCi12b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIE5vZGVJbmRleCBwcmV2Tm9kZUluZGV4
LCBOb2RlSW5kZXggbm9kZUluZGV4KQorYm9vbCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBOb2RlSW5kZXggcHJldk5vZGVJbmRleCwg
Tm9kZUluZGV4IG5vZGVJbmRleCkKIHsKICAgICBpZiAocHJldk5vZGVJbmRleCA9PSBOb05vZGUp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIE5vZGUm
IGN1cnJlbnROb2RlID0gYXQobm9kZUluZGV4KTsKICAgICBOb2RlJiBwcmV2aW91c05vZGUgPSBh
dChwcmV2Tm9kZUluZGV4KTsKICAgICBpZiAocHJldmlvdXNOb2RlLmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lID09IGN1cnJlbnROb2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBWZWN0b3I8Q29k
ZU9yaWdpbj4gcHJldmlvdXNJbmxpbmVTdGFjayA9IHByZXZpb3VzTm9kZS5jb2RlT3JpZ2luLmlu
bGluZVN0YWNrKCk7CiAgICAgVmVjdG9yPENvZGVPcmlnaW4+IGN1cnJlbnRJbmxpbmVTdGFjayA9
IGN1cnJlbnROb2RlLmNvZGVPcmlnaW4uaW5saW5lU3RhY2soKTsKQEAgLTg0LDExICs4NSwxNCBA
QCB2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYgCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCisgICAgYm9vbCBoYXNQcmludGVkID0gZmFsc2U7CisgICAgCiAgICAgLy8gUHJp
bnQgdGhlIHBvcHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gcHJldmlvdXNJbmxpbmVTdGFjay5z
aXplKCk7IGktLSA+IGluZGV4T2ZEaXZlcmdlbmNlOykgewogICAgICAgICBvdXQucHJpbnQocHJl
Zml4KTsKICAgICAgICAgcHJpbnRXaGl0ZVNwYWNlKG91dCwgaSAqIDIpOwogICAgICAgICBvdXQu
cHJpbnQoIjwtLSAiLCAqcHJldmlvdXNJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUsICJc
biIpOworICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgLy8gUHJp
bnQgdGhlIHB1c2hlcy4KQEAgLTk2LDcgKzEwMCwxMCBAQCB2b2lkIEdyYXBoOjpkdW1wQ29kZU9y
aWdpbihQcmludFN0cmVhbSYgCiAgICAgICAgIG91dC5wcmludChwcmVmaXgpOwogICAgICAgICBw
cmludFdoaXRlU3BhY2Uob3V0LCBpICogMik7CiAgICAgICAgIG91dC5wcmludCgiLS0+ICIsICpj
dXJyZW50SW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLCAiXG4iKTsKKyAgICAgICAgaGFz
UHJpbnRlZCA9IHRydWU7CiAgICAgfQorICAgIAorICAgIHJldHVybiBoYXNQcmludGVkOwogfQog
CiBpbnQgR3JhcGg6OmFtb3VudE9mTm9kZVdoaXRlU3BhY2UoTm9kZSYgbm9kZSkKQEAgLTI1NCw2
ICsyNjEsMTMgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAg
ICAgICBpZiAoaGFzUHJpbnRlZCkKICAgICAgICAgICAgIG91dC5wcmludCgiLCAiKTsKICAgICAg
ICAgb3V0LnByaW50KGluZGV4aW5nVHlwZVRvU3RyaW5nKG5vZGUuaW5kZXhpbmdUeXBlKCkpKTsK
KyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIGlmIChub2RlLmhhc0V4ZWN1
dGlvbkNvdW50ZXIoKSkgeworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAgIG91
dC5wcmludCgiLCAiKTsKKyAgICAgICAgb3V0LnByaW50KFJhd1BvaW50ZXIobm9kZS5leGVjdXRp
b25Db3VudGVyKCkpKTsKKyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlm
IChvcCA9PSBKU0NvbnN0YW50KSB7CiAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8gIiwg
IiA6ICIiLCAiJCIsIG5vZGUuY29uc3RhbnROdW1iZXIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw4ICsxOTksOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcHJpbnROb2RlV2hpdGVTcGFjZShQcmludFN0cmVhbSYs
IE5vZGUmKTsKIAogICAgIC8vIER1bXAgdGhlIGNvZGUgb3JpZ2luIG9mIHRoZSBnaXZlbiBub2Rl
IGFzIGEgZGlmZiBmcm9tIHRoZSBjb2RlIG9yaWdpbiBvZiB0aGUKLSAgICAvLyBwcmVjZWRpbmcg
bm9kZS4KLSAgICB2b2lkIGR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciog
cHJlZml4LCBOb2RlSW5kZXgsIE5vZGVJbmRleCk7CisgICAgLy8gcHJlY2VkaW5nIG5vZGUuIFJl
dHVybnMgdHJ1ZSBpZiBhbnl0aGluZyB3YXMgcHJpbnRlZC4KKyAgICBib29sIGR1bXBDb2RlT3Jp
Z2luKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogcHJlZml4LCBOb2RlSW5kZXgsIE5vZGVJbmRl
eCk7CiAKICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8
QmxvY2tJbmRleD4mIGJsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbik7CiAKQEAgLTY3MSw2
ICs2NzEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBtX2dsb2JhbERhdGE7
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBQQlA6OkNvbXBpbGF0aW9uKiBtX2Nv
bXBpbGF0aW9uOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogCiAgICAgVmVjdG9y
PCBPd25QdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNyBAQCBKSVRDb21waWxlcjo6SklUQ29tcGlsZXIoR3JhcGgmIGRmZykK
ICAgICAsIG1fZ3JhcGgoZGZnKQogICAgICwgbV9jdXJyZW50Q29kZU9yaWdpbkluZGV4KDApCiB7
Ci0gICAgaWYgKHNob3VsZFNob3dEaXNhc3NlbWJseSgpKQorICAgIGlmIChzaG91bGRTaG93RGlz
YXNzZW1ibHkoKSB8fCBtX2dyYXBoLm1fZ2xvYmFsRGF0YS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIp
CiAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gYWRvcHRQdHIobmV3IERpc2Fzc2VtYmxlcihkZmcp
KTsKIH0KIApAQCAtMjM2LDggKzIzNiwxMCBAQCBib29sIEpJVENvbXBpbGVyOjpjb21waWxlKEpJ
VENvZGUmIGVudHJ5CiAgICAgbGluayhsaW5rQnVmZmVyKTsKICAgICBzcGVjdWxhdGl2ZS5saW5r
T1NSRW50cmllcyhsaW5rQnVmZmVyKTsKIAotICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKKyAgICBp
ZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5kdW1w
KGxpbmtCdWZmZXIpOworICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pCisgICAgICAgIG1f
ZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fZ3JhcGgubV9jb21waWxhdGlvbiwgbGlu
a0J1ZmZlcik7CiAKICAgICBlbnRyeSA9IEpJVENvZGUoCiAgICAgICAgIGxpbmtCdWZmZXIuZmlu
YWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5KCksCkBAIC0zMjcsOCArMzI5LDEwIEBAIGJvb2wg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbihKSVRDb2QKICAgICBsaW5rQnVmZmVyLmxpbmso
Y2FsbFN0YWNrQ2hlY2ssIGN0aV9zdGFja19jaGVjayk7CiAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGxBcml0eUNoZWNrLCBtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0
cnVjdF9hcml0eUNoZWNrIDogY3RpX29wX2NhbGxfYXJpdHlDaGVjayk7CiAgICAgCi0gICAgaWYg
KG1fZGlzYXNzZW1ibGVyKQorICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKICAgICAg
ICAgbV9kaXNhc3NlbWJsZXItPmR1bXAobGlua0J1ZmZlcik7CisgICAgaWYgKG1fZ3JhcGgubV9j
b21waWxhdGlvbikKKyAgICAgICAgbV9kaXNhc3NlbWJsZXItPnJlcG9ydFRvUHJvZmlsZXIobV9n
cmFwaC5tX2NvbXBpbGF0aW9uLCBsaW5rQnVmZmVyKTsKIAogICAgIGVudHJ5V2l0aEFyaXR5Q2hl
Y2sgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoYXJpdHlDaGVjayk7CiAgICAgZW50cnkgPSBKSVRD
b2RlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEzNjMx
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NTksNiArODU5LDE2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgQVNTRVJUKGhhc0Fy
Z3VtZW50UG9zaXRpb25TdGFydCgpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0K
KyAgICAKKyAgICBib29sIGhhc0V4ZWN1dGlvbkNvdW50ZXIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wKCkgPT0gQ291bnRFeGVjdXRpb247CisgICAgfQorICAgIAorICAgIFBCUDo6RXhlY3V0
aW9uQ291bnRlciogZXhlY3V0aW9uQ291bnRlcigpCisgICAgeworICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PFBCUDo6RXhlY3V0aW9uQ291bnRlcio+KG1fb3BJbmZvKTsKKyAgICB9CiAKICAg
ICBib29sIHNob3VsZEdlbmVyYXRlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsOSBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKEdhcmJh
Z2VWYWx1ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBcCisgICAg
LyogQ291bnQgZXhlY3V0aW9uLiAqL1wKKyAgICBtYWNybyhDb3VudEV4ZWN1dGlvbiwgTm9kZU11
c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBUaGlzIGlzIGEgcHNldWRvLXRlcm1pbmFsLiBJ
dCBtZWFucyB0aGF0IGV4ZWN1dGlvbiBzaG91bGQgZmFsbCBvdXQgb2YgREZHIGF0ICovXAogICAg
IC8qIHRoaXMgcG9pbnQsIGJ1dCBleGVjdXRpb24gZG9lcyBjb250aW51ZSBpbiB0aGUgYmFzaWMg
YmxvY2sgLSBqdXN0IGluIGEgKi9cCiAgICAgLyogZGlmZmVyZW50IGNvbXBpbGVyLiAqL1wKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcxLDYgKzc3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRv
bToKICAgICAgICAgY2FzZSBJbmxpbmVTdGFydDoKICAgICAgICAgY2FzZSBOb3A6CisgICAgICAg
IGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIExhc3ROb2RlVHlwZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTM2MzE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTA0NCw2ICs1MDQ0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBDb3VudEV4ZWN1dGlvbjoKKyAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKDEpLCBN
YWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKG5vZGUuZXhlY3V0aW9uQ291bnRlcigpLT5h
ZGRyZXNzKCkpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFBoYW50b206CiAgICAgICAg
IC8vIFRoaXMgaXMgYSBuby1vcC4KICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTEyLDYgKzQ5MTIsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIGNhc2UgTmV3
RnVuY3Rpb25FeHByZXNzaW9uOgogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25FeHByZXNzaW9u
KG5vZGUpOwogICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBDb3VudEV4ZWN1dGlv
bjoKKyAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6
QWJzb2x1dGVBZGRyZXNzKG5vZGUuZXhlY3V0aW9uQ291bnRlcigpLT5hZGRyZXNzKCkpKTsKKyAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEdhcmJhZ2VWYWx1ZToKICAgICAgICAgLy8gV2Ugc2hv
dWxkIG5ldmVyIGdldCB0byB0aGUgcG9pbnQgb2YgY29kZSBlbWlzc2lvbiBmb3IgYSBHYXJiYWdl
VmFsdWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEzNjMxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksNiArODksNyBAQCBKSVQ6OkpJVChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCCiAg
ICAgLCBtX2xhc3RSZXN1bHRCeXRlY29kZVJlZ2lzdGVyKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCkpCiAgICAgLCBtX2p1bXBUYXJnZXRzUG9zaXRpb24oMCkKICNlbmRpZgorICAgICwg
bV9jb21waWxhdGlvbigwKQogI2lmIFVTRShPU19SQU5ET01ORVNTKQogICAgICwgbV9yYW5kb21H
ZW5lcmF0b3IoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkKICNlbHNlCkBAIC0yMzIs
NiArMjMzLDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICNpZiBFTkFC
TEUoSklUX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2dGKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUg
Zm9yIGJjIyV1IGF0IG9mZnNldCAweCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRl
YnVnT2Zmc2V0KCkpOwogI2VuZGlmCisgICAgICAgIAorICAgICAgICBpZiAobV9jb21waWxhdGlv
bikgeworICAgICAgICAgICAgYWRkNjQoCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKDEp
LAorICAgICAgICAgICAgICAgIEFic29sdXRlQWRkcmVzcyhtX2NvbXBpbGF0aW9uLT5leGVjdXRp
b25Db3VudGVyRm9yKFBCUDo6T3JpZ2luU3RhY2soUEJQOjpPcmlnaW4oCisgICAgICAgICAgICAg
ICAgICAgIG1fY29tcGlsYXRpb24tPmJ5dGVjb2RlcygpLCBtX2J5dGVjb2RlT2Zmc2V0KSkpLT5h
ZGRyZXNzKCkpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAobV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSkpIHsKICAgICAgICAgREVG
SU5FX0JJTkFSWV9PUChvcF9kZWxfYnlfdmFsKQpAQCAtNjMxLDggKzYzOSwxMCBAQCBKSVRDb2Rl
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgfQogI2VuZGlmCiAgICAgCi0g
ICAgaWYgKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpKQorICAgIGlmIChPcHRpb25zOjpzaG93
RGlzYXNzZW1ibHkoKSB8fCBtX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKICAg
ICAgICAgbV9kaXNhc3NlbWJsZXIgPSBhZG9wdFB0cihuZXcgSklURGlzYXNzZW1ibGVyKG1fY29k
ZUJsb2NrKSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQor
ICAgICAgICBtX2NvbXBpbGF0aW9uID0gbV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmls
ZXItPm5ld0NvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCBQQlA6OkJhc2VsaW5lKTsKICAgICAKICAg
ICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9m
Q29kZShsYWJlbCgpKTsKQEAgLTgyMyw4ICs4MzMsMTAgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVD
b21waWxlKENvZGVQdHIqIGZ1bgogICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBG
dW5jdGlvbkNvZGUgJiYgZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiAgICAgICAgICpmdW5jdGlv
bkVudHJ5QXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoYXJpdHlDaGVjayk7CiAK
LSAgICBpZiAobV9kaXNhc3NlbWJsZXIpCisgICAgaWYgKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJs
eSgpKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChwYXRjaEJ1ZmZlcik7CisgICAgaWYg
KG1fY29tcGlsYXRpb24pCisgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVy
KG1fY29tcGlsYXRpb24sIHBhdGNoQnVmZmVyKTsKICAgICAKICAgICBDb2RlUmVmIHJlc3VsdCA9
IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseSgpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NDcsNiArOTQ3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICNlbmRpZgogICAgICAgICBPd25QdHI8SklURGlzYXNz
ZW1ibGVyPiBtX2Rpc2Fzc2VtYmxlcjsKKyAgICAgICAgUEJQOjpDb21waWxhdGlvbiogbV9jb21w
aWxhdGlvbjsKICAgICAgICAgV2Vha1JhbmRvbSBtX3JhbmRvbUdlbmVyYXRvcjsKICAgICAgICAg
c3RhdGljIENvZGVSZWYgc3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIu
Y3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
c2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1
ZGUgIkpJVC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNDcsMTggKzQ4LDEwIEBAIEpJVERpc2Fzc2VtYmxlcjo6fkpJVERpc2Fz
c2VtYmxlcigpCiAKIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7Ci0gICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgQmFz
ZWxpbmUgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBK
SVRDb2RlOjpCYXNlbGluZUpJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxv
Y2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7Ci0gICAgb3V0LnByaW50KCIgICBDb2RlIGF0
IFsiLCBSYXdQb2ludGVyKGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2lu
dGVyKHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtC
dWZmZXIuZGVidWdTaXplKCkpLCAiKTpcbiIpOworICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVm
ZmVyKTsKICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBtX3N0YXJ0T2ZDb2Rl
LCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFpblBhdGhbMF0pOwogICAgIAotICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBmaXJzdFNsb3dMYWJlbDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJblNsb3dQYXRoLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbaV0uaXNTZXQoKSkg
ewotICAgICAgICAgICAgZmlyc3RTbG93TGFiZWwgPSBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleElu
U2xvd1BhdGhbaV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBk
dW1wRm9ySW5zdHJ1Y3Rpb25zKG91dCwgbGlua0J1ZmZlciwgIiAgICAiLCBtX2xhYmVsRm9yQnl0
ZWNvZGVJbmRleEluTWFpblBhdGgsIGZpcnN0U2xvd0xhYmVsLmlzU2V0KCkgPyBmaXJzdFNsb3dM
YWJlbCA6IG1fZW5kT2ZTbG93UGF0aCk7CisgICAgZHVtcEZvckluc3RydWN0aW9ucyhvdXQsIGxp
bmtCdWZmZXIsICIgICAgIiwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRoLCBmaXJz
dFNsb3dMYWJlbCgpKTsKICAgICBvdXQucHJpbnQoIiAgICAoRW5kIE9mIE1haW4gUGF0aClcbiIp
OwogICAgIGR1bXBGb3JJbnN0cnVjdGlvbnMob3V0LCBsaW5rQnVmZmVyLCAiICAgIChTKSAiLCBt
X2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGgsIG1fZW5kT2ZTbG93UGF0aCk7CiAgICAg
b3V0LnByaW50KCIgICAgKEVuZCBPZiBTbG93IFBhdGgpXG4iKTsKQEAgLTcxLDI3ICs2NCw5NCBA
QCB2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcChMaW5rQnVmZmVyJiBsCiAgICAgZHVtcChXVEY6
OmRhdGFGaWxlKCksIGxpbmtCdWZmZXIpOwogfQogCi12b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVt
cEZvckluc3RydWN0aW9ucyhQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
LCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJl
bHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCkKK3ZvaWQgSklURGlzYXNzZW1ibGVy
OjpyZXBvcnRUb1Byb2ZpbGVyKFBCUDo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uLCBMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQoreworICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAKKyAg
ICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CisgICAgY29tcGlsYXRpb24tPmFkZERlc2Ny
aXB0aW9uKFBCUDo6Q29tcGlsZWRCeXRlY29kZShQQlA6Ok9yaWdpblN0YWNrKCksIG91dC50b0NT
dHJpbmcoKSkpOworICAgIG91dC5yZXNldCgpOworICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxp
bmtCdWZmZXIsIG1fc3RhcnRPZkNvZGUsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0
aFswXSk7CisgICAgY29tcGlsYXRpb24tPmFkZERlc2NyaXB0aW9uKFBCUDo6Q29tcGlsZWRCeXRl
Y29kZShQQlA6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSkpOworICAgIAorICAgIHJl
cG9ydEluc3RydWN0aW9ucyhjb21waWxhdGlvbiwgbGlua0J1ZmZlciwgIiAgICAiLCBtX2xhYmVs
Rm9yQnl0ZWNvZGVJbmRleEluTWFpblBhdGgsIGZpcnN0U2xvd0xhYmVsKCkpOworICAgIGNvbXBp
bGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5T
dGFjaygpLCAiICAgIChFbmQgT2YgTWFpbiBQYXRoKVxuIikpOworICAgIHJlcG9ydEluc3RydWN0
aW9ucyhjb21waWxhdGlvbiwgbGlua0J1ZmZlciwgIiAgICAoUykgIiwgbV9sYWJlbEZvckJ5dGVj
b2RlSW5kZXhJblNsb3dQYXRoLCBtX2VuZE9mU2xvd1BhdGgpOworICAgIGNvbXBpbGF0aW9uLT5h
ZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoUEJQOjpPcmlnaW5TdGFjaygpLCAi
ICAgIChFbmQgT2YgU2xvdyBQYXRoKVxuIikpOworICAgIG91dC5yZXNldCgpOworICAgIGR1bXBE
aXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fZW5kT2ZTbG93UGF0aCwgbV9lbmRPZkNvZGUp
OworICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQQlA6OkNvbXBpbGVkQnl0ZWNvZGUo
UEJQOjpPcmlnaW5TdGFjaygpLCBvdXQudG9DU3RyaW5nKCkpKTsKK30KKwordm9pZCBKSVREaXNh
c3NlbWJsZXI6OmR1bXBIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKK3sKKyAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBCYXNlbGluZSBKSVQgY29kZSBmb3Ig
IiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVENvZGU6OkJhc2VsaW5lSklU
KSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3Vu
dCgpLCAiXG4iKTsKKyAgICBvdXQucHJpbnQoIiAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlu
a0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hh
cio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSks
ICIpOlxuIik7Cit9CisKK01hY3JvQXNzZW1ibGVyOjpMYWJlbCBKSVREaXNhc3NlbWJsZXI6OmZp
cnN0U2xvd0xhYmVsKCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGxhYmVscy5z
aXplKCk7KSB7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZpcnN0U2xvd0xhYmVsOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1Bh
dGguc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5T
bG93UGF0aFtpXS5pc1NldCgpKSB7CisgICAgICAgICAgICBmaXJzdFNsb3dMYWJlbCA9IG1fbGFi
ZWxGb3JCeXRlY29kZUluZGV4SW5TbG93UGF0aFtpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBmaXJzdFNsb3dMYWJlbC5pc1NldCgpID8gZmlyc3RT
bG93TGFiZWwgOiBtX2VuZE9mU2xvd1BhdGg7Cit9CisKK1ZlY3RvcjxKSVREaXNhc3NlbWJsZXI6
OkR1bXBlZE9wPiBKSVREaXNhc3NlbWJsZXI6OmR1bXBWZWN0b3JGb3JJbnN0cnVjdGlvbnMoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8TWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW5kTGFiZWwpCit7
CisgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgIFZlY3RvcjxEdW1wZWRPcD4gcmVzdWx0
OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsYWJlbHMuc2l6ZSgpOykgewog
ICAgICAgICBpZiAoIWxhYmVsc1tpXS5pc1NldCgpKSB7CiAgICAgICAgICAgICBpKys7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBvdXQucmVzZXQoKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChEdW1wZWRPcCgpKTsKKyAgICAgICAgcmVzdWx0Lmxhc3QoKS5pbmRl
eCA9IGk7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgpOwogICAgICAgICBtX2NvZGVCbG9jay0+
ZHVtcEJ5dGVjb2RlKG91dCwgaSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbmV4dEluZGV4ID0g
aSArIDE7IDsgbmV4dEluZGV4KyspIHsKICAgICAgICAgICAgIGlmIChuZXh0SW5kZXggPj0gbGFi
ZWxzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtC
dWZmZXIsIGxhYmVsc1tpXSwgZW5kTGFiZWwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICByZXN1bHQubGFzdCgpLmRpc2Fzc2VtYmx5ID0gb3V0LnRvQ1N0cmluZygp
OworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAobGFiZWxzW25leHRJbmRleF0uaXNTZXQoKSkgewogICAgICAgICAgICAgICAgIGR1
bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIGxhYmVsc1tpXSwgbGFiZWxzW25leHRJbmRl
eF0pOworICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0KCkuZGlzYXNzZW1ibHkgPSBvdXQudG9D
U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgaSA9IG5leHRJbmRleDsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcEZvckluc3RydWN0aW9u
cyhQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBjb25zdCBjaGFyKiBw
cmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBlbmRMYWJlbCkKK3sKKyAgICBWZWN0b3I8RHVtcGVkT3A+IGR1bXBlZE9wcyA9
IGR1bXBWZWN0b3JGb3JJbnN0cnVjdGlvbnMobGlua0J1ZmZlciwgcHJlZml4LCBsYWJlbHMsIGVu
ZExhYmVsKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtcGVkT3BzLnNp
emUoKTsgKytpKQorICAgICAgICBvdXQucHJpbnQoZHVtcGVkT3BzW2ldLmRpc2Fzc2VtYmx5KTsK
K30KKwordm9pZCBKSVREaXNhc3NlbWJsZXI6OnJlcG9ydEluc3RydWN0aW9ucyhQQlA6OkNvbXBp
bGF0aW9uKiBjb21waWxhdGlvbiwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciog
cHJlZml4LCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiYgbGFiZWxzLCBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgZW5kTGFiZWwpCit7CisgICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wZWRPcHMg
PSBkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKGxpbmtCdWZmZXIsIHByZWZpeCwgbGFiZWxzLCBl
bmRMYWJlbCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bXBlZE9wcy5z
aXplKCk7ICsraSkgeworICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oCisgICAg
ICAgICAgICBQQlA6OkNvbXBpbGVkQnl0ZWNvZGUoCisgICAgICAgICAgICAgICAgUEJQOjpPcmln
aW5TdGFjayhQQlA6Ok9yaWdpbihjb21waWxhdGlvbi0+Ynl0ZWNvZGVzKCksIGR1bXBlZE9wc1tp
XS5pbmRleCkpLAorICAgICAgICAgICAgICAgIGR1bXBlZE9wc1tpXS5kaXNhc3NlbWJseSkpOwor
ICAgIH0KIH0KIAogdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0
cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
ZnJvbSwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHRvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01OCw5ICs1OSwyMSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBkdW1wKExpbmtCdWZmZXImKTsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
LCBMaW5rQnVmZmVyJik7CisgICAgdm9pZCByZXBvcnRUb1Byb2ZpbGVyKFBCUDo6Q29tcGlsYXRp
b24qLCBMaW5rQnVmZmVyJik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBkdW1wSGVhZGVyKFByaW50
U3RyZWFtJiwgTGlua0J1ZmZlciYpOworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBmaXJzdFNs
b3dMYWJlbCgpOworICAgIAorICAgIHN0cnVjdCBEdW1wZWRPcCB7CisgICAgICAgIHVuc2lnbmVk
IGluZGV4OworICAgICAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5OworICAgIH07CisgICAgVmVjdG9y
PER1bXBlZE9wPiBkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKExpbmtCdWZmZXImLCBjb25zdCBj
aGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7CisgICAgICAgIAogICAgIHZvaWQgZHVtcEZvcklu
c3RydWN0aW9ucyhQcmludFN0cmVhbSYsIExpbmtCdWZmZXImLCBjb25zdCBjaGFyKiBwcmVmaXgs
IFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBlbmRMYWJlbCk7CisgICAgdm9pZCByZXBvcnRJbnN0cnVjdGlvbnMoUEJQOjpDb21waWxh
dGlvbiosIExpbmtCdWZmZXImLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWw+JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7Cisg
ICAgCiAgICAgdm9pZCBkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVyJiwg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZyb20sIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCB0byk7CiAg
ICAgCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2RlLmgiCisKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBC
UCB7CisKK0pTVmFsdWUgQnl0ZWNvZGU6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorewor
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ieXRlY29kZUluZGV4LCBqc051bWJlcihtX2J5dGVjb2RlSW5kZXgpKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZXNj
cmlwdGlvbiwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOChtX2Rlc2NyaXB0aW9uKSkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2RlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGUu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUEJ5dGVjb2RlX2gKKyNkZWZpbmUgUEJQ
Qnl0ZWNvZGVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBCeXRl
Y29kZSB7CitwdWJsaWM6CisgICAgQnl0ZWNvZGUoKQorICAgICAgICA6IG1fYnl0ZWNvZGVJbmRl
eChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBDU3RyaW5nJiBk
ZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAg
ICAgICAgLCBtX2Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRl
eDsgfQorICAgIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXNjcmlwdGlvbjsgfQorICAgIAorICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsK
K3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIENTdHJpbmcgbV9k
ZXNjcmlwdGlvbjsKK307CisKK2lubGluZSB1bnNpZ25lZCBnZXRCeXRlY29kZUluZGV4Rm9yQnl0
ZWNvZGUoQnl0ZWNvZGUqIGJ5dGVjb2RlKSB7IHJldHVybiBieXRlY29kZS0+Ynl0ZWNvZGVJbmRl
eCgpOyB9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKworI2VuZGlmIC8vIFBCUEJ5dGVj
b2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5dGVjb2Rl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUEJ5
dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUEJQQnl0ZWNvZGVzLmgiCisKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIFBCUCB7CisKK0J5dGVjb2Rlczo6Qnl0ZWNvZGVzKHNpemVfdCBpZCwgQ29k
ZUJsb2NrSGFzaCBoYXNoKQorICAgIDogbV9pZChpZCkKKyAgICAsIG1faGFzaChoYXNoKQorewor
fQorCitCeXRlY29kZXM6On5CeXRlY29kZXMoKSB7IH0KKwordW5zaWduZWQgQnl0ZWNvZGVzOjpp
bmRleEZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlLCB1bnNpZ25lZCwgZ2V0Qnl0ZWNvZGVJbmRl
eEZvckJ5dGVjb2RlPihjb25zdF9jYXN0PEJ5dGVjb2RlKj4obV9ieXRlY29kZS5iZWdpbigpKSwg
bV9ieXRlY29kZS5zaXplKCksIGJ5dGVjb2RlSW5kZXgpIC0gbV9ieXRlY29kZS5iZWdpbigpOwor
fQorCitjb25zdCBCeXRlY29kZSYgQnl0ZWNvZGVzOjpmb3JCeXRlY29kZUluZGV4KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGF0KGluZGV4Rm9yQnl0ZWNvZGVJ
bmRleChieXRlY29kZUluZGV4KSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVzOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIjIiwgbV9oYXNoLCAiKCIsIG1faWQs
ICIpIik7Cit9CisKK0pTVmFsdWUgQnl0ZWNvZGVzOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7
CisgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpzTnVtYmVyKG1faWQpKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5oYXNo
LCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KHRvQ1N0cmluZyhtX2hhc2gpKSkpOwor
ICAgIAorICAgIEpTQXJyYXkqIHN0cmVhbSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnl0ZWNvZGUuc2l6ZSgpOyArK2kpCisg
ICAgICAgIHN0cmVhbS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9ieXRlY29kZVtpXS50b0pT
KGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZSwgc3RyZWFtKTsKKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBCeXRlY29kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQnl0ZWNvZGVzLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBQQlBCeXRlY29kZXNfaAorI2RlZmluZSBQQlBCeXRlY29kZXNfaAor
CisjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNs
dWRlICJQQlBCeXRlY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlcyB7CitwdWJsaWM6
CisgICAgQnl0ZWNvZGVzKHNpemVfdCBpZCwgQ29kZUJsb2NrSGFzaCk7CisgICAgfkJ5dGVjb2Rl
cygpOworICAgIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSkgeyBt
X2J5dGVjb2RlLmFwcGVuZChieXRlY29kZSk7IH0KKyAgICAKKyAgICBzaXplX3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CisgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNoOyB9CisgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUg
aXMgbm90IGluZGV4ZWQgYnkgYnl0ZWNvZGUgaW5kZXguCisgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGUuc2l6ZSgpOyB9CisgICAgY29uc3QgQnl0ZWNvZGUmIGF0
KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVbaV07IH0KKyAgICAKKyAgICB1
bnNpZ25lZCBpbmRleEZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29u
c3Q7CisgICAgY29uc3QgQnl0ZWNvZGUmIGZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCkgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisgICAgCisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0
ZToKKyAgICBzaXplX3QgbV9pZDsKKyAgICBDb2RlQmxvY2tIYXNoIG1faGFzaDsKKyAgICBWZWN0
b3I8Qnl0ZWNvZGU+IG1fYnl0ZWNvZGU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQ
CisKKyNlbmRpZiAvLyBQQlBCeXRlY29kZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBDb21waWxhdGlv
bi5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitDb21w
aWxhdGlvbjo6Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBpbGF0aW9uS2lu
ZCBraW5kKQorICAgIDogbV9ieXRlY29kZXMoYnl0ZWNvZGVzKQorICAgICwgbV9raW5kKGtpbmQp
Cit7Cit9CisKK0NvbXBpbGF0aW9uOjp+Q29tcGlsYXRpb24oKSB7IH0KKwordm9pZCBDb21waWxh
dGlvbjo6YWRkRGVzY3JpcHRpb24oY29uc3QgQ29tcGlsZWRCeXRlY29kZSYgY29tcGlsZWRCeXRl
Y29kZSkKK3sKKyAgICBtX2Rlc2NyaXB0aW9ucy5hcHBlbmQoY29tcGlsZWRCeXRlY29kZSk7Cit9
CisKK0V4ZWN1dGlvbkNvdW50ZXIqIENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNv
bnN0IE9yaWdpblN0YWNrJiBvcmlnaW4pCit7CisgICAgSGFzaE1hcDxPcmlnaW5TdGFjaywgT3du
UHRyPEV4ZWN1dGlvbkNvdW50ZXI+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NvdW50ZXJzLmZpbmQo
b3JpZ2luKTsKKyAgICBpZiAoaXRlciAhPSBtX2NvdW50ZXJzLmVuZCgpKQorICAgICAgICByZXR1
cm4gaXRlci0+dmFsdWUuZ2V0KCk7CisgICAgCisgICAgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+
IGNvdW50ZXIgPSBhZG9wdFB0cihuZXcgRXhlY3V0aW9uQ291bnRlcigpKTsKKyAgICBFeGVjdXRp
b25Db3VudGVyKiByZXN1bHQgPSBjb3VudGVyLmdldCgpOworICAgIG1fY291bnRlcnMuYWRkKG9y
aWdpbiwgY291bnRlci5yZWxlYXNlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFs
dWUgQ29tcGlsYXRpb246OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2Jq
ZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5i
eXRlY29kZXNJRCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxh
dGlvbktpbmQsIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgodG9DU3RyaW5nKG1fa2lu
ZCkpKSk7CisgICAgCisgICAgSlNBcnJheSogZGVzY3JpcHRpb25zID0gY29uc3RydWN0RW1wdHlB
cnJheShleGVjLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kZXNjcmlwdGlv
bnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlc2NyaXB0aW9ucy0+cHV0RGlyZWN0SW5kZXgoZXhl
YywgaSwgbV9kZXNjcmlwdGlvbnNbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVzY3JpcHRpb25z
LCBkZXNjcmlwdGlvbnMpOworICAgIAorICAgIEpTQXJyYXkqIGNvdW50ZXJzID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBIYXNoTWFwPE9yaWdpblN0YWNrLCBPd25QdHI8RXhl
Y3V0aW9uQ291bnRlcj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb3VudGVycy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hNYXA8T3JpZ2luU3RhY2ssIE93blB0cjxFeGVjdXRpb25Db3VudGVyPiA+
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9jb3VudGVycy5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CisgICAgICAgIEpTT2JqZWN0KiBjb3VudGVyRW50cnkgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKKyAgICAgICAgY291bnRlckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkub3JpZ2luLCBpdGVyLT5rZXkudG9KUyhl
eGVjKSk7CisgICAgICAgIGNvdW50ZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV4ZWN1dGlvbkNvdW50LCBqc051bWJlcihpdGVyLT52
YWx1ZS0+Y291bnQoKSkpOworICAgICAgICBjb3VudGVycy0+cHVzaChleGVjLCBjb3VudGVyRW50
cnkpOworICAgIH0KKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb3VudGVycywgY291bnRlcnMpOworICAgIAorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBpbGF0aW9uX2gKKyNkZWZpbmUgUEJQ
Q29tcGlsYXRpb25faAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBCUENvbXBp
bGF0aW9uS2luZC5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGVkQnl0ZWNvZGUuaCIKKyNpbmNsdWRl
ICJQQlBFeGVjdXRpb25Db3VudGVyLmgiCisjaW5jbHVkZSAiUEJQT3JpZ2luU3RhY2suaCIKKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlczsK
KworLy8gUmVwcmVzZW50cyB0aGUgYWN0IG9mIGV4ZWN1dGluZyBzb21lIGJ5dGVjb2RlcyBpbiBz
b21lIGVuZ2luZSwgYW5kIGRvZXMKKy8vIGFsbCBvZiB0aGUgY291bnRpbmcgZm9yIHRob3NlIGV4
ZWN1dGlvbnMuCisKK2NsYXNzIENvbXBpbGF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29tcGlsYXRpb24pOworcHVibGljOgorICAgIENv
bXBpbGF0aW9uKEJ5dGVjb2RlcyosIENvbXBpbGF0aW9uS2luZCk7CisgICAgfkNvbXBpbGF0aW9u
KCk7CisgICAgCisgICAgQnl0ZWNvZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5
dGVjb2RlczsgfQorICAgIENvbXBpbGF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9CisgICAgCisgICAgdm9pZCBhZGREZXNjcmlwdGlvbihjb25zdCBDb21waWxlZEJ5dGVj
b2RlJik7CisgICAgRXhlY3V0aW9uQ291bnRlciogZXhlY3V0aW9uQ291bnRlckZvcihjb25zdCBP
cmlnaW5TdGFjayYpOworICAgIAorICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICAKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKKyAgICBDb21waWxh
dGlvbktpbmQgbV9raW5kOworICAgIFZlY3RvcjxDb21waWxlZEJ5dGVjb2RlPiBtX2Rlc2NyaXB0
aW9uczsKKyAgICBIYXNoTWFwPE9yaWdpblN0YWNrLCBPd25QdHI8RXhlY3V0aW9uQ291bnRlcj4g
PiBtX2NvdW50ZXJzOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYg
Ly8gUEJQQ29tcGlsYXRpb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRpb25LaW5kLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxhdGlvbktpbmQuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQQlBDb21waWxh
dGlvbktpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UEJQOjpD
b21waWxhdGlvbktpbmQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEpT
Qzo6UEJQOjpMTEludDoKKyAgICAgICAgb3V0LnByaW50KCJMTEludCIpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBKU0M6OlBCUDo6QmFzZWxpbmU6CisgICAgICAgIG91dC5wcmludCgiQmFz
ZWxpbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpQQlA6OkRGRzoKKyAgICAg
ICAgb3V0LnByaW50KCJERkciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsYXRp
b25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BC
UENvbXBpbGF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1BCUENvbXBpbGF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgUEJQQ29tcGlsYXRpb25LaW5kX2gKKyNkZWZpbmUgUEJQQ29tcGlsYXRpb25LaW5kX2gKKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitlbnVtIENvbXBpbGF0aW9uS2luZCB7
CisgICAgTExJbnQsCisgICAgQmFzZWxpbmUsCisgICAgREZHCit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6UEJQCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3Zv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UEJQOjpDb21waWxhdGlvbktpbmQp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFBCUENvbXBpbGF0aW9uS2luZF9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBDb21waWxlZEJ5dGVj
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQ
Q29tcGlsZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGVkQnl0ZWNvZGUuaCIKKwor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
UEJQIHsKKworQ29tcGlsZWRCeXRlY29kZTo6Q29tcGlsZWRCeXRlY29kZShjb25zdCBPcmlnaW5T
dGFjayYgb3JpZ2luLCBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICA6IG1fb3JpZ2lu
KG9yaWdpbikKKyAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pCit7Cit9CisKK0NvbXBp
bGVkQnl0ZWNvZGU6On5Db21waWxlZEJ5dGVjb2RlKCkKK3sKK30KKworSlNWYWx1ZSBDb21waWxl
ZEJ5dGVjb2RlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgCisgICAgcmVzdWx0LT5w
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkub3JpZ2lu
LCBtX29yaWdpbi50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZXNjcmlwdGlvbiwganNTdHJpbmcoZXhl
YywgU3RyaW5nOjpmcm9tVVRGOChtX2Rlc2NyaXB0aW9uKSkpOworICAgIAorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVkQnl0ZWNvZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQQ29tcGlsZWRCeXRlY29kZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUENvbXBpbGVk
Qnl0ZWNvZGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUENvbXBpbGVkQnl0ZWNv
ZGVfaAorI2RlZmluZSBQQlBDb21waWxlZEJ5dGVjb2RlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJQQlBPcmlnaW5TdGFjay5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBDb21waWxl
ZEJ5dGVjb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBJdCdzIHZhbGlkIHRvIGhhdmUgYW4gZW1wdHkg
T3JpZ2luU3RhY2ssIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgc29tZQorICAgIC8vIHNv
cnQgb2Ygbm9uLWJ5dGVjb2RlLXJlbGF0ZWQgbWFjaGluZSBjb2RlLgorICAgIENvbXBpbGVkQnl0
ZWNvZGUoY29uc3QgT3JpZ2luU3RhY2smLCBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlvbik7Cisg
ICAgfkNvbXBpbGVkQnl0ZWNvZGUoKTsKKyAgICAKKyAgICBjb25zdCBPcmlnaW5TdGFjayYgb3Jp
Z2luU3RhY2soKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGNvbnN0IENTdHJpbmcm
IGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQorICAgIAorICAg
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgT3Jp
Z2luU3RhY2sgbV9vcmlnaW47CisgICAgQ1N0cmluZyBtX2Rlc2NyaXB0aW9uOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYgLy8gUEJQQ29tcGlsZWRCeXRlY29kZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBEYXRhYmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBE
YXRhYmFzZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJQQlBEYXRhYmFzZS5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiSlNPTk9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK0RhdGFiYXNlOjpEYXRhYmFzZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKK3sK
K30KKworRGF0YWJhc2U6On5EYXRhYmFzZSgpCit7Cit9CisKK0J5dGVjb2RlcyogRGF0YWJhc2U6
OmFkZEJ5dGVjb2RlcyhDb2RlQmxvY2tIYXNoIGhhc2gpCit7CisgICAgbV9ieXRlY29kZXMuYXBw
ZW5kKEJ5dGVjb2RlcyhtX2J5dGVjb2Rlcy5zaXplKCksIGhhc2gpKTsKKyAgICByZXR1cm4gJm1f
Ynl0ZWNvZGVzLmxhc3QoKTsKK30KKworQnl0ZWNvZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNv
ZGVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIFN0cmluZ1ByaW50U3RyZWFtIG91
dDsKKyAgICAKKyAgICBjb2RlQmxvY2sgPSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpOwor
ICAgIAorICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNvZGVzKj46Oml0ZXJhdG9yIGl0ZXIg
PSBtX2J5dGVjb2Rlc01hcC5maW5kKGNvZGVCbG9jayk7CisgICAgaWYgKGl0ZXIgIT0gbV9ieXRl
Y29kZXNNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAgICAKKyAgICBC
eXRlY29kZXMqIHJlc3VsdCA9IGFkZEJ5dGVjb2Rlcyhjb2RlQmxvY2stPmhhc2goKSk7CisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJbmRleCA8IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgeworICAgICAgICBvdXQucmVzZXQoKTsK
KyAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgcmVzdWx0LT5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3V0LnRvQ1N0cmlu
ZygpKSk7CisgICAgICAgIAorICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29kZUxlbmd0aCgK
KyAgICAgICAgICAgIG1fZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCisgICAg
ICAgICAgICAgICAgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XS51Lm9w
Y29kZSkpOworICAgIH0KKyAgICAKKyAgICBtX2J5dGVjb2Rlc01hcC5hZGQoY29kZUJsb2NrLCBy
ZXN1bHQpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgRGF0YWJhc2U6Om5v
dGlmeURlc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIG1fYnl0ZWNvZGVz
TWFwLnJlbW92ZShjb2RlQmxvY2spOworfQorCitDb21waWxhdGlvbiogRGF0YWJhc2U6Om5ld0Nv
bXBpbGF0aW9uKEJ5dGVjb2RlcyogYnl0ZWNvZGVzLCBDb21waWxhdGlvbktpbmQga2luZCkKK3sK
KyAgICBPd25QdHI8Q29tcGlsYXRpb24+IGNvbXBpbGF0aW9uID0gYWRvcHRQdHIobmV3IENvbXBp
bGF0aW9uKGJ5dGVjb2Rlcywga2luZCkpOworICAgIENvbXBpbGF0aW9uKiByZXN1bHQgPSBjb21w
aWxhdGlvbi5nZXQoKTsKKyAgICBtX2NvbXBpbGF0aW9ucy5hcHBlbmQoY29tcGlsYXRpb24ucmVs
ZWFzZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitDb21waWxhdGlvbiogRGF0YWJhc2U6
Om5ld0NvbXBpbGF0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBDb21waWxhdGlvbktpbmQga2lu
ZCkKK3sKKyAgICByZXR1cm4gbmV3Q29tcGlsYXRpb24oZW5zdXJlQnl0ZWNvZGVzRm9yKGNvZGVC
bG9jayksIGtpbmQpOworfQorCitKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYyk7CisgICAgCisgICAgSlNBcnJheSogYnl0ZWNvZGVzID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ieXRlY29kZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGJ5dGVjb2Rlcy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9i
eXRlY29kZXNbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzLCBieXRlY29kZXMpOwor
ICAgIAorICAgIEpTQXJyYXkqIGNvbXBpbGF0aW9ucyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhl
YywgMCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY29tcGlsYXRpb25zLnNpemUo
KTsgKytpKQorICAgICAgICBjb21waWxhdGlvbnMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG1f
Y29tcGlsYXRpb25zW2ldLT50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxhdGlvbnMsIGNvbXBp
bGF0aW9ucyk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5nIERhdGFiYXNl
Ojp0b0pTT04oKSBjb25zdAoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlKAorICAgICAgICBtX2dsb2JhbERhdGEsIEpTR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUobV9nbG9iYWxEYXRhLCBqc051bGwoKSkpOworICAgIAorICAg
IHJldHVybiBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCB0b0pTKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKSwgMCk7Cit9CisKK2Jvb2wgRGF0YWJhc2U6OnNhdmUo
Y29uc3QgY2hhciogZmlsZW5hbWUpIGNvbnN0Cit7CisgICAgT3duUHRyPEZpbGVQcmludFN0cmVh
bT4gb3V0ID0gRmlsZVByaW50U3RyZWFtOjpvcGVuKGZpbGVuYW1lLCAidyIpOworICAgIGlmICgh
b3V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgb3V0LT5wcmludCh0b0pTT04o
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQQlAKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUERhdGFiYXNlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRGF0YWJhc2Uu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBCUERhdGFiYXNlX2gKKyNkZWZpbmUgUEJQ
RGF0YWJhc2VfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlBCUEJ5dGVjb2Rl
cy5oIgorI2luY2x1ZGUgIlBCUENvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUEJQQ29tcGlsYXRp
b25LaW5kLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9T
ZWdtZW50ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgeworCitjbGFzcyBEYXRhYmFzZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFiYXNlKTsKK3B1
YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRhYmFzZShKU0dsb2JhbERhdGEmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB+RGF0YWJhc2UoKTsKKyAgICAKKyAgICBCeXRlY29kZXMqIGVu
c3VyZUJ5dGVjb2Rlc0ZvcihDb2RlQmxvY2sqKTsKKyAgICB2b2lkIG5vdGlmeURlc3RydWN0aW9u
KENvZGVCbG9jayopOworICAgIAorICAgIENvbXBpbGF0aW9uKiBuZXdDb21waWxhdGlvbihDb2Rl
QmxvY2sqLCBDb21waWxhdGlvbktpbmQpOworICAgIENvbXBpbGF0aW9uKiBuZXdDb21waWxhdGlv
bihCeXRlY29kZXMqLCBDb21waWxhdGlvbktpbmQpOworICAgIAorICAgIC8vIENvbnZlcnRzIHRo
ZSBkYXRhYmFzZSB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgaXMgc3VpdGFibGUgZm9yIEpT
T04gc3RyaW5naWZpY2F0aW9uLgorICAgIC8vIE5vdGUgdGhhdCBpdCdzIHByb2JhYmx5IGEgZ29v
ZCBpZGVhIHRvIHVzZSBhbiBFeGVjU3RhdGUqIGFzc29jaWF0ZWQgd2l0aCBhIGdsb2JhbAorICAg
IC8vIG9iamVjdCB0aGF0IGlzICJjbGVhbiIgLSBpLmUuIGFycmF5IGFuZCBvYmplY3QgcHJvdG90
eXBlcyBoYXZlbid0IGhhZCBzdHJhbmdlIHRoaW5ncworICAgIC8vIGRvbmUgdG8gdGhlbS4gQW5k
IHllcywgaXQgc2hvdWxkIGJlIGFwcHJvcHJpYXRlIHRvIGp1c3QgdXNlIGEgZ2xvYmFsRXhlYyBo
ZXJlLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25z
dDsKKyAgICAKKyAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YWJhc2UgdG8gYSBKYXZhU2NyaXB0IG9i
amVjdCB1c2luZyBhIHByaXZhdGUgdGVtcG9yYXJ5IGdsb2JhbCBvYmplY3QsCisgICAgLy8gYW5k
IHRoZW4gcmV0dXJucyB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGF0IG9iamVjdC4KKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9KU09OKCkgY29uc3Q7CisgICAgCisgICAgLy8g
U2F2ZXMgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gKGZyb20gdG9KU09OKCkpIHRvIHRoZSBnaXZl
biBmaWxlLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQorICAgIC8vIHNhdmUgZmFpbGVkLgorICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgc2F2ZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBhZGRCeXRlY29kZXMoQ29kZUJsb2NrSGFzaCk7Cisg
ICAgCisgICAgSlNHbG9iYWxEYXRhJiBtX2dsb2JhbERhdGE7CisgICAgU2VnbWVudGVkVmVjdG9y
PEJ5dGVjb2Rlcz4gbV9ieXRlY29kZXM7CisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29k
ZXMqPiBtX2J5dGVjb2Rlc01hcDsKKyAgICBWZWN0b3I8T3duUHRyPENvbXBpbGF0aW9uPiA+IG1f
Y29tcGlsYXRpb25zOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYg
Ly8gUEJQRGF0YWJhc2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UEJQRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9QQlBFeGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQRXhlY3V0aW9uQ291bnRlci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgUEJQRXhlY3V0aW9uQ291bnRlcl9oCisjZGVmaW5lIFBCUEV4ZWN1
dGlvbkNvdW50ZXJfaAorCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQQlAgewor
CitjbGFzcyBFeGVjdXRpb25Db3VudGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRXhlY3V0aW9uQ291bnRlcik7CitwdWJsaWM6CisgICAgRXhl
Y3V0aW9uQ291bnRlcigpIDogbV9jb3VudGVyKDApIHsgfQorICAgIAorICAgIHVpbnQ2NF90KiBh
ZGRyZXNzKCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQorICAgIAorICAgIHVpbnQ2NF90IGNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9CisKK3ByaXZhdGU6CisgICAgdWludDY0X3Qg
bV9jb3VudGVyOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCisjZW5kaWYgLy8g
UEJQRXhlY3V0aW9uQ291bnRlcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9QQlBPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9QQlBPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1BCUE9yaWdpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBCUE9yaWdpbi5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJQQlBCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJQQlBEYXRhYmFz
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBCUCB7CisKK09yaWdpbjo6T3JpZ2lu
KERhdGFiYXNlJiBkYXRhYmFzZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgpCisgICAgOiBtX2J5dGVjb2RlcyhkYXRhYmFzZS5lbnN1cmVCeXRlY29kZXNGb3Io
Y29kZUJsb2NrKSkKKyAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQoreworfQor
Cit2b2lkIE9yaWdpbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5w
cmludCgqbV9ieXRlY29kZXMsICI6YmMjIiwgbV9ieXRlY29kZUluZGV4KTsKK30KKworSlNWYWx1
ZSBPcmlnaW46OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZXNJRCwg
anNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZUluZGV4LCBqc051
bWJlcihtX2J5dGVjb2RlSW5kZXgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6UEJQCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9QQlBPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUEJQT3JpZ2luLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUEJQT3JpZ2luLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQT3JpZ2lu
X2gKKyNkZWZpbmUgUEJQT3JpZ2luX2gKKworI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKKyNp
bmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsK
KworbmFtZXNwYWNlIFBCUCB7CisKK2NsYXNzIEJ5dGVjb2RlczsKK2NsYXNzIERhdGFiYXNlOwor
CitjbGFzcyBPcmlnaW4geworcHVibGljOgorICAgIE9yaWdpbigpCisgICAgICAgIDogbV9ieXRl
Y29kZUluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIE9yaWdpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisg
ICAgICAgIDogbV9ieXRlY29kZUluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSAtIDEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oQnl0ZWNvZGVzKiBieXRl
Y29kZXMsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgICAgIDogbV9ieXRlY29kZXMoYnl0
ZWNvZGVzKQorICAgICAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSAtIDEpOworICAgIH0KKyAgICAKKyAgICBPcmlnaW4oRGF0YWJhc2UmLCBD
b2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KKyAgICAKKyAgICBCeXRlY29kZXMqIGJ5dGVjb2Rlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVzOyB9CisgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsgfQorICAgIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBPcmlnaW4mKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
T3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0OworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owor
ICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBCeXRl
Y29kZXMqIG1fYnl0ZWNvZGVzOworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKK307CisK
K2lubGluZSBib29sIE9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBPcmlnaW4mIG90aGVyKSBjb25z
dAoreworICAgIHJldHVybiBtX2J5dGVjb2RlcyA9PSBvdGhlci5tX2J5dGVjb2RlcworICAgICAg
ICAmJiBtX2J5dGVjb2RlSW5kZXggPT0gb3RoZXIubV9ieXRlY29kZUluZGV4OworfQorCitpbmxp
bmUgdW5zaWduZWQgT3JpZ2luOjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpQdHJI
YXNoPEJ5dGVjb2Rlcyo+OjpoYXNoKG1fYnl0ZWNvZGVzKSArIG1fYnl0ZWNvZGVJbmRleDsKK30K
KworaW5saW5lIGJvb2wgT3JpZ2luOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCk7Cit9CisKK3N0cnVjdCBPcmlnaW5IYXNoIHsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBPcmlnaW4mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IE9yaWdpbiYgYSwgY29uc3QgT3JpZ2luJiBiKSB7IHJldHVy
biBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlBCUDo6T3JpZ2luPiB7CisgICAgdHlw
ZWRlZiBKU0M6OlBCUDo6T3JpZ2luSGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6
UEJQOjpPcmlnaW4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6UEJQOjpPcmlnaW4+IHsg
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQQlBPcmlnaW5faAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3JpZ2luU3RhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFjay5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUEJQT3Jp
Z2luU3RhY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUEJQT3JpZ2luU3RhY2suaCIKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlBCUERhdGFiYXNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUEJQIHsKKworT3JpZ2luU3RhY2s6Ok9yaWdpblN0YWNr
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChP
cmlnaW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsKK30KKworT3JpZ2luU3RhY2s6Ok9y
aWdpblN0YWNrKGNvbnN0IE9yaWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RhY2suYXBwZW5kKG9y
aWdpbik7Cit9CisKK09yaWdpblN0YWNrOjpPcmlnaW5TdGFjayhEYXRhYmFzZSYgZGF0YWJhc2Us
IENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorewor
ICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBzdGFjayA9IGNvZGVPcmlnaW4uaW5saW5lU3RhY2soKTsK
KyAgICAKKyAgICBhcHBlbmQoT3JpZ2luKGRhdGFiYXNlLCBjb2RlQmxvY2ssIHN0YWNrWzBdLmJ5
dGVjb2RlSW5kZXgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc3RhY2su
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXBwZW5kKE9yaWdpbigKKyAgICAgICAgICAgIGRhdGFi
YXNlLmVuc3VyZUJ5dGVjb2Rlc0ZvcihzdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrKCkpLAorICAgICAgICAgICAgc3RhY2tbaV0uYnl0ZWNvZGVJbmRleCkpOworICAg
IH0KK30KKworT3JpZ2luU3RhY2s6On5PcmlnaW5TdGFjaygpIHsgfQorCit2b2lkIE9yaWdpblN0
YWNrOjphcHBlbmQoY29uc3QgT3JpZ2luJiBvcmlnaW4pCit7CisgICAgbV9zdGFjay5hcHBlbmQo
b3JpZ2luKTsKK30KKworYm9vbCBPcmlnaW5TdGFjazo6b3BlcmF0b3I9PShjb25zdCBPcmlnaW5T
dGFjayYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RhY2suc2l6ZSgpICE9IG90aGVyLm1f
c3RhY2suc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9zdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKG1fc3RhY2tbaV0g
IT0gb3RoZXIubV9zdGFja1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2lnbmVkIE9yaWdpblN0YWNrOjpoYXNoKCkg
Y29uc3QKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBtX3N0YWNrLnNpemUoKTsKKyAgICAKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICByZXN1
bHQgKj0gMzsKKyAgICAgICAgcmVzdWx0ICs9IG1fc3RhY2tbaV0uaGFzaCgpOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIE9yaWdpblN0YWNrOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3Rh
Y2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBvdXQucHJpbnQo
IiAtLT4gIik7CisgICAgICAgIG91dC5wcmludChtX3N0YWNrW2ldKTsKKyAgICB9Cit9CisKK0pT
VmFsdWUgT3JpZ2luU3RhY2s6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpT
QXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RhY2suc2l6ZSgpOyArK2kpCisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9zdGFja1tpXS50b0pTKGV4ZWMpKTsKKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UEJQCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9QQlBPcmlnaW5TdGFj
ay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1BCUE9y
aWdpblN0YWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUEJQT3JpZ2luU3RhY2tf
aAorI2RlZmluZSBQQlBPcmlnaW5TdGFja19oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiUEJQT3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDb2RlQmxvY2s7CitzdHJ1Y3QgQ29kZU9yaWdpbjsKKworbmFtZXNwYWNl
IFBCUCB7CisKK2NsYXNzIERhdGFiYXNlOworCitjbGFzcyBPcmlnaW5TdGFjayB7CitwdWJsaWM6
CisgICAgT3JpZ2luU3RhY2soKSB7IH0KKyAgICAKKyAgICBPcmlnaW5TdGFjayhXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUpOworICAgIAorICAgIGV4cGxpY2l0IE9yaWdpblN0YWNrKGNv
bnN0IE9yaWdpbiYpOworICAgIAorICAgIGV4cGxpY2l0IE9yaWdpblN0YWNrKERhdGFiYXNlJiwg
Q29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdpbiYpOworICAgIAorICAgIH5PcmlnaW5TdGFjaygp
OworICAgIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IE9yaWdpbiYpOworICAgIAorICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCk7IH0KKyAgICAKKyAg
ICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5zaXplKCk7IH0KKyAgICBj
b25zdCBPcmlnaW4mIGZyb21Cb3R0b20odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9zdGFj
a1tpXTsgfQorICAgIGNvbnN0IE9yaWdpbiYgZnJvbVRvcCh1bnNpZ25lZCBpKSBjb25zdCB7IHJl
dHVybiBtX3N0YWNrW21fc3RhY2suc2l6ZSgpIC0gaSAtIDFdOyB9CisgICAgCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE9yaWdpblN0YWNrJikgY29uc3Q7CisgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsK
KyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFZlY3RvcjxPcmlnaW4s
IDE+IG1fc3RhY2s7Cit9OworCitpbmxpbmUgYm9vbCBPcmlnaW5TdGFjazo6aXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YWNrLnNpemUoKSA9PSAxICYm
IG1fc3RhY2tbMF0uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKworc3RydWN0IE9yaWdp
blN0YWNrSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgT3JpZ2luU3RhY2sm
IGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IE9yaWdpblN0YWNrJiBhLCBjb25zdCBPcmlnaW5TdGFjayYgYikgeyByZXR1cm4gYSA9PSBiOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0
cnVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBCUAorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQQlA6Ok9yaWdpblN0YWNrPiB7CisgICAgdHlwZWRlZiBK
U0M6OlBCUDo6T3JpZ2luU3RhY2tIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpQ
QlA6Ok9yaWdpblN0YWNrPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlBCUDo6T3JpZ2lu
U3RhY2s+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQQlBPcmlnaW5T
dGFja19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTkg
KzMxLDMwIEBACiAgICAgbWFjcm8oYXJndW1lbnRzKSBcCiAgICAgbWFjcm8oQXJyYXkpIFwKICAg
ICBtYWNybyhiaW5kKSBcCisgICAgbWFjcm8oYnl0ZWNvZGUpIFwKKyAgICBtYWNybyhieXRlY29k
ZUluZGV4KSBcCisgICAgbWFjcm8oYnl0ZWNvZGVzKSBcCisgICAgbWFjcm8oYnl0ZWNvZGVzSUQp
IFwKICAgICBtYWNybyhjYWxsKSBcCiAgICAgbWFjcm8oY2FsbGVlKSBcCiAgICAgbWFjcm8oY2Fs
bGVyKSBcCisgICAgbWFjcm8oY29tcGlsYXRpb25LaW5kKSBcCisgICAgbWFjcm8oY29tcGlsYXRp
b25zKSBcCiAgICAgbWFjcm8oY29tcGlsZSkgXAogICAgIG1hY3JvKGNvbmZpZ3VyYWJsZSkgXAog
ICAgIG1hY3JvKGNvbnN0cnVjdG9yKSBcCisgICAgbWFjcm8oY291bnRlcnMpIFwKKyAgICBtYWNy
byhkZXNjcmlwdGlvbikgXAorICAgIG1hY3JvKGRlc2NyaXB0aW9ucykgXAogICAgIG1hY3JvKGVu
dW1lcmFibGUpIFwKICAgICBtYWNybyhldmFsKSBcCiAgICAgbWFjcm8oZXhlYykgXAorICAgIG1h
Y3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZnJvbUNoYXJDb2RlKSBcCiAgICAgbWFj
cm8oZ2xvYmFsKSBcCiAgICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHkp
IFwKKyAgICBtYWNybyhoYXNoKSBcCiAgICAgbWFjcm8oaWdub3JlQ2FzZSkgXAogICAgIG1hY3Jv
KGluZGV4KSBcCiAgICAgbWFjcm8oaW5wdXQpIFwKQEAgLTU2LDYgKzY3LDcgQEAKICAgICBtYWNy
byhuYW1lKSBcCiAgICAgbWFjcm8obm93KSBcCiAgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFj
cm8ob3JpZ2luKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51
bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMTM2MzE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIGlubGluZSBib29sIHByZXBhcmVGb3JFeGVj
dXRpb24oRXhlY1N0YXQKICAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50
ZXJwcmV0ZXIuCiAgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgaWYgKGV4ZWMt
Pmdsb2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCisgICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRlY29kZXNGb3IoY29k
ZUJsb2NrLmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKQEAgLTU2LDYgKzU4LDggQEAgaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9u
Rm9yRXhlY3V0aW9uKAogICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRl
cnByZXRlci4KICAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChleGVjLT5nbG9i
YWxEYXRhKCksIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwor
ICAgICAgICBpZiAoZXhlYy0+Z2xvYmFsRGF0YSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKKyAg
ICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmVuc3Vy
ZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2suZ2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsMTAgKzI0NSwx
NiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaGVhcC5u
b3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKICAgICAKICAgICBMTEludDo6RGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMoKnRoaXMpOworICAgIAorICAgIGlmIChPcHRpb25zOjplbmFibGVQQlAoKSkKKyAg
ICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gYWRvcHRQdHIobmV3IFBCUDo6RGF0YWJhc2Uo
KnRoaXMpKTsKIH0KIAogSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKIHsKKyAgICAvLyBD
bGVhciB0aGlzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IG5vYm9keSB0cmllcyB0byByZW1vdmUgdGhl
bXNlbHZlcyBmcm9tIGl0LgorICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlci5jbGVhcigpOworICAg
IAogICAgIEFTU0VSVCghbV9hcGlMb2NrLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwog
ICAgIGhlYXAuZGlkU3RhcnRWTVNodXRkb3duKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgorI2luY2x1ZGUgIlBCUERhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIK
ICNpbmNsdWRlICJTdHJvbmcuaCIKQEAgLTM1Miw2ICszNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgZG91YmxlIGNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKIAogICAgICAgICBQcm9maWxl
ciogbV9lbmFibGVkUHJvZmlsZXI7CisgICAgICAgIE93blB0cjxQQlA6OkRhdGFiYXNlPiBtX3Bl
ckJ5dGVjb2RlUHJvZmlsZXI7CiAgICAgICAgIFJlZ0V4cENhY2hlKiBtX3JlZ0V4cENhY2hlOwog
ICAgICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFsbG9jYXRvcjsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTM2MzE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHYoYm9vbCwgc2hvd0RGR0Rp
c2Fzc2VtYmx5LCBmYWxzZSkgXAogICAgIHYoYm9vbCwgc2hvd0FsbERGR05vZGVzLCBmYWxzZSkg
XAogICAgIFwKKyAgICB2KGJvb2wsIGVuYWJsZVBCUCwgZmFsc2UpIFwKKyAgICBcCiAgICAgdih1
bnNpZ25lZCwgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDEw
MDAwKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxp
bmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxODApIFwKSW5kZXg6IFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzYz
MTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3
IEBACisyMDEyLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNDIHNob3VsZCBiZSBhYmxlIHRvIHJlcG9ydCBwcm9maWxpbmcgZGF0YSBhc3NvY2lhdGVk
IHdpdGggdGhlIElSIGR1bXBzIGFuZCBkaXNhc3NlbWJseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBzb21lIG1pbm9yIGNoYW5nZXMgdG8gc3Vw
cG9ydCB0aGUgUEJQIChQZXIgQnl0ZWNvZGUgUHJvZmlsZXIpLiBGaWxlT3V0cHV0U3RyZWFtCisg
ICAgICAgIG5vdyBoYXMgYW4gb3BlbigpIG1ldGhvZCwgYW5kIERhdGFMb2cgdXNlcyBpdC4gU3Ry
aW5nUHJpbnRTdHJlYW0gaGFzIGEgcmVzZXQoKSBtZXRob2QsCisgICAgICAgIHdoaWNoIGFsbG93
cyB5b3UgdG8gcmV1c2UgdGhlIHNhbWUgU3RyaW5nUHJpbnRTdHJlYW0gZm9yIGNyZWF0aW5nIG11
bHRpcGxlIHN0cmluZ3MuCisgICAgICAgIFNlZ21lbnRlZFZlY3RvciBub3cgaGFzIGEgY29uc3Qg
b3BlcmF0b3JbXS4gQW5kLCBXVEZTdHJpbmcgbm93IGNhbiBkbyBmcm9tVVRGOCgpIG9uCisgICAg
ICAgIGEgQ1N0cmluZyBkaXJlY3RseS4KKworICAgICAgICAqIHd0Zi9EYXRhTG9nLmNwcDoKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKToKKyAgICAgICAgKiB3dGYvRmlsZVBy
aW50U3RyZWFtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjpvcGVuKToKKyAg
ICAgICAgKFdURik6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5oOgorICAgICAgICAq
IHd0Zi9TZWdtZW50ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9yOjph
dCk6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRW
ZWN0b3I6Om9wZXJhdG9yW10pOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjpyZXNldCk6CisgICAgICAgIChXVEYp
OgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oOgorICAgICAgICAoU3RyaW5nUHJp
bnRTdHJlYW0pOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChX
VEY6OlN0cmluZzo6ZnJvbVVURjgpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmluZyk6CisKIDIwMTItMTEtMzAgIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPiwgUGllcnJlIFJvc3NpICA8cGllcnJl
LnJvc3NpQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFNlcGFyYXRlIFF0IFdlYktpdCBpbnRv
IFF0IFdlYktpdCBhbmQgUXQgV2ViS2l0IFdpZGdldHMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Rh
dGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCShyZXZp
c2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsMTAgKzczLDggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCkK
ICNlbmRpZgogCiAgICAgaWYgKGZpbGVuYW1lKSB7Ci0gICAgICAgIEZJTEUqIHJhd0ZpbGUgPSBm
b3BlbihhY3R1YWxGaWxlbmFtZSwgInciKTsKLSAgICAgICAgaWYgKHJhd0ZpbGUpCi0gICAgICAg
ICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShyYXdGaWxlKTsKLSAgICAgICAgZWxzZQor
ICAgICAgICBmaWxlID0gRmlsZVByaW50U3RyZWFtOjpvcGVuKGFjdHVhbEZpbGVuYW1lLCAidyIp
LmxlYWtQdHIoKTsKKyAgICAgICAgaWYgKCFmaWxlKQogICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSAlcyBmb3Igd3JpdGluZy5cbiIs
IGFjdHVhbEZpbGVuYW1lKTsKICAgICB9CiAjZW5kaWYgLy8gREFUQV9MT0dfVE9fRklMRQpJbmRl
eDogU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSwxNSBAQCBGaWxlUHJpbnRTdHJlYW06On5GaWxlUHJpbnRTdHJlYW0oKQogICAgIGZjbG9zZSht
X2ZpbGUpOwogfQogCitQYXNzT3duUHRyPEZpbGVQcmludFN0cmVhbT4gRmlsZVByaW50U3RyZWFt
OjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb25zdCBjaGFyKiBtb2RlKQoreworICAgIEZJ
TEUqIGZpbGUgPSBmb3BlbihmaWxlbmFtZSwgbW9kZSk7CisgICAgaWYgKCFmaWxlKQorICAgICAg
ICByZXR1cm4gUGFzc093blB0cjxGaWxlUHJpbnRTdHJlYW0+KCk7CisgICAgCisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBGaWxlUHJpbnRTdHJlYW0oZmlsZSkpOworfQorCiB2b2lkIEZpbGVQcmlu
dFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKIHsK
ICAgICB2ZnByaW50ZihtX2ZpbGUsIGZvcm1hdCwgYXJnTGlzdCk7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxl
UHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMTM2MzE4KQorKysgU291cmNlL1dURi93dGYvRmlsZVBy
aW50U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRmls
ZVByaW50U3RyZWFtX2gKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdURiB7
CkBAIC00MSw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBGaWxlUHJpbnRTdHJlYW0oRklMRSosIEFk
b3B0aW9uTW9kZSA9IEFkb3B0KTsKICAgICB2aXJ0dWFsIH5GaWxlUHJpbnRTdHJlYW0oKTsKICAg
ICAKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWxlUHJpbnRTdHJlYW0+IG9wZW4oY29uc3QgY2hh
ciogZmlsZW5hbWUsIGNvbnN0IGNoYXIqIG1vZGUpOworICAgIAogICAgIEZJTEUqIGZpbGUoKSB7
IHJldHVybiBtX2ZpbGU7IH0KICAgICAKICAgICB2b2lkIHZwcmludGYoY29uc3QgY2hhciogZm9y
bWF0LCB2YV9saXN0KSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAwKTsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9TZWdt
ZW50ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDExICsxMjgsMjEgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gc2VnbWVudEZvcihpbmRleCktPmF0KHN1YnNj
cmlwdEZvcihpbmRleCkpOwogICAgICAgICB9CiAKKyAgICAgICAgY29uc3QgVCYgYXQoc2l6ZV90
IGluZGV4KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxT
ZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5Pio+KHRoaXMpLT5h
dChpbmRleCk7CisgICAgICAgIH0KKwogICAgICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRl
eCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKICAgICAgICAgfQog
CisgICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgICAgICB9CisKICAgICAgICAg
VCYgbGFzdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhdChzaXplKCkgLSAxKTsK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAJKHJldmlzaW9uIDEzNjMxOCkK
KysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTIsNiArOTIsMTIgQEAgQ1N0cmluZyBTdHJpbmdQcmludFN0cmVhbTo6dG9DU3RyaW5nKCkK
ICAgICByZXR1cm4gQ1N0cmluZyhtX2J1ZmZlciwgbV9uZXh0KTsKIH0KIAordm9pZCBTdHJpbmdQ
cmludFN0cmVhbTo6cmVzZXQoKQoreworICAgIG1fbmV4dCA9IDA7CisgICAgbV9idWZmZXJbMF0g
PSAwOworfQorCiB2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjppbmNyZWFzZVNpemUoc2l6ZV90IG5l
d1NpemUpCiB7CiAgICAgQVNTRVJUKG5ld1NpemUgPiBtX3NpemUpOwpJbmRleDogU291cmNlL1dU
Ri93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9T
dHJpbmdQcmludFN0cmVhbS5oCShyZXZpc2lvbiAxMzYzMTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9T
dHJpbmdQcmludFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3Qp
IFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApOwogICAgIAogICAgIENTdHJpbmcgdG9DU3RyaW5n
KCk7CisgICAgdm9pZCByZXNldCgpOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGluY3JlYXNl
U2l6ZShzaXplX3QpOwpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkocmV2aXNpb24g
MTM2MzE4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MTIsNiArOTEyLDExIEBAIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4KGNvbnN0IExD
aGFyKiBzdHIKICAgICByZXR1cm4gZnJvbVVURjgoc3RyaW5nLCBzdHJsZW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nKSkpOwogfQogCitTdHJpbmcgU3RyaW5nOjpmcm9tVVRG
OChjb25zdCBDU3RyaW5nJiBzKQoreworICAgIHJldHVybiBmcm9tVVRGOChzLmRhdGEoKSk7Cit9
CisKIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IExDaGFy
KiBzdHJpbmcsIHNpemVfdCBzaXplKQogewogICAgIFN0cmluZyB1dGY4ID0gZnJvbVVURjgoc3Ry
aW5nLCBzaXplKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNpb24gMTM2MzE4
KQorKysgU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQwLDYgKzQ0MCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hhciopOwogICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVU
RjgoY29uc3QgY2hhciogcywgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZnJvbVVURjgocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9OwogICAgIHN0YXRpYyBTdHJp
bmcgZnJvbVVURjgoY29uc3QgY2hhciogcykgeyByZXR1cm4gZnJvbVVURjgocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KHMpKTsgfTsKKyAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNv
bnN0IENTdHJpbmcmKTsKIAogICAgIC8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIHBhc3NlZCBpbiBz
dHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwgYmFjayB0byBMYXRpbi0xIGlmIHRoZSBzdHJp
bmcgaXMgbm90IHZhbGlkIFVURi04LgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
U3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IExDaGFyKiwgc2l6ZV90KTsK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNjM1MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTEyLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBiZSBhYmxlIHRvIHJlcG9ydCBwcm9maWxpbmcgZGF0YSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIElSIGR1bXBzIGFuZCBkaXNhc3NlbWJseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTk5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0b29sIHRoYXQgYWxsb3dz
IHlvdSB0byBncm9rIHRoZSBvdXRwdXQgZnJvbSBKU0MncyBuZXcgUEJQIChQZXIgQnl0ZWNvZGUK
KyAgICAgICAgUHJvZmlsZXIpLiBDdXJyZW50bHksIHRoaXMgc3RpbGwgZ2V0cyBjb25mdXNlZCBh
IGJpdCBhYm91dCB0aGUgZXhlY3V0aW9uIGNvdW50cworICAgICAgICBvZiBhIG1ldGhvZCBydW5u
aW5nIHN0YW5kYWxvbmUgdmVyc3VzIGEgbWV0aG9kIHJ1bm5pbmcgaW5saW5lZCwgYnV0IG90aGVy
IHRoYW4KKyAgICAgICAgdGhhdCwgaXQncyBwcmV0dHkgY29vbC4gU2VlIHRoZSBhdHRhY2hlZCAi
c2FtcGxpbmcgcHJvZmlsaW5nIHNlc3Npb24iIGF0dGFjaGVkIHRvCisgICAgICAgIHRoZSBidWcg
dG8gc2VlIGl0IGluIGFjdGlvbi4KKyAgICAgICAgCisgICAgICAgIEFsc28gaGFkIHRvIGZlZWQg
RUZMJ3MgYnVpbGQgc3lzdGVtLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIFNjcmlwdHMvZGlzcGxheS1wYnAtb3V0cHV0OiBBZGRlZC4K
KwogMjAxMi0xMi0wMiAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEdhcmRlbi1vLW1hdGljIHNob3VsZG4ndCBkaWUgd2hlbiBibGFuayBKU09OIHJlc3VsdHMgYXJl
IHJlY2VpdmVkLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTM2MzE4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw3IEBAIFNFVChEdW1wUmVuZGVyVHJlZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVy
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdAogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9sbGludAorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlcgogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9ydW50aW1lCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzCiAgICAgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlCkluZGV4OiBUb29scy9T
Y3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rp
c3BsYXktcGJwLW91dHB1dAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1w
YnAtb3V0cHV0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwMiBAQAorIyEvdXNyL2Jpbi9lbnYg
cnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICdy
dWJ5Z2VtcycKKworcmVxdWlyZSAnanNvbicKK3JlcXVpcmUgJ3JlYWRsaW5lJworCitjbGFzcyBC
eXRlY29kZQorICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2RlSW5kZXgsIDpkZXNjcmlwdGlvbiwg
OnRvcENvdW50cworICAgIAorICAgIGRlZiBpbml0aWFsaXplKGJ5dGVjb2RlSW5kZXgsIGRlc2Ny
aXB0aW9uKQorICAgICAgICBAYnl0ZWNvZGVJbmRleCA9IGJ5dGVjb2RlSW5kZXgKKyAgICAgICAg
QGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgQHRvcENvdW50cyA9IFtdCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGFkZFRvcENvdW50KGNvdW50KQorICAgICAgICBAdG9wQ291bnRz
IDw8IGNvdW50CisgICAgZW5kCisgICAgCisgICAgZGVmIHRvdGFsRXhlY3V0aW9uQ291bnQKKyAg
ICAgICAgc3VtID0gMAorICAgICAgICBAdG9wQ291bnRzLmVhY2ggeworICAgICAgICAgICAgfCB2
YWx1ZSB8CisgICAgICAgICAgICBzdW0gKz0gdmFsdWUuY291bnQKKyAgICAgICAgfQorICAgICAg
ICBzdW0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAg
ICAgICBzdW0gPSAwCisgICAgICAgIEB0b3BDb3VudHMuZWFjaCB7CisgICAgICAgICAgICB8IHZh
bHVlIHwKKyAgICAgICAgICAgIGlmIHZhbHVlLmVuZ2luZSA9PSBlbmdpbmUKKyAgICAgICAgICAg
ICAgICBzdW0gKz0gdmFsdWUuY291bnQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAg
ICAgIHN1bQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJ5dGVjb2RlcworICAgIGF0dHJfYWNjZXNz
b3IgOmhhc2gKKyAgICBpbmNsdWRlIEVudW1lcmFibGUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6
ZShqc29uKQorICAgICAgICBAaGFzaCA9IGpzb25bImhhc2giXS50b19zCisgICAgICAgIEBieXRl
Y29kZSA9IHt9CisgICAgICAgIGpzb25bImJ5dGVjb2RlIl0uZWFjaCB7CisgICAgICAgICAgICB8
IHN1Ykpzb24gfAorICAgICAgICAgICAgaW5kZXggPSBzdWJKc29uWyJieXRlY29kZUluZGV4Il0u
dG9faQorICAgICAgICAgICAgQGJ5dGVjb2RlW2luZGV4XSA9IEJ5dGVjb2RlLm5ldyhpbmRleCwg
c3ViSnNvblsiZGVzY3JpcHRpb24iXS50b19zKQorICAgICAgICB9CisgICAgZW5kCisgICAgCisg
ICAgZGVmIGVhY2gKKyAgICAgICAgQGJ5dGVjb2RlLnZhbHVlcy5zb3J0e3xhLCBifCBhLmJ5dGVj
b2RlSW5kZXggPD0+IGIuYnl0ZWNvZGVJbmRleH0uZWFjaCB7CisgICAgICAgICAgICB8IHZhbHVl
IHwKKyAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgIH0KKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgYnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgQGJ5dGVjb2RlW2J5dGVjb2Rl
SW5kZXhdCisgICAgZW5kCisgICAgCisgICAgZGVmIHRvdGFsTWF4RXhlY3V0aW9uQ291bnQKKyAg
ICAgICAgbWF4ID0gMAorICAgICAgICBAYnl0ZWNvZGUuZWFjaF92YWx1ZSB7CisgICAgICAgICAg
ICB8IGJ5dGVjb2RlIHwKKyAgICAgICAgICAgIG1heCA9IFttYXgsIGJ5dGVjb2RlLnRvdGFsRXhl
Y3V0aW9uQ291bnRdLm1heAorICAgICAgICB9CisgICAgICAgIG1heAorICAgIGVuZAorICAgIAor
ICAgIGRlZiBtYXhFeGVjdXRpb25Db3VudChlbmdpbmUpCisgICAgICAgIG1heCA9IDAKKyAgICAg
ICAgQGJ5dGVjb2RlLmVhY2hfdmFsdWUgeworICAgICAgICAgICAgfCBieXRlY29kZSB8CisgICAg
ICAgICAgICBtYXggPSBbbWF4LCBieXRlY29kZS5leGVjdXRpb25Db3VudChlbmdpbmUpXS5tYXgK
KyAgICAgICAgfQorICAgICAgICBtYXgKKyAgICBlbmQKK2VuZAorCitkZWYgb3JpZ2luU3RhY2tG
cm9tSlNPTihqc29uKQorICAgIGpzb24ubWFwIHsKKyAgICAgICAgfCBzdWJKc29uIHwKKyAgICAg
ICAgJGJ5dGVjb2Rlc1tzdWJKc29uWyJieXRlY29kZXNJRCJdLnRvX2ldLmJ5dGVjb2RlKHN1Ykpz
b25bImJ5dGVjb2RlSW5kZXgiXS50b19pKQorICAgIH0KK2VuZAorCitjbGFzcyBDb21waWxlZEJ5
dGVjb2RlCisgICAgYXR0cl9hY2Nlc3NvciA6b3JpZ2luLCA6ZGVzY3JpcHRpb24KKyAgICAKKyAg
ICBkZWYgaW5pdGlhbGl6ZShqc29uKQorICAgICAgICBAb3JpZ2luID0gb3JpZ2luU3RhY2tGcm9t
SlNPTihqc29uWyJvcmlnaW4iXSkKKyAgICAgICAgQGRlc2NyaXB0aW9uID0ganNvblsiZGVzY3Jp
cHRpb24iXS50b19zCisgICAgZW5kCitlbmQKKworY2xhc3MgRXhlY3V0aW9uQ291bnRlcgorICAg
IGF0dHJfYWNjZXNzb3IgOm9yaWdpbiwgOmVuZ2luZSwgOmNvdW50CisgICAgCisgICAgZGVmIGlu
aXRpYWxpemUob3JpZ2luLCBlbmdpbmUsIGNvdW50KQorICAgICAgICBAb3JpZ2luID0gb3JpZ2lu
CisgICAgICAgIEBlbmdpbmUgPSBlbmdpbmUKKyAgICAgICAgQGNvdW50ID0gY291bnQKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBDb21waWxhdGlvbgorICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2Rl
LCA6ZW5naW5lLCA6ZGVzY3JpcHRpb25zLCA6Y291bnRlcnMKKyAgICAKKyAgICBkZWYgaW5pdGlh
bGl6ZShqc29uKQorICAgICAgICBAYnl0ZWNvZGUgPSAkYnl0ZWNvZGVzW2pzb25bImJ5dGVjb2Rl
c0lEIl0udG9faV0KKyAgICAgICAgQGVuZ2luZSA9IGpzb25bImNvbXBpbGF0aW9uS2luZCJdCisg
ICAgICAgIEBkZXNjcmlwdGlvbnMgPSBqc29uWyJkZXNjcmlwdGlvbnMiXS5tYXAgeworICAgICAg
ICAgICAgfCBzdWJKc29uIHwKKyAgICAgICAgICAgIENvbXBpbGVkQnl0ZWNvZGUubmV3KHN1Ykpz
b24pCisgICAgICAgIH0KKyAgICAgICAgQGNvdW50ZXJzID0ge30KKyAgICAgICAganNvblsiY291
bnRlcnMiXS5lYWNoIHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8CisgICAgICAgICAgICBvcmln
aW4gPSBvcmlnaW5TdGFja0Zyb21KU09OKHN1Ykpzb25bIm9yaWdpbiJdKQorICAgICAgICAgICAg
Y291bnRlciA9IEV4ZWN1dGlvbkNvdW50ZXIubmV3KG9yaWdpbiwgQGVuZ2luZSwgc3ViSnNvblsi
ZXhlY3V0aW9uQ291bnQiXS50b19pKQorICAgICAgICAgICAgQGNvdW50ZXJzW29yaWdpbl0gPSBj
b3VudGVyCisgICAgICAgICAgICBvcmlnaW5bLTFdLmFkZFRvcENvdW50KGNvdW50ZXIpCisgICAg
ICAgIH0KKyAgICBlbmQKK2VuZAorCiskanNvbiA9IEpTT046OnBhcnNlKElPOjpyZWFkKEFSR1Zb
MF0pKQorJGJ5dGVjb2RlcyA9ICRqc29uWyJieXRlY29kZXMiXS5tYXAgeworICAgIHwgc3ViSnNv
biB8CisgICAgQnl0ZWNvZGVzLm5ldyhzdWJKc29uKQorfQorJGNvbXBpbGF0aW9ucyA9ICRqc29u
WyJjb21waWxhdGlvbnMiXS5tYXAgeworICAgIHwgc3ViSnNvbiB8CisgICAgQ29tcGlsYXRpb24u
bmV3KHN1Ykpzb24pCit9CiskZW5naW5lcyA9IFsiQmFzZWxpbmUiLCAiREZHIl0KKworZGVmIGxw
YWQoc3RyLGNoYXJzKQorICBpZiBzdHIubGVuZ3RoPmNoYXJzCisgICAgc3RyCisgIGVsc2UKKyAg
ICAiJSN7Y2hhcnN9cyIlKHN0cikKKyAgZW5kCitlbmQKKworZGVmIHJwYWQoc3RyLCBjaGFycykK
KyAgICB3aGlsZSBzdHIubGVuZ3RoIDwgY2hhcnMKKyAgICAgICAgc3RyICs9ICIgIgorICAgIGVu
ZAorICAgIHN0cgorZW5kCisKK2RlZiBjZW50ZXIoc3RyLCBjaGFycykKKyAgICB3aGlsZSBzdHIu
bGVuZ3RoIDwgY2hhcnMKKyAgICAgICAgc3RyICs9ICIgIgorICAgICAgICBpZiBzdHIubGVuZ3Ro
IDwgY2hhcnMKKyAgICAgICAgICAgIHN0ciA9ICIgIiArIHN0cgorICAgICAgICBlbmQKKyAgICBl
bmQKKyAgICBzdHIKK2VuZAorCitkZWYgbWF5QmVIYXNoKGhhc2gpCisgICAgaGFzaCA9fiAvXiMv
IG9yIGhhc2guc2l6ZSA9PSA2CitlbmQKKworZGVmIGdldEhhc2goaGFzaCkKKyAgICBpZiBoYXNo
ID1+IC9eIy8KKyAgICAgICAgJH4ucG9zdF9tYXRjaAorICAgIGVsc2UKKyAgICAgICAgaGFzaAor
ICAgIGVuZAorZW5kCisKK21vZHVsZSBDb21tYW5kcworICAgIGRlZiBzZWxmLkNNRF9oZWxwCisg
ICAgICAgIHB1dHMgInN1bW1hcnkgICAgIFByaW50IGEgc3VtbWFyeSBvZiBjb2RlIGJsb2NrIGV4
ZWN1dGlvbiByYXRlcy4iCisgICAgICAgIHB1dHMgImRpc3BsYXkgICAgIERpc3BsYXkgZGV0YWls
cyBmb3IgYSBjb2RlIGJsb2NrLiIKKyAgICAgICAgcHV0cyAiaGVscCAgICAgICAgUHJpbnQgdGhp
cyBtZXNzYWdlLiIKKyAgICAgICAgcHV0cyAicXVpdCAgICAgICAgUXVpdC4iCisgICAgZW5kCisg
ICAgCisgICAgZGVmIHNlbGYuQ01EX3F1aXQKKyAgICAgICAgZXhpdCAwCisgICAgZW5kCisgICAg
CisgICAgZGVmIHNlbGYuQ01EX3N1bW1hcnkKKyAgICAgICAgaGFzaENvbHMgPSAxNAorICAgICAg
ICBjb3VudENvbHMgPSAxMCAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgCisgICAgICAgIHB1dHMo
cnBhZCgiQ29kZUJsb2NrIiwgaGFzaENvbHMpICsgIiAiICsgcnBhZCgkZW5naW5lcy5qb2luKCIv
IikgKyAiIENvdW50cyIsIGNvdW50Q29scykpCisgICAgICAgICRieXRlY29kZXMuc29ydCB7Cisg
ICAgICAgICAgICB8IGEsIGIgfAorICAgICAgICAgICAgYi50b3RhbE1heEV4ZWN1dGlvbkNvdW50
IDw9PiBhLnRvdGFsTWF4RXhlY3V0aW9uQ291bnQKKyAgICAgICAgfS5lYWNoIHsKKyAgICAgICAg
ICAgIHwgYnl0ZWNvZGUgfAorICAgICAgICAgICAgcHV0cyhjZW50ZXIoIiMiICsgYnl0ZWNvZGUu
aGFzaCwgaGFzaENvbHMpICsgIiAiICsKKyAgICAgICAgICAgICAgICAgY2VudGVyKCRlbmdpbmVz
Lm1hcCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdpbmUgfAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlLm1heEV4ZWN1dGlvbkNvdW50KGVuZ2luZSkudG9f
cworICAgICAgICAgICAgICAgICAgICAgICAgfS5qb2luKCIvIiksIGNvdW50Q29scykpCisgICAg
ICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5DTURfZGlzcGxheSgqYXJncykKKyAg
ICAgICAgY2FzZSBhcmdzLmxlbmd0aAorICAgICAgICB3aGVuIDEKKyAgICAgICAgICAgIGhhc2gg
PSBhcmdzWzBdCisgICAgICAgICAgICBlbmdpbmUgPSAiQmFzZWxpbmUiCisgICAgICAgICAgICAk
Y29tcGlsYXRpb25zLmVhY2ggeworICAgICAgICAgICAgICAgIHwgY29tcGlsYXRpb24gfAorICAg
ICAgICAgICAgICAgIG5leHQgaWYgY29tcGlsYXRpb24uYnl0ZWNvZGUuaGFzaCAhPSBoYXNoCisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgY29tcGlsYXRpb24uZW5naW5lID09
ICJERkciCisgICAgICAgICAgICAgICAgICAgIGVuZ2luZSA9ICJERkciCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAg
IHdoZW4gMgorICAgICAgICAgICAgaWYgbWF5QmVIYXNoKGFyZ3NbMF0pCisgICAgICAgICAgICAg
ICAgaGFzaCA9IGFyZ3NbMF0KKyAgICAgICAgICAgICAgICBlbmdpbmUgPSBhcmdzWzFdCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5naW5lID0gYXJnc1swXQorICAgICAgICAg
ICAgICAgIGhhc2ggPSBhcmdzWzFdCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcHV0cyAiVXNhZ2U6IHN1bW1hcnkgPGNvZGUgYmxvY2sgaGFzaD4gPGVuZ2luZT4i
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBjb3Vu
dENvbHMgPSAxMCAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgJGNvbXBpbGF0aW9ucy5lYWNoIHsK
KyAgICAgICAgICAgIHwgY29tcGlsYXRpb24gfAorICAgICAgICAgICAgbmV4dCBpZiBjb21waWxh
dGlvbi5ieXRlY29kZS5oYXNoICE9IGhhc2gKKyAgICAgICAgICAgIG5leHQgaWYgY29tcGlsYXRp
b24uZW5naW5lICE9IGVuZ2luZQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdXRzKHJwYWQo
JGVuZ2luZXMuam9pbigiLyIpICsgIiBDb3VudHMiLCBjb3VudENvbHMpICsgIiBEaXNhc3NlbWJs
eSBmb3IgI3toYXNofSBpbiAje2VuZ2luZX0iKQorICAgICAgICAgICAgY29tcGlsYXRpb24uZGVz
Y3JpcHRpb25zLmVhY2ggeworICAgICAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gfAorICAgICAg
ICAgICAgICAgIG5leHQgaWYgZGVzY3JpcHRpb24uZGVzY3JpcHRpb24gPX4gL0NvdW50RXhlY3V0
aW9uXCgvCisgICAgICAgICAgICAgICAgaWYgZGVzY3JpcHRpb24ub3JpZ2luLmVtcHR5PworICAg
ICAgICAgICAgICAgICAgICBjb3VudHNTdHJpbmcgPSAiIgorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgY291bnRzU3RyaW5nID0gJGVuZ2luZXMubWFwIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHwgZW5naW5lIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uLm9yaWdpblstMV0uZXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAgICAgICAgICAg
ICAgICAgICB9LmpvaW4oIi8iKQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmVhY2ggeworICAgICAgICAgICAg
ICAgICAgICB8IGxpbmUgfAorICAgICAgICAgICAgICAgICAgICBwdXRzKGNlbnRlcihjb3VudHNT
dHJpbmcsIGNvdW50Q29scykgKyAiICIgKyBsaW5lLmNob21wKQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBleGVjdXRlQ29t
bWFuZChjb21tYW5kLCBhcmdzKQorICAgIGlmIENvbW1hbmRzLm1ldGhvZHMuZmluZF9pbmRleCgi
Q01EXyN7Y29tbWFuZH0iKQorICAgICAgICBDb21tYW5kcy5zZW5kKCJDTURfI3tjb21tYW5kfSIs
ICphcmdzKQorICAgIGVsc2UKKyAgICAgICAgcHV0cyAiSW52YWxpZCBjb21tYW5kOiAje2NvbW1h
bmR9IgorICAgIGVuZAorZW5kCisKK2V4ZWN1dGVDb21tYW5kKCJzdW1tYXJ5IiwgW10pCisKK3do
aWxlIGNvbW1hbmRMaW5lID0gUmVhZGxpbmUucmVhZGxpbmUoIj4gIiwgdHJ1ZSkKKyAgICBjb21t
YW5kQXJyYXkgPSBjb21tYW5kTGluZS5zcGxpdAorICAgIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmRB
cnJheVswXSwgY29tbWFuZEFycmF5WzEuLi0xXSkKK2VuZAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9TY3JpcHRzL2Rpc3BsYXktcGJwLW91dHB1dApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZXhlY3V0YWJsZQogICArICoKCg==
</data>
<flag name="review"
          id="193172"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>